5.2 KiB
5.2 KiB
Phase 1 Implementation Plan (Genomic Foundation)
Scope: deliver a working trio-based variant pipeline, annotated genomic store, query APIs, initial ACMG evidence tagging, and reporting/logging scaffolding. This assumes local execution with Python 3.11+.
Objectives
- Trio BAM → joint VCF with QC artifacts (
Auto). - Annotate variants with population frequency, ClinVar, consequence/prediction (
Auto). - Provide queryable interfaces for gene/region lookups with filters (
Auto). - Disease/phenotype → gene panel lookup and filtered variant outputs (
Auto+Review). - Auto-tag subset of ACMG criteria; human-only final classification (
Auto+Review). - Produce machine-readable run logs with versions, configs, and overrides.
Work Breakdown
-
Data & references
- Reference genome: GRCh38 (primary) with option for GRCh37; pin version hash.
- Resource bundles: known sites for BQSR (if using GATK), gnomAD/ClinVar versions for annotation.
- Test fixtures: small trio BAM/CRAM subset or GIAB trio downsampled for CI-like checks.
-
Variant calling pipeline (wrapper,
Auto)- Tooling: GATK HaplotypeCaller → gVCF; GenotypeGVCFs for joint calls. Alt: DeepVariant + joint genotyper (parameterized).
- Steps:
- Validate inputs (file presence, reference match).
- Optional QC: coverage, duplicates, on-target.
- Generate per-sample gVCF; joint genotyping to trio VCF.
- Outputs: joint VCF + index; QC summary JSON/TSV; log with tool versions and params.
-
Annotation pipeline (
Auto)- Tooling: Ensembl VEP with plugins for gnomAD, ClinVar, CADD, SpliceAI where available; alt path: ANNOVAR.
- Steps:
- Normalize variants (bcftools norm) if needed.
- Annotate with gene, transcript, protein change; population AF; ClinVar significance; consequence; predictions (SIFT/PolyPhen/CADD); inheritance flags.
- Include SpliceAI/CADD plugins if installed; CLI accepts extra flags/plugins to embed SpliceAI/CADD fields.
- Outputs: annotated VCF; flattened TSV/Parquet for faster querying; manifest of DB versions used.
-
Genomic store + query API (
Auto)- Early option: tabix-indexed VCF with Python wrapper.
- Functions (Python module
genomic_store):get_variants_by_gene(individual_id, genes, filters)
Filters: AF thresholds, consequence categories, ClinVar significance, inheritance pattern.get_variants_by_region(individual_id, chrom, start, end, filters)list_genes_with_variants(individual_id, filters)(optional).
- Filters defined in a
FilterConfigdataclass; serialize-able for logging. - Future option: import to SQLite/Postgres via Arrow/Parquet for richer predicates.
-
Disease/phenotype → gene panel (
Auto+Review)- Data: HPO/OMIM/GenCC lookup or curated JSON panels.
- Function:
get_gene_panel(disease_or_hpo_id, version=None)returning gene list + provenance. - Phenotype resolver: curated JSON mapping (e.g.,
phenotype_to_genes.example.json) as placeholder until upstream data is wired; allow dynamic panel synthesis by phenotype ID in CLI; support merging multiple sources into one mapping. - Flow: resolve panel → call genomic store → apply simple ranking (AF low, ClinVar pathogenicity high).
- Manual review points: panel curation, rank threshold tuning.
-
ACMG evidence tagging (subset,
Auto+Review)- Criteria to auto-evaluate initially: PVS1 (LoF in LoF-sensitive gene list), PM2 (absent/rare in population), BA1/BS1 (common frequency), possible BP7 (synonymous, no splicing impact).
- Config: YAML/JSON with thresholds (AF cutoffs, LoF gene list, transcript precedence).
- Output schema per variant:
{variant_id, evidence: [tag, strength, rationale], suggested_class}with suggested class computed purely from auto tags; final class left blank for human. - Logging: capture rule version and reasons for each fired rule.
-
Run logging and versioning
- Every pipeline run emits
run_log.jsoncontaining:- Inputs (sample IDs, file paths, reference build).
- Tool versions and parameters; DB versions; config hashes (panel/ACMG configs).
- Automation level per step; manual overrides (
who/when/why). - Derived artifacts paths and checksums.
- Embed run_log reference in reports.
- Every pipeline run emits
-
Report template (minimal)
- Input: disease/gene panel name, variant query results, ACMG evidence tags.
- Output: Markdown + JSON summary with sections: context, methods, variants table, limitations.
- Mark human-only decisions clearly.
Milestones
- M1: Repo scaffolding + configs; tiny trio test data wired;
make pipelineruns through variant calling + annotation on fixture. - M2: Genomic store wrapper with gene/region queries; filter config; basic CLI/Notebook demo.
- M3: Panel lookup + ranked variant listing; ACMG auto tags on outputs; run_log generation.
- M4: Minimal report generator + acceptance of human-reviewed classifications.
Validation Strategy
- Unit tests for filter logic, panel resolution, ACMG tagger decisions (synthetic variants).
- Integration test on small fixture trio to ensure call → annotate → query path works.
- Determinism checks: hash configs and verify outputs stable across runs given same inputs.