Repository navigation
eidolon v3.2.0
v3.1.0 shipped with insertion limitations listed as known and documented. This release closes them, together with the wider defect they belonged to: records that reached the truth VCF and never reached the reads. Seven issues turned out to be one shape.
Fixed
| #516 | insertions longer than a read are sequenced end to end, not just their first ~150 bp |
| #589 | the golden BAM CIGAR describes them, instead of recording junction reads as pure M |
| #590 | literal deletions live on the haplotype, so they remove coverage |
| #498 | BND ALTs carrying novel junction sequence splice it into the reads |
| #500 | symbolic <INS> is realized; unpaired breakends are refused instead of destroying 41% of local coverage |
| #625 | one 5 kb deletion no longer silences 22% of a contig |
| #603 | supplied SVs come out of the de novo budget instead of adding to it |
| #591 | REF == ALT and no-call genotypes are refused or normalized |
| #599 | chimeric read generation is deterministic again |
| #583 | a failing validation run can explain itself again |
The first three are one architectural change: build the altered haplotype, then read from it. Insertions and deletions now share a coordinate map in which inserted bases occupy real space and deleted bases occupy none, so a fragment can begin inside an insertion and can never be placed across sequence that does not exist on the molecule.
Validated
Delta jobs 21575385 and 21603825 — chr20+21+22, 30x, purity 0.6, SV_RATE_SCALE=30, both exit 0:
- 11/11 insertions present in the reads, 9 longer than the 151 bp read, largest 968 bp
- 76/76 deletions with junction sequence present, 76/76 removing coverage, flank ratios 0.33–0.77
- no coverage holes at genome scale; scorer selftests pass on 153 + 78 records
Known limitations
- Insertion sequence is random, not mobile-element (#580). It is unique in the genome by construction, so every supporting read maps at MAPQ ≥ 30, where real Alu and L1 map ambiguously. INS recall measured against eidolon insertions is optimistic.
- INS denominators are thin. Both campaigns planted 9 at-risk insertions against a floor of 20. Those 9 worked; that is not insertion realization at scale.
- Single breakends are refused, not supported (#623) — a legitimate VCF 4.2 call.
- The CIGAR clip gate sits near its detection floor for somatic deletions (#630).
- Copy-number depth accuracy is size-dependent (#584). Accurate at 10 kb; biased high on kb-scale events, because junction reads are emitted on top of coverage-multiplied reads.
Validation harness
Most of the above was found by the harness, and several harness defects were found by its own gates disagreeing with each other. Four read-level evidence gates now run per campaign before BAMs are pruned — insertion sequence, deletion junction sequence, deletion coverage against flanks, and CIGAR clip support against flanking controls. Clippy is a blocking CI gate and the Rust toolchain is pinned.
Full changelog: 3.1.0...v3.2.0