Skip to content

eidolon v3.5.0

Choose a tag to compare

@joshfactorial joshfactorial released this 01 Oct 05:07
· 104 commits to main since this release
595da24

eidolon v3.5.0 — germline defaults fitted from one human genome

The shipped germline defaults now come from GIAB HG002, the library the quality model already came from, instead of a mix of NEAT2 values and a second sample. The sequencing-error substitution matrix is fitted from current NovaSeq data, using a new method that cancels the sample's own variants.

Output differs from v3.4.0 at the same seed. Re-baseline anything measured against 3.4.0.

📖 Documentation: https://ncsa.github.io/eidolon/

New defaults

default now was
mutation rate, SNP/indel shares, homozygous fraction HG002 v4.2.1 truth VCF in its high-confidence BED: 0.0015162, SNP/ins/del 0.873/0.062/0.066, 0.388 hom NEAT2 NA12878: 0.0010987, 0.95/0.03/0.02, 1/3
trinucleotide contexts, variant indel lengths the same HG002 fit NEAT2 NA12878
fragment length HG002 2x250 BAM: mean 408.5, sd 93.2 HCC1395 NovaSeq: 431.8, 112.3
substitution matrix mean of two NovaSeq 6000 libraries, fitted from mate-overlap disagreements NEAT2 SSE_PROB, no recorded source

The mutation fit reproduces bedtools counts of the truth VCF exactly: 3,364,039 SNPs, 237,674 insertions and 252,894 deletions. GC bias stays uniform by default; the HG002 GC fit is held for named presets (#576).

Fixes that change generated reads

  • A fragment's two mates now carry the same allele (#780). Before, 73 of 170 het pairs disagreed; now 0 do.
  • SV junction R2 reads use R2's quality model (#753) and apply substitution errors in reference orientation (#777), like every other R2.
  • Soft-masked references are counted as their uppercase bases in GC weighting and SV insertion composition (#771). Uppercase references are unaffected.
  • A distribution with no mass is refused (#760) instead of sending every draw to its first value.

Fixes in the tools

  • VCF/BED off-by-one (#770): compare-vcfs scoring and attribution, filter-reads and gen-mut-model compared 1-based POS to 0-based BED intervals.
  • gen-mut-model labels G and T correctly (#758), drops its unused 4×4 matrix (#763), and refuses a VCF whose SNPs are all unusable (#760).
  • gen-gc-bias-model fits medians, interpolates sparse bins, writes a per-bin report and refuses an uncovered BAM (#774).
  • gen-cancer-reads defaults read_len to 250 like gen-reads (#754). gen-reads warns when it rescales a quality model (#742).

Fit your own substitution matrix

gen-seq-error-model with bam_file: now fits from mate-overlap disagreements by default (bam_method: overlap). The sample's variants, PCR errors and damage appear in both mates and cancel; only sequencing errors remain. known_variants_vcf: masks a VCF's sites. For a library whose mates don't overlap, use bam_method: mismatch.

Compatibility

  • A mutation model written by 3.5.0 does not load in an older eidolon. It fails with a "missing field" error, not silently. Older models load here.
  • gen-mut-model's transition_matrix_file is removed. A set value stops the run with an explanation; gen-seq-error-model's option of that name is unchanged.
  • gen-seq-error-model's bam_method now defaults to overlap. Use mismatch to reproduce a 3.4.0 fit.

Evidence and limits

Validated on real data on NCSA Delta. The HG002 realism panel on the new defaults shows no regression against the previous run. The mutation refit matches bedtools. The NovaSeq fits rest on 3.0M and 656k counted errors. Not re-run: cancer simulation; the COSMIC tumor-model rebuild is #761. Open realism gaps are tracked in #692, #658 and #696.


Full detail in CHANGELOG.md. Model provenance in model_data/README.md.

Full Changelog: v3.4.0...v3.5.0