Skip to content

Commit 9397b29

Browse files
committed
Contig stitcher: remove shortcut handling of rc alignments
1 parent 58aa1f9 commit 9397b29

File tree

4 files changed

+36
-125
lines changed

4 files changed

+36
-125
lines changed

micall/core/contig_stitcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ def stitch_consensus(contigs: Iterable[GenotypedContig]) -> Iterable[GenotypedCo
685685
consensus_parts: Dict[GroupRef, List[AlignedContig]] = defaultdict(list)
686686

687687
for contig in contigs:
688-
if isinstance(contig, AlignedContig) and contig.strand == "forward":
688+
if isinstance(contig, AlignedContig):
689689
consensus_parts[contig.group_ref].append(contig)
690690
else:
691691
yield contig

micall/core/plot_contigs.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,8 @@ def record_rstrip(result: AlignedContig, original: AlignedContig):
625625
elif isinstance(event, events.Stitch):
626626
record_contig(event.result, [event.left, event.right])
627627
record_alive(event.result)
628+
elif isinstance(event, events.NoOverlap):
629+
record_alive(event.contig)
628630
elif isinstance(event, events.Cut):
629631
record_contig(event.left, [event.original])
630632
record_contig(event.right, [event.original])
@@ -634,7 +636,7 @@ def record_rstrip(result: AlignedContig, original: AlignedContig):
634636
if event.contigs:
635637
combine_left_edge[event.result.name] = event.contigs[0].name
636638
combine_right_edge[event.result.name] = event.contigs[-1].name
637-
elif isinstance(event, (events.IgnoreGap, events.NoOverlap, events.InitialHit)):
639+
elif isinstance(event, (events.IgnoreGap, events.InitialHit)):
638640
pass
639641
else:
640642
x: NoReturn = event

micall/tests/data/stitcher_plots/test_multiple_reverse_complement_matches_out_of_order.svg

Lines changed: 23 additions & 115 deletions
Loading

micall/tests/test_contig_stitcher.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,8 @@ def test_multiple_reverse_complement_matches_out_of_order(projects, visualizer):
978978

979979
hxb2_name = 'HIV1-B-FR-K03455-seed'
980980
ref = projects.getReference(hxb2_name)
981-
seq = 'A' * 9 + revcomp(ref[2000:2300]) + 'A' * 9 + revcomp(ref[3000:3300]) + 'T' * 9 + revcomp(ref[4000:4300]) + 'G' * 27
981+
ref_part = 'T' * 24 + ref[2000:2600] + 'A' * 9 + ref[3000:3600] + 'T' * 9 + ref[4000:4600] + 'G' * 27
982+
seq = revcomp(ref_part)
982983

983984
contigs = [
984985
GenotypedContig(name='a',
@@ -991,13 +992,13 @@ def test_multiple_reverse_complement_matches_out_of_order(projects, visualizer):
991992
]
992993

993994
results = list(stitch_consensus(contigs))
994-
assert len(results) == 3
995-
996-
# Note how parts are stripped because aligned out of order
997-
assert results[0].seq == ref[2000:2300]
998-
assert results[1].seq == ref[3000:3300]
999-
assert results[2].seq == ref[4000:4300]
1000-
995+
assert len(results) == 1
996+
assert len(results[0].seq) == len(ref_part)
997+
assert results[0].seq == ref_part
998+
assert len(results[0].lstrip().seq) == len(ref_part) - 24
999+
assert len(results[0].rstrip().seq) == len(ref_part) - 27
1000+
assert results[0].lstrip().seq == ref_part[24:]
1001+
assert results[0].rstrip().seq == ref_part[:-27]
10011002
assert len(visualizer().elements) > len(contigs)
10021003

10031004

0 commit comments

Comments
 (0)