Exemple #1
0
def get_transitions(seq, alphabet, markov_order):
    """Computes transitions matrix"""
    transitions = []
    motifs = list(permutations(alphabet, markov_order+1))
    counts = dict(zip(motifs, [0]*len(motifs)))
    for i in range(len(seq)-markov_order):
        s = seq[i:i+markov_order+1]
        if all([i in alphabet for i in s]):
            counts[s] += 1
    for motif in motifs:
        transitions.append(counts[motif])
    transitions = list(utils.grouper(len(alphabet), transitions))
    sums = list(map(sum, transitions))
    for i in range(len(transitions)):
        if sums[i] != 0:
            transitions[i] = [transitions[i][j] / float(sums[i]) for j in range(len(transitions[i]))]
        else:
            transitions[i] = [0.] * len(transitions[i])
    return transitions
Exemple #2
0
 def test_grouper(self):
   self.assertEqual(
     list(utils.grouper(3, 'ABCDEFG', 'x')),
     [('A', 'B', 'C'), ('D', 'E', 'F'), ('G', 'x', 'x')]
   )