Skip to content

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.

Tags

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.
gbbarra/vcf2report★ 00 forksPythonMITCreated Jul 7, 2026 · last push Aug 11, 2026

README excerpt

# vcf2report

[![tests](https://github.com/gbbarra/vcf2report/actions/workflows/tests.yml/badge.svg)](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

Team