Skip to content

Commit 19e8143

Browse files
committed
Factor out sort_concordance_indexes into overlap_stitcher
1 parent 3059c0a commit 19e8143

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

micall/tests/test_contig_stitcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
stitch_consensus,
1818
calculate_concordance,
1919
align_all_to_reference,
20-
disambiguate_concordance,
2120
lstrip,
2221
rstrip,
2322
)
23+
from micall.utils.overlap_stitcher import disambiguate_concordance
2424
from micall.core.plot_contigs import plot_stitcher_coverage
2525
from micall.tests.utils import mock_align_consensus, MockAlignment, fixed_random_seed
2626
from micall.tests.test_fasta_to_csv import check_hcv_db, DEFAULT_DATABASE # activates the fixture

micall/utils/overlap_stitcher.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from fractions import Fraction
22
from typing import Sequence, Iterator, Tuple
3+
from operator import itemgetter
34
from gotoh import align_it
45

56

@@ -76,4 +77,9 @@ def disambiguate_concordance(concordance: Sequence[Fraction],
7677
yield x, global_rank
7778

7879

79-
# def get_max_
80+
def sort_concordance_indexes(concordance: Sequence[Fraction]) -> Sequence[int]:
81+
concordance_d = disambiguate_concordance(concordance)
82+
return tuple(i for i, v in sorted(enumerate(concordance_d),
83+
key=itemgetter(1),
84+
reverse=True,
85+
))

micall/utils/referencefull_contig_stitcher.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010
from Bio import Seq
1111
import logging
1212
from fractions import Fraction
13-
from operator import itemgetter
1413
from aligntools import CigarHit, connect_nonoverlapping_cigar_hits, drop_overlapping_cigar_hits, CigarActions
1514

1615
from micall.core.project_config import ProjectConfig
1716
from micall.core.plot_contigs import plot_stitcher_coverage
1817
from micall.utils.contig_stitcher_context import context, StitcherContext
1918
from micall.utils.contig_stitcher_contigs import GenotypedContig, AlignedContig
2019
from micall.utils.consensus_aligner import align_consensus
21-
from micall.utils.overlap_stitcher import align_queries, calculate_concordance, disambiguate_concordance
20+
from micall.utils.overlap_stitcher import align_queries, calculate_concordance, sort_concordance_indexes
2221
import micall.utils.contig_stitcher_events as events
2322

2423

@@ -281,11 +280,7 @@ def find_overlapping_contig(self: AlignedContig, aligned_contigs):
281280
def concordance_to_cut_points(left_overlap, right_overlap, aligned_left, aligned_right, concordance):
282281
""" Determine optimal cut points for stitching based on sequence concordance in the overlap region. """
283282

284-
concordance_d = list(disambiguate_concordance(concordance))
285-
sorted_concordance_indexes = [i for i, v in sorted(enumerate(concordance_d),
286-
key=itemgetter(1),
287-
reverse=True,
288-
)]
283+
sorted_concordance_indexes = sort_concordance_indexes(concordance)
289284

290285
def remove_dashes(s: str):
291286
return s.replace('-', '')

0 commit comments

Comments
 (0)