From a1477b891391fc2cfcc3d6c1f68aac1a880a09c2 Mon Sep 17 00:00:00 2001 From: Joshua Allen Date: Mon, 6 Apr 2026 17:06:01 -0500 Subject: [PATCH] Fix infinite loop when contig is shorter than read_len When read_len exceeds a contig's length, cover_dataset enters an infinite loop because no fragment ever satisfies the length check on line 78, so read_count never increments. Add an early-return guard in generate_reads that skips the contig with a WARNING log instead of hanging. Co-Authored-By: Claude Sonnet 4.6 --- neat/read_simulator/utils/generate_reads.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/neat/read_simulator/utils/generate_reads.py b/neat/read_simulator/utils/generate_reads.py index c4ef74f4..61782f53 100644 --- a/neat/read_simulator/utils/generate_reads.py +++ b/neat/read_simulator/utils/generate_reads.py @@ -183,6 +183,13 @@ def generate_reads( # _LOG.info(f'Sampling reads for thread {thread_index}...') start_time = time.time() + if len(reference) < options.read_len: + _LOG.warning( + f"Contig '{contig_name}' (length {len(reference)}) is shorter than read_len " + f"({options.read_len}). Skipping contig." + ) + return [] + # _LOG.debug("Covering dataset.") t = time.time() reads = cover_dataset(