Skip to content

Commit 58ecdb8

Browse files
committed
Contig stitcher: add few more tests
1 parent cffb352 commit 58ecdb8

File tree

3 files changed

+135
-0
lines changed

3 files changed

+135
-0
lines changed
Lines changed: 50 additions & 0 deletions
Loading
Lines changed: 40 additions & 0 deletions
Loading

micall/tests/test_contig_stitcher.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,7 @@ def test_gap_around_small_insertion(exact_aligner, visualizer):
755755

756756
results = list(stitch_consensus(contigs))
757757
assert len(results) == 1
758+
assert results[0].seq == "P" * 5 + "A" * 10 + "B" * 20 + "C" * 10 + "Z" * 5
758759
assert len(visualizer().elements) > len(contigs)
759760

760761

@@ -782,6 +783,50 @@ def test_gap_around_big_insertion(exact_aligner, visualizer):
782783

783784
results = list(stitch_consensus(contigs))
784785
assert len(results) == 1
786+
assert results[0].seq == "P" * 5 + "A" * 10 + "B" * 20 + "C" * 10 + "Z" * 5
787+
assert len(visualizer().elements) > len(contigs)
788+
789+
790+
def test_stitch_with_insertion(exact_aligner, visualizer):
791+
# Scenario: Contig is aligned with multiple hits, and the borders are correctly handled.
792+
793+
ref_seq='X' * 5 + 'A' * 10 + 'B' * 20 + 'C' * 10 + 'M' * 5
794+
795+
contigs = [
796+
GenotypedContig(name='a',
797+
seq='P' * 5 + 'A' * 10 + 'D' * 6 + 'C' * 10 + 'Z' * 5,
798+
ref_name='testref',
799+
group_ref='testref',
800+
ref_seq=ref_seq,
801+
match_fraction=0.3,
802+
),
803+
]
804+
805+
results = list(stitch_consensus(contigs))
806+
assert len(results) == 1
807+
assert results[0].seq == "PPPPPAAAAAAAAAADDDDDDCCCCCCCCCCZZZZZ"
808+
assert len(visualizer().elements) > len(contigs)
809+
810+
811+
812+
def test_stitch_cross_alignment(exact_aligner, visualizer):
813+
# Scenario: Single contig is cross-aligned.
814+
815+
ref_seq='X' * 5 + 'A' * 10 + 'B' * 20 + 'C' * 10 + 'M' * 5
816+
817+
contigs = [
818+
GenotypedContig(name='a',
819+
seq='P' * 5 + 'C' * 10 + 'D' * 6 + 'A' * 10 + 'Z' * 5,
820+
ref_name='testref',
821+
group_ref='testref',
822+
ref_seq=ref_seq,
823+
match_fraction=0.3,
824+
),
825+
]
826+
827+
results = list(stitch_consensus(contigs))
828+
assert len(results) == 1
829+
assert results[0].seq == "AAAAAAAAAACCCCCCCCCC"
785830
assert len(visualizer().elements) > len(contigs)
786831

787832

0 commit comments

Comments
 (0)