def test_match_probability(): a = InsertAligner('TTAGACATAT', 'CAGTGGAGTA') k = 3 n = 5 i3 = (120 / (6 * 2)) * (0.25 ** 3) * (0.75 ** 2) i4 = (120 / 24) * (0.25 ** 4) * 0.75 i5 = 0.25 ** 5 assert approx_equal(a.match_probability(k, n), i3 + i4 + i5, 0.0001)
def test_short_adapter_overlap(): a1_seq = 'TTAGACATAT' a2_seq = 'CAGTGGAGTA' seq1 = 'GACAGGCCGTTTGAATGTTGACGGGATGTT' seq2 = 'CATCCCGTCAACATTCAAACGGCCTGTCCA' aligner = InsertAligner(a1_seq, a2_seq) insert_match, match1, match2 = aligner.match_insert(seq1, seq2) assert match1.rstart == 28 assert match1.length == 2 assert match2.rstart == 28 assert match2.length == 2
def test_insert_align(): a1_seq = 'TTAGACATATGG' a2_seq = 'CAGTGGAGTATA' aligner = InsertAligner(a1_seq, a2_seq) r1 = 'AGTCGAGCCCATTGCAGACT' + a1_seq[0:10] r2 = 'AGTCTGCAATGGGCTCGACT' + a2_seq[0:10] insert_match, match1, match2 = aligner.match_insert(r1, r2) assert match1.rstart == 20 assert match1.length == 10 assert match2.rstart == 20 assert match2.length == 10
def __init__( self, adapter1, adapter2, action='trim', mismatch_action=None, symmetric=True, min_insert_overlap=1, **aligner_args): ErrorCorrectorMixin.__init__(self, mismatch_action) self.adapter1 = adapter1 self.adapter2 = adapter2 self.aligner = InsertAligner( adapter1.sequence, adapter2.sequence, min_insert_overlap=min_insert_overlap, **aligner_args) self.min_insert_len = min_insert_overlap self.action = action self.symmetric = symmetric self.with_adapters = [0, 0]