コード例 #1
0
    def __init__(self, switch, bprobs):
        half = len(bprobs) // 2
        self.alloc = [0] * half + [1] * (len(bprobs) - half)

        pprobs = numpy.zeros([max(self.alloc) + 1], Float)
        for (b, p) in zip(self.alloc, bprobs):
            pprobs[b] += p

        self.bprobs = [
            p / pprobs[self.alloc[i]] for (i, p) in enumerate(bprobs)
        ]
        self.transition_matrix = SiteClassTransitionMatrix(switch, pprobs)
コード例 #2
0
def Edge(seq1, seq2, length, bin_data, switch=1.0, bprobs=None):
    # one sequence pair in, potentialy, a tree
    bins = len(bin_data)
    pair = pairwise.Pair(seq1, seq2)
    EP = pair.makeReversibleEmissionProbs([(bin.mprobs, bin.Qd) for bin in bin_data], length)
    tms = [bin.indel.calcTransitionMatrix(length) for bin in bin_data]
    if bins == 1:
        TM = tms[0]
    else:
        assert bprobs
        R = SiteClassTransitionMatrix(switch, bprobs)
        TM = R.nestTransitionMatricies(tms)
    assert min(TM.Matrix.flat) >=0, bin_data
    return EP.makePairHMM(TM)