Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions src/geneml/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ def process_genome(params: Params) -> None:
genome_start_time = time.time()

contigs, genome_size = parse_contigs(params.inpath, params.contigs_filter)
contig_order = list(contigs.keys())

# Disable dynamic scoring if the input sequence is too short
if params.dynamic_scoring and genome_size < 100_000:
Expand All @@ -201,7 +202,7 @@ def process_genome(params: Params) -> None:
reordered_contigs = reorder_contigs(contigs, num_cores)

transcripts_by_contig_id = {}
all_segs = []
segs_by_contig_id = {}
manager = enlighten.get_manager()
progress = manager.counter(desc=f'Processing {params.inpath}', total=genome_size, unit='bp', color='green')
if num_cores == 1:
Expand All @@ -212,7 +213,7 @@ def process_genome(params: Params) -> None:
progress.update(seq_len)
transcripts_by_contig_id[contig_id] = r
if segs:
all_segs.append(segs)
segs_by_contig_id[contig_id] = segs
else:
with ProcessPoolExecutor(max_workers=num_cores) as pool:
future_to_contig = {}
Expand All @@ -227,7 +228,16 @@ def process_genome(params: Params) -> None:
_, r, segs = future.result()
transcripts_by_contig_id[contig_id] = r
if segs:
all_segs.append(segs)
segs_by_contig_id[contig_id] = segs

# Reorder transcripts and segs to match original contig order
transcripts_by_contig_id = {
contig_id: transcripts_by_contig_id[contig_id]
for contig_id in contig_order
if contig_id in transcripts_by_contig_id
}
all_segs = [segs_by_contig_id[contig_id] for contig_id in contig_order
if contig_id in segs_by_contig_id]

logger.info('Finished processing all contigs')
if params.dynamic_scoring:
Expand Down
Loading