Exemplo n.º 1
0
Arquivo: tools.py Projeto: ajm/seance
    def close_enough_old(self, primer, sequence, errors) :
        err_count = 0

        for i,j in zip(sequence, primer) :
            if not IUPAC.equal(i, j) :
                err_count += 1

        #if len(a) > 10 :
        #    print a, b, err_count

        return err_count <= errors
Exemplo n.º 2
0
Arquivo: tools.py Projeto: ajm/seance
    def close_enough(self, primer, sequence, diff) :
        if diff < 0 :
            return False

        if (len(primer) == 0) or (len(sequence) == 0) :
            return True

        m = IUPAC.equal(sequence[0], primer[0])

        return self.close_enough(primer[1:], sequence[1:], diff if m else diff-1) or \
               self.close_enough(primer[1:], sequence, diff-1) or \
               self.close_enough(primer, sequence[1:], diff-1)
Exemplo n.º 3
0
Arquivo: scores.py Projeto: ajm/seance
    def distance(self, aligned) :
        leng = float(min(len(aligned[0]), len(aligned[1])))

        last_gap = True
        diff = 0

        for c1,c2 in zip(aligned[0], aligned[1]) :
            if (c1 == '-') and (c2 == '-') :
                continue

            gap = '-' in (c1,c2)

            if last_gap and gap :
                continue

            if not IUPAC.equal(c1, c2) :
                diff += 1

            last_gap = gap

        if last_gap :
            diff -= 1

        return (leng - diff) / leng