Highlights
Accumulates ~55 commits since v0.1.0 (April 23, 2026). Headline features:
-
ACMG-AMP variant classification engine — new
fastvep-classificationcrate,--acmgflag onfastvep annotate. 28 criteria aligned with ClinGen SVI (PVS1 Abou Tayoun 2018 decision tree, PM2 inheritance-aware, PM3 v1.0 points-based, PP3/BP4 Pejaver 2022 + Walker 2023, BA1 Ghosh 2018 exception list, BS1/BS2 tightened, BP7 exon-edge exclusion + deep-intronic extension). Trio / compound-het via--proband/--mother/--father. Configurable thresholds in TOML. v7 benchmark on ClinVar 2-star+ lifts P recall to 64% and continues to improve. -
Custom annotation sources —
sa-build --source custom_vcf/custom_bed/custom(auto-detect from input extension).--namesets the JSON / output column;--info-fieldsselects which VCF INFO fields to extract. Custom BEDs produce.osiinterval-level files now loaded at runtime alongside.osa/.osa2via--sa-dir. (Closes #43) -
VEP
--merged-style cache —--gff3onannotateandcacheis now repeatable; each value acceptsLABEL=pathsyntax. Auto-detects Ensembl / RefSeq from filenames. Per-transcript SOURCE labels flow side-by-side through VCF / JSON / tab output. (Closes #44) -
~900× faster supplementary annotation — byte-budgeted LRU block cache with per-variant deduplication (#33). Override the budget via
FASTVEP_SA_CACHE_BYTES_PER_READER. -
Gene-level annotations (
.oga) —sa-build --source omim/gnomad_genes/clinvar_proteinproduce gene-level databases used by the ACMG classifier for PVS1 / BS2 / PM3 / BP2 / PS1 / PM1 / PM5 / PP2 / BP1. -
Tab output ergonomics —
--gene-list(gene-panel filter),--explicit-alleles(adds REF column),--qc-rules(custom QC class column) (#42). -
--sa-onlymode — skip the default CSQ pipeline, emit only supplementary annotations. Useful for re-annotating already-annotated VCFs (#34). -
gnomAD v4.1 joint VCF support (#41).
-
Gzipped VCF input for
fastvep annotate(#21).
Reliability & security
- Reader hardening:
.osa.idx/.osi/.ogarefuse malformed / malicious payloads with bounded-size limits (#28, #35). - Path-traversal vulnerability fixed in the web server's
resolve_genome_paths(#5). - Cache builds are now deterministic — bit-for-bit reproducible (#40).
- Custom VCF parser hardened end-to-end (CRLF line endings, JSON-special characters, flag-only INFO entries, multi-allelic
Number=A/Number=Rsplitting) (#46). - gnomAD annotations no longer drop records on
chr*-style VCF input (#37/#38).
Tests: 515 passing (up from 233 at v0.1.0).
See the full CHANGELOG for everything.