def test_insertion_and_deletion(self): c = [(CIGAR.EQ, 10), (CIGAR.I, 2), (CIGAR.EQ, 5), (CIGAR.D, 2), (CIGAR.EQ, 10)] exp = [(CIGAR.EQ, 10), (CIGAR.I, 7), (CIGAR.D, 7), (CIGAR.EQ, 10)] self.assertEqual(c, _cigar.merge_internal_events(c, 5)) self.assertEqual(exp, _cigar.merge_internal_events(c, 6))
def test_no_internal_events(self): c = [(CIGAR.EQ, 10), (CIGAR.EQ, 10)] exp = [(CIGAR.EQ, 20)] self.assertEqual(exp, _cigar.merge_internal_events(c, 10)) c = [(CIGAR.X, 10), (CIGAR.EQ, 10)] self.assertEqual(c, _cigar.merge_internal_events(c, 10))
def test_no_internal_events(self): c = [(CIGAR.EQ, 10), (CIGAR.EQ, 10)] exp = [(CIGAR.EQ, 20)] assert _cigar.merge_internal_events(c, 10) == exp c = [(CIGAR.X, 10), (CIGAR.EQ, 10)] assert _cigar.merge_internal_events(c, 10) == c
def test_small_exact_match(self): cigar = convert_string_to_cigar( '283M17506D5M21275D596M17506D5M21275D313M') # [(0, 283), (2, 17506), (0, 5), (2, 21275), (0, 596), (2, 17506), (0, 5), (2, 21275), (0, 313)] new_cigar = merge_internal_events(cigar, 20, 15) exp = [(CIGAR.M, 283), (CIGAR.I, 5), (CIGAR.D, 17506 + 21275 + 5), (CIGAR.M, 596), (CIGAR.I, 5), (CIGAR.D, 17506 + 21275 + 5), (CIGAR.M, 313)] self.assertEqual(exp, new_cigar)
def test_long_suffix_and_prefix(self): c = [(CIGAR.S, 94), (CIGAR.EQ, 1), (CIGAR.X, 1), (CIGAR.EQ, 10), (CIGAR.X, 1), (CIGAR.EQ, 4), (CIGAR.I, 2), (CIGAR.EQ, 40), (CIGAR.I, 1), (CIGAR.D, 714), (CIGAR.EQ, 7), (CIGAR.I, 38), (CIGAR.EQ, 1), (CIGAR.X, 1), (CIGAR.EQ, 17), (CIGAR.D, 1), (CIGAR.EQ, 1), (CIGAR.X, 1), (CIGAR.EQ, 26), (CIGAR.D, 17), (CIGAR.EQ, 10), (CIGAR.S, 4)] exp = [(CIGAR.S, 94), (CIGAR.EQ, 1), (CIGAR.X, 1), (CIGAR.EQ, 10), (CIGAR.X, 1), (CIGAR.EQ, 4), (CIGAR.I, 2), (CIGAR.EQ, 40), (CIGAR.I, 1 + 7 + 38 + 1 + 1 + 17 + 1 + 1), (CIGAR.D, 714 + 7 + 1 + 1 + 17 + 1 + 1 + 1), (CIGAR.EQ, 26), (CIGAR.D, 17), (CIGAR.EQ, 10), (CIGAR.S, 4)] actual = _cigar.merge_internal_events(c, 20, 15) print(c) print(actual) self.assertEqual(exp, actual)
def test_single_internal_event(self): c = [(CIGAR.EQ, 10), (CIGAR.X, 5), (CIGAR.EQ, 10)] self.assertEqual(c, _cigar.merge_internal_events(c, 10))
def test_mismatch_only(self): exp = _cigar.convert_string_to_cigar('39=1X16=1X71=22S') assert _cigar.merge_internal_events(exp, 20, 15) == exp
def test_single_internal_event(self): c = [(CIGAR.EQ, 10), (CIGAR.X, 5), (CIGAR.EQ, 10)] assert _cigar.merge_internal_events(c, 10) == c
def test_insertion_and_deletion(self): c = [(CIGAR.EQ, 10), (CIGAR.I, 2), (CIGAR.EQ, 5), (CIGAR.D, 2), (CIGAR.EQ, 10)] exp = [(CIGAR.EQ, 10), (CIGAR.I, 7), (CIGAR.D, 7), (CIGAR.EQ, 10)] assert _cigar.merge_internal_events(c, 5) == c assert _cigar.merge_internal_events(c, 6) == exp
def test_mismatch_and_insertion(self): c = [(CIGAR.EQ, 10), (CIGAR.X, 2), (CIGAR.EQ, 5), (CIGAR.I, 2), (CIGAR.EQ, 10)] exp = [(CIGAR.EQ, 10), (CIGAR.I, 9), (CIGAR.D, 7), (CIGAR.EQ, 10)] assert _cigar.merge_internal_events(c, 5) == c assert _cigar.merge_internal_events(c, 6) == exp