Skip to content

Stop warning that a breakend has no END/SVLEN (#497) - #818

Merged
joshfactorial merged 1 commit into
developfrom
fix/497_bnd_warn
Oct 6, 2026
Merged

joshfactorial merged 1 commit into
developfrom
fix/497_bnd_warn

Conversation

@joshfactorial

Copy link
Copy Markdown
Collaborator

A well-formed breakend supplied via input_vcf logged WARN Symbolic SV at 1-based POS 600 has no END/SVLEN — skipping coverage modulation. Skipping is correct: a breakend is a point (VCF 4.2 §5.4) with no copy-number change. But the warning read as a defect in a spec-correct VCF.

Versioning: PATCH-level under versioning.md. A log message changes level; no config key, output, or model format changes.

Fix

build_coverage_multipliers now skips SvType::Bnd before the span lookup and logs it at DEBUG (Breakend at 1-based POS 600: a point event, no coverage modulation). The WARN is unchanged for symbolic SVs that need a span and lack one, such as a <DEL> with no END or SVLEN. The function's doc comment said such SVs were skipped "silently", which was not true; it now describes both cases.

Skipping is safe because coverage_multiplier_for already returned 1.0 for a BND, so the coverage segments are unchanged.

Evidence

  • Reproduced first with the binary on the H1N1 fixture: a reciprocal BND pair (H1N1_HA:600 ↔ H1N1_PB2:900, no END or SVLEN) logged the WARN four times on develop, once per breakend per pass. With the fix, the same run logs 0 WARNs and four DEBUG lines.
  • New eidolon/tests/bnd_no_span_warning.rs, which runs the binary at --log-level debug and reads the written log:
    • breakend pair: the DEBUG line must be present, which shows the breakend reached the coverage pass, and the WARN must be absent. Red before the fix.
    • must-fire: a <DEL> with no END or SVLEN must still log the WARN.
  • Mutation: skipping every symbolic SV (|| true) fails the must-fire test. Confirmed the mutant was applied.
  • Full workspace suite (1,097 tests), fmt --check and clippy -D warnings pass locally.

Test note: the tests read the log file because simplelog's TerminalMode::Mixed sends WARN to stdout, not stderr. A stderr assertion would pass even if the warning came back.

Not verified

  • Only input_vcf breakends were exercised. De novo BNDs go through the same function, so they get the same skip, but no test runs them.

Closes #497.

🤖 Generated with Claude Code

A breakend is a point (VCF 4.2 5.4) with no copy-number change, so the
coverage pass now skips it at DEBUG before the span lookup. The warning
stays for symbolic SVs that need a span and lack one, such as a <DEL>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@joshfactorial joshfactorial mentioned this pull request Oct 5, 2026
9 of 35 tasks
@joshfactorial
joshfactorial merged commit faaf4a9 into develop Oct 6, 2026
7 checks passed
@joshfactorial
joshfactorial deleted the fix/497_bnd_warn branch October 6, 2026 03:27
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.

1 participant