3d194de4d74f67c1a453035e20c4769d88bec4c4 lrnassar Mon Jul 13 12:52:57 2026 -0700 Order popEVE heatmap amino acid rows by class to match the MaveDB track. refs #37791 Change the heatmap row order from alphabetical to physicochemical-amino-acid-class order (A V L I M F Y W R H K D E S T N Q G C P), matching the MaveDB Experiments heatmap so the tracks can be compared row-for-row. Rebuilds popEve.bb; updates the makedoc, the AutoSql row label comment, and the description page. diff --git src/hg/makeDb/scripts/popEve/vcfToPopEveHeatmap.py src/hg/makeDb/scripts/popEve/vcfToPopEveHeatmap.py index cc436e7b88d..a40682bd110 100644 --- src/hg/makeDb/scripts/popEve/vcfToPopEveHeatmap.py +++ src/hg/makeDb/scripts/popEve/vcfToPopEveHeatmap.py @@ -11,31 +11,31 @@ from hg38 ncbiRefSeq) used to validate / override the strand inferred from coordinates. Produces one heatmap BED12+ line per protein (see popEve_heatmap.as): Columns = protein positions ordered by ascending genomic coordinate; reverse-strand genes therefore read C-terminus -> N-terminus, matching genomic orientation. Rows = 20 standard amino acids (A C D E F G H I K L M N P Q R S T V W Y). Each codon is a block. popEVE lists only positions carrying a missense alt, so a codon may have 2 of 3 genomic positions; block sizes are therefore clamped so adjacent blocks cannot overlap (min(3, gap-to-next)), keeping the file valid for bedToBigBed. Wildtype cells are left empty. Mouseover carries popEVE + severity class plus the component EVE / ESM-1v / pop-adjusted scores and gap frequency. """ import sys -STANDARD_AAS = list('ACDEFGHIKLMNPQRSTVWY') # 20 standard AAs, alphabetical +STANDARD_AAS = list('AVLIMFYWRHKDESTNQGCP') # 20 standard AAs, by class, to match MaveDB # Published popEVE severity cutoffs (fixed interior color anchors). SEVERE_MAX = -5.056 # popEVE < SEVERE_MAX -> severe MODERATE_MAX = -4.617 # SEVERE_MAX <= popEVE < this -> moderate; >= this -> tolerated MEDIAN_ANCHOR = -3.5 # interior white anchor (~ proteome-wide median) COLOR_VALUES = "#b2182b,#d6604d,#f4a582,#f7f7f7,#2166ac" # deleterious red -> tolerated blue def r3(s): """Round a numeric string to 3 decimals, trimming trailing zeros.""" try: v = float(s) except (ValueError, TypeError): return s