Skip to content

Develop#273

Merged
joshfactorial merged 17 commits into
mainfrom
develop
May 3, 2026
Merged

Develop#273
joshfactorial merged 17 commits into
mainfrom
develop

Conversation

@joshfactorial
Copy link
Copy Markdown
Collaborator

Changes to be included in NEAT 4.4.1 (bug fixes and opitimizations for NEAT 4.4)

joshfactorial and others added 16 commits May 3, 2026 08:29
…pend

sample_trinucs returns the center (mutated) position, but the trinuc slice
was starting at that position rather than one before it, so trinuc[1] was
the 3' context base instead of the ref base. generate_snv uses trinuc[1] as
the ref base for transition-matrix lookup and REF==ALT zeroing, so the wrong
base was being consulted — Keshav's zeroing fix in #267 only worked when
reference[pos] == reference[pos+1].

Fix: shift the slice to reference[local_location-1: local_location+2] so
trinuc[0]=5' flank, trinuc[1]=ref base, trinuc[2]=3' flank.

Also remove the dead self.all_ins.append(temp_snv) in generate_snv; SNVs
were being accumulated in MutationModel.all_ins (a list that is never read)
rather than nowhere, a copy-paste artifact from generate_deletion.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
These lists were never read anywhere; ContigVariants has its own
independent all_ins/all_dels used for overlap detection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…to implement avg_seq_error in such a way that actually affects the output.
The main loop used <= instead of < causing num_errors+1 errors to be
collected. The fallback loop called rng.choice(quality_scores) which
returns a score value, not an index, making quality_scores[index] wrong;
replaced with rng.integers(len(quality_scores)).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ures

- Add num_errors argument to all get_sequencing_errors() calls
- Change reference_segment from SeqRecord to Seq in error model tests
- Add errors_per_read argument to generate_reads() calls
- Add num_errors argument to finalize_read_and_write() calls
- Add errors_per_read argument to read_simulator_single() calls
- Remove now-unused SeqRecord imports from test_error_and_mut_models and test_seq_error

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix fallback loop in get_sequencing_errors: use <= median so uniform
quality arrays (all scores equal) always make progress.

New tests:
- test_sem_num_errors_zero_produces_no_errors
- test_sem_num_errors_caps_output
- test_sem_fallback_loop_fills_errors_with_uniform_high_quality
- test_finalize_read_and_write_returns_error_count
- test_errors_per_contig_proportional_to_contig_length
- test_errors_per_contig_zero_for_zero_coverage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix blacklist range to exclude the deletion anchor so deletions
  don't remove themselves during the cleanup pass
- Fix quality array concatenation to use dtype=int so deletion errors
  (which produce an empty quality slice) don't promote the array to
  float64 and break the chr() call in finalize_read_and_write
- Remove dead num_errors capture from finalize_read_and_write return value
- Add tests for indel error paths, errors_per_read gate logic, and
  score clamping in TraditionalQualityModel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rective

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@joshfactorial joshfactorial merged commit 3a88096 into main May 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants