Source code for src.infer.mean_length
import numpy as np
from ..obj.motif_trajectory import MotifTrajectory
from ..domains.motif_space import _motif_categories
[docs]
def mean_length(
motif_trajectory : MotifTrajectory
):
motif_groups = _motif_categories()
mean_length = np.zeros(motif_trajectory.times.shape)
total_number_of_strands = np.zeros(motif_trajectory.times.shape)
for length in range(1,motif_trajectory.motiflength-1):
strand_category = motif_groups[0].format(length)
number_of_strands = np.sum(
motif_trajectory.motifs.val[strand_category].reshape(motif_trajectory.times.shape+(-1,)),
axis=-1
)
mean_length += length*number_of_strands
total_number_of_strands += number_of_strands
# beginnings_concentration
number_of_strands = np.sum(
motif_trajectory.motifs[motif_groups[-3]].val.reshape(motif_trajectory.times.shape+(-1,)),
axis=-1
)
mean_length += number_of_strands
total_number_of_strands += number_of_strands
# continuations
mean_length += np.sum(
motif_trajectory.motifs[motif_groups[-2]].val.reshape(motif_trajectory.times.shape+(-1,)),
axis=-1
)
# ends_concentration
mean_length += (motif_trajectory.motiflength-2)*np.sum(
motif_trajectory.motifs[motif_groups[-1]].val.reshape(motif_trajectory.times.shape+(-1,)),
axis=-1
)
return mean_length/total_number_of_strands