vcf2report - gbbarra
vcf2report turns a raw exome VCF + the patient's phenotype (HPO terms) into an auditable, clinical-grade ACMG variant report — locally, offline, in seconds.
Core trick
Runs an offline VCF-to-ACMG pipeline over a DuckDB/Parquet gnomAD store, emitting per-criterion evidence with database accession and date.
Description
vcf2report turns a raw exome VCF + the patient's phenotype (HPO terms) into an
auditable, clinical-grade ACMG variant report — locally, offline, in seconds.
Exome interpretation today is slow and manual: an analyst hand-filters thousands of
variants across several databases and matches each candidate to the patient's
phenotype one by one. vcf2report runs the whole pipeline — parse ▸ QC ▸ annotate ▸
prioritize ▸ classify ▸ report — and returns a draft laudo for expert sign-off,
showing the full ACMG reasoning for every variant: all 28 ACMG/AMP criteria, each
with its concrete evidence value, its source (database + accession + date), and
whether the deterministic engine decided it or it is honestly deferred to
expert/model review.
What makes it different from a black-box classifier:
• Auditable — you see *why* a variant is Pathogenic; the trio/segregation criteria
a single-proband VCF cannot support are marked N/A instead of guessed.
• Brazilian population frequencies (ABraOM/SABE) on top of gnomAD, so a variant
absent from gnomAD but common in Brazilians is correctly dropped.
• ClinGen-calibrated AlphaMissense (PP3/BP4), deterministic PVS1 via the ClinGen
SVI tree, and ontology-aware HPO phenotype matching (Lin/Information-Content).
• Offline gnomAD: a 29.6M-variant DuckDB/Parquet store classifies a whole exome in
~7 s with the VCF never leaving the machine.
Why it matters: validated against 200 real ClinVar variants (100 pathogenic /
100 benign, with ClinVar withheld from the engine), it produced 0 gross
pathogenic↔benign flips and 100% precision when decisive. It is deliberately
conservative — never dangerously wrong, and right whenever it commits — which is
exactly the property a draft-generation aid for a clinician needs.
README excerpt
# vcf2report [](https://github.com/gbbarra/vcf2report/actions/workflows/tests.yml) **Turn a raw exome VCF into an auditable, clinical-grade ACMG variant report — locally, offline, in seconds.** Built with Claude — Life Sciences Hackathon. Exome interpretation today is slow and manual: an analyst hand-filters thousands of variants, cross-references several databases, and matches each candidate to the patient's phenotype one by one. vcf2report turns that into minutes: point it at a VCF and the patient's phenotype (HPO terms) and it runs the whole pipeline — parse ▸ QC ▸ annotate ▸ prioritize ▸ classify ▸ report — and hands back a **draft for expert review**, with the full ACMG reasoning shown for every variant. **Phenotype→gene is already ontology-aware.** Candidate ranking and **PP4** use a **Lin / Information-Content similarity over the HPO `is_a` graph** — a patient term matches a *related* gene term (parent or child), weighted by how specific it is, and a best-match average means adding more explained phenotypes no longer dilutes the score. That is the failure mode of plain term-overlap on phenotype-rich cases. Details under [What makes it different](#what-makes-it-different); the code is [`src/vcf2report/annotate/hpo.py`](src/vcf2report/annotate/hpo.py) and the graph ships in `data/hpo/`. > ⚕️ **Draft-generation aid, not a diagnostic device.** Every report is a draft to > be verified