0d12a0f167c83fb30ff8e001de6aff57c0982447 lrnassar Wed Jul 8 15:55:13 2026 -0700 Reframe the Cardiomyopathy VCEP provisional track to a Computable ACMG Criteria Summary. refs #37446 Per the CM VCEP chair, the cmpVCEPProvisionalClass track no longer computes an overall ACMG classification. It now lists, per variant, only the computable ACMG codes that are triggered, each with its underlying value: gnomAD FAF95 for BA1/BS1/PM2_supporting, REVEL score for PP3/BP4, the PM1 hotspot region, the EvRepo codon reference for PS1/PM5, the NMD-escape basis for PM4, and SpliceAI/phyloP for BP7. Display is a single neutral color; a SpliceAI score >= 0.20 is recorded as an informational splice flag rather than overriding a call. The GN002 combining logic is retained in the script as classify() but is retired and no longer called. Makedoc B.11 updated to match. diff --git src/hg/makeDb/doc/Cardiomyopathy.txt src/hg/makeDb/doc/Cardiomyopathy.txt index 3d8315e1ce7..d55bf901d20 100644 --- src/hg/makeDb/doc/Cardiomyopathy.txt +++ src/hg/makeDb/doc/Cardiomyopathy.txt @@ -63,31 +63,31 @@ # cmp_downloads/ (source data — checked at A.0 + cached) # scripts_local_copy/ (insurance copy of all 12 build scripts; # live copy is at ~/kent/...) # cmpVCEPClinDomains/ (PM1 hotspot regions) # cmpVCEPPVS1/ (MYBPC3-only PVS1 caveats) # cmpVCEPAFfrequencies/ (gnomAD v4.1 BA1/BS1/PM2_supporting) # cmpVCEPAnnotate/ (hgVai consequence + HGVSp annotation TSV) # cmpVCEPRevel/ (REVEL PP3/BP4) # cmpVCEPCardioBoost/ (CardioBoost missense predictor — off) # cmpVCEPEvRepo/ (VCEP Curated Variants — EvRepo, with codes) # cmpVCEPClinVar506161/ (VCEP ClinVar submissions, no codes) # cmpVCEPWalsh2019/ (Walsh 2019 Pre-EvRepo Table S6 curations) # cmpVCEPWalshOR/ (Walsh 2017 gene-level OR — PS4) # cmpVCEPAtlasEF/ (Atlas of Cardiac Genetic Variation # per-variant + UCSC-computed OR — PS4) -# cmpVCEPProvisionalClass/ (NON-FINAL combination-rule mockup) +# cmpVCEPProvisionalClass/ (Computable ACMG Criteria Summary; per-variant codes) # # Build scripts: ~/kent/src/hg/makeDb/scripts/cardiomyopathyVCEP/ # cmpVCEPClinDomains.py (B.1 — PM1 hotspot regions; also provides # parse_mane_record, cds_exons, # aa_to_genomic_segments helpers imported # by B.2, B.6, B.9, B.11) # cmpVCEPPVS1.py (B.2) # cmpVCEPAFfrequencies.py (B.3; fetch_gene_variants() defines the # shared variant universe reused by B.6/B.11) # cmpVCEPAnnotate.py (B.6 — hgVai consequence/HGVSp annotation) # cmpVCEPRevel.py (B.4) # cmpVCEPCardioBoost.py (B.5) # cmpVCEPEvRepo.py (B.7) # cmpVCEPWalsh2019.py (B.7c) # cmpVCEPClinVar506161.py (B.8) @@ -228,31 +228,31 @@ # under cmp_downloads/atlas/raw/ + variants/, rate-limited 1.5 req/sec. # The Atlas is a static companion to Walsh 2017 (ExAC controls, ~2016); it # is NOT refreshed by otto. To refresh manually, delete the cache and re-run. ############################################################################## # Phase B: Build tracks ############################################################################## # # All build scripts at ~/kent/src/hg/makeDb/scripts/cardiomyopathyVCEP/ # Each accepts: --db hg38 --db hg19 --output-dir (B.6 takes only # --output-dir). Each emits .as / .bed / .bb for both assemblies and verifies # cross-assembly parity at the end. # # Build order matters: B.3 defines the variant universe that B.6 annotates; -# B.11 (Provisional) consumes B.6 (annotation), B.3 (AF), B.4 (REVEL), and the +# B.11 (Computable codes) consumes B.6 (annotation), B.3 (AF), B.4 (REVEL), and the # B.7 EvRepo P/LP set (PS1/PM5 reference). Suggested order: # # for s in cmpVCEPClinDomains cmpVCEPPVS1 cmpVCEPAFfrequencies cmpVCEPAnnotate \ # cmpVCEPRevel cmpVCEPCardioBoost cmpVCEPEvRepo cmpVCEPWalsh2019 \ # cmpVCEPClinVar506161 cmpVCEPWalshOR cmpVCEPAtlasEF \ # cmpVCEPProvisionalClass; do # python3 ~/kent/src/hg/makeDb/scripts/cardiomyopathyVCEP/${s}.py \ # --db hg38 --db hg19 \ # --output-dir /hive/users/lrnassar/claude/RM37446 || break # done # # (cmpVCEPAnnotate.py takes only --output-dir.) # # # B.1 cmpVCEPClinDomains.py — PM1 Hotspot Regions # Output: 28 features (4 genes x CDS-exon-spanning AA range; MYH7, MYBPC3, @@ -334,50 +334,52 @@ # Supporting >=5, else below threshold): Strong 1, Moderate 7, Supporting 9, # below threshold 31. Standout: MYBPC3 truncating-HCM OR 118.8 (86.1-163.9) # -> Strong. hg38 from MANE CDS; hg19 via liftOver. Replaces the earlier # Walsh-2019 EF table (a different statistic; per CSpec, PS4 cites Walsh 2017). # # B.10 cmpVCEPAtlasEF.py — Atlas per-variant case-counts + UCSC-computed OR (PS4) # Source: cmp_downloads/atlas/variants/var_*.html (173 parsed; 16 parse # failures). Output: 178 features (a variant renders once per disease cohort # where it has data). UCSC computes the OR (Fisher 2x2 with Haldane 0.5 # correction; Woolf log-OR 95% CI) from Atlas case counts against ExAC # controls; per-gene Walsh-2019 NonTrunc ExAC denominators are used for # non-truncating vartypes, else the 60,706 baseline. PS4 strength binning: # Strong 16, Moderate 30, Supporting 44, below threshold 88. Every mouseover # carries the caveat that the OR is UCSC-computed against ExAC (not gnomAD). # -# B.11 cmpVCEPProvisionalClass.py — NON-FINAL Provisional Classification +# B.11 cmpVCEPProvisionalClass.py — Computable ACMG Criteria Summary +# (Formerly "NON-FINAL Provisional Classification"; reframed 2026-07-08 per +# the CM VCEP chair L. Bronicki. The track no longer computes an overall ACMG +# classification, only the computable codes that fire per variant.) # Variant universe: identical to B.3 (10,974). Consumes the B.6 annotation # TSV. Computable codes applied: BA1/BS1/PM2_supporting (B.3 FAF95), # PP3/BP4 (REVEL, missense), PM1 (CSpec hotspot region), PS1/PM5 (EvRepo -# P/LP reference, leave-one-out — a variant cannot earn the code from its +# P/LP reference, leave-one-out; a variant cannot earn the code from its # own entry; PS1 reference excludes established splice-impact variants e.g. # MYBPC3 c.2308G>A), PM4 (NMD-escaping truncating, non-MYBPC3: last exon or # within 50 nt of the final exon-exon junction), BP7 (synonymous + -# SpliceAI < 0.20 + phyloP470way <= 0). -# Combination rules = CSpec GN002 verbatim (NOT Tavtigian point sums; PP2 -# is not in the GN002 point system and is not emitted). PM1<->PM5 mutual -# exclusion enforced per CSpec (keep PM5, the variant-specific code; drop -# PM1; PM1+PS1 co-occurrence flagged). BS1-standalone -> Likely Benign per -# the GN002 BS1 carve-out. SpliceAI safety net runs last (>= 0.20 on an -# LB/B call -> VUS). HCM/DCM diseaseTag populated. -# The mockup omits all clinical/functional codes (PS2/PS3/PS4/PP1/PP4/ -# BS3/BS4), so it structurally cannot reach Pathogenic/Likely Pathogenic; -# this is intentional and labeled NON-FINAL throughout (BED name, .as, -# trackDb, mouseover, description page). No concordance metric is asserted. -# Output: 10,974 features — 0 P / 0 LP / 10,453 VUS / 319 LB / 202 B. +# SpliceAI < 0.20 + phyloP470way <= 0). PM1<->PM5 mutual exclusion enforced +# per CSpec (keep PM5, the variant-specific code; drop PM1; PM1+PS1 +# co-occurrence flagged). HCM/DCM diseaseTag populated. A SpliceAI score +# >= 0.20 is recorded as an informational splice flag. +# Per-variant output = the list of triggered codes only; NO overall +# classification is calculated. The GN002 combining logic remains in the +# script as classify() but is retired/uncalled. Clinical/functional codes +# (PS2/PS3/PS4/PP1/PP4/BS3/BS4) are not computed. Single neutral display +# color 91,107,122; no classification encoded. +# Output: 10,974 features. Code firing: BA1 210, BS1 367, PM2_Supporting +# 9,893, PP3 1,436, BP4 1,647, BP7 1,356, PM1 1,293, PM4 27, PM5 11, PS1 0. ############################################################################## # Phase C: Hub assembly ############################################################################## # # Files written/maintained by hand (NOT generated by the build scripts): # hub.txt, genomes.txt # cardiomyopathy.html (shared description page; hub descriptionUrl) # hg38/trackDb.txt # hg19/trackDb.txt (mirrors hg38; differs in bigDataUrl + an hg19 # provenance header noting liftOver-derived coords) # # trackDb structure: 7 top-level groups -> 11 tracks. Three are composites: # Bioinformatic (REVEL on + CardioBoost off), VCEP Curated Variants (EvRepo on @@ -392,68 +394,68 @@ # ln -sf /hive/users/lrnassar/claude/RM37446 \ # /cluster/home/lrnassar/public_html/track_hubs/cardiomyopathyVCEP # Hub URL: https://hgwdev.gi.ucsc.edu/~lrnassar/track_hubs/cardiomyopathyVCEP/hub.txt ############################################################################## # Phase D: Verification ############################################################################## # # (Build verification only. QA history, audit findings, and review/release # readiness are tracked in Redmine #37446, not here.) # # - hubCheck: silent pass (exit 0) on hg38 + hg19. # - Cross-assembly parity (hg38 == hg19 feature counts): # PM1 28 | PVS1 16 | AF 10,974 | REVEL 22,466 | EvRepo 25 | Walsh2019 155 | -# ClinVar 199 | WalshOR 48 | AtlasEF 178 | Provisional 10,974 | +# ClinVar 199 | WalshOR 48 | AtlasEF 178 | Computable codes 10,974 | # CardioBoost 31,236 # - Worked example, MYH7 p.Arg870His (NM_000257.4:c.2609G>A, chr14:23424839 hg38): # EvRepo: Pathogenic, codes PM1;PM2;PP1_Strong;PS4 # EvRepo R870C: Likely Pathogenic at the adjacent codon-870 position # (the PS1/PM5 partner) # PM1: within MYH7 167-931 # REVEL: 0.853 -> PP3_supporting # gnomAD AF: absent from v4.1 exomes -> PM2_supporting # Walsh OR: MYH7 non-truncating HCM, OR 12.0 (10.9-13.3) -> Moderate -# Provisional: Uncertain Significance (PM1+PM2+PP3, no clinical PS4/PP1 -> -# no P/LP rule fires) — the expected under-call +# Computable codes: PM1+PM2+PP3 triggered; no overall classification is +# computed (the VCEP Pathogenic call rests on PS4+PP1, manual) ############################################################################## # Phase E: Otto cron (TODO — gated on VCEP sign-off; do AFTER deployment) ############################################################################## # # DO NOT enable until the VCEP signs off (Phase F gate). The weekly refresh # touches EvRepo + ClinVar 506161 only; premature activation could surface # unreviewed VCEP curations on the public hub. # # Mirror the TP53 pattern at /hive/data/outside/otto/cardiomyopathyVCEP/ # (doUpdate.sh + checkCMPVCEPClinVar.sh). Crontab (NOT activated until sign-off): # # Cardiomyopathy VCEP weekly EvRepo + ClinVar update # 2x 03 * * 2 umask 002; /hive/data/outside/otto/cardiomyopathyVCEP/doUpdate.sh # Tuesday ~03:2x UTC — offset a few minutes from TP53 (03:15) and InSiGHT (03:10). ############################################################################## # Phase F: Deployment to hgdownload (TODO — gated on VCEP expert review) ############################################################################## # # Steps: # 1. (Done) MYH7 draft sent to Haley Garrett / Lucas Bronicki with a shared # hgwdev session + interpretation questions. -# 2. After sign-off, decide the NON-FINAL Provisional track's fate (keep as a -# labeled mockup vs drop) per VCEP feedback. +# 2. (Done 2026-07-08) Provisional track reframed to the Computable ACMG Criteria +# Summary per the CM VCEP chair: per-variant codes only, no overall classification. # 3. Symlink hub into hgdownload and coordinate autoPush: # ln -sf /hive/users/lrnassar/claude/RM37446 \ # /usr/local/apache/htdocs-hgdownload/hubs/cardiomyopathyVCEP # Public URL: https://hgdownload.soe.ucsc.edu/hubs/cardiomyopathyVCEP/hub.txt # 4. Commit to git (per CLAUDE.md, `refs #37446`): # - This file -> ~/kent/src/hg/makeDb/doc/Cardiomyopathy.txt # - All 12 build scripts -> ~/kent/src/hg/makeDb/scripts/cardiomyopathyVCEP/ # Then verify the cardiomyopathy.html GitHub "source code" links resolve and # remove the PLACEHOLDER caveat; run encodeEmail.pl (already applied) and # switch the Data Access section to the hgdownload (TP53-style) wording. ############################################################################## # Phase G: Recommended Track Set (TODO — after Phase E activation) ##############################################################################