0f23d17640ca30e2c9ee456c7e15966cabd3bc57 max Mon Sep 7 23:32:24 2026 -0700 Position box: let a hyphen separate a range of codons, e.g. "BRCA1 100-200" A bare number after a gene symbol has always meant a codon, and "KAT6A 495-533" was already accepted -- it just landed on codon 495 and dropped the rest, the same silent truncation that the underscore form had. A hyphen now separates a range wherever the coordinates are protein: after a gene symbol with no prefix, and after an explicit p. with a symbol or a transcript accession. The hyphen stays out of c. and n. terms, where HGVS already uses it for an intron offset. KAT6A c.1483-1599 is still the single base 1599 nt before c.1483, not codons 1483 to 1599, and there are now regression tests pinning both readings so the two do not drift into each other. refs #38285 diff --git src/hg/lib/tests/expected/hgvs/validTerms.txt src/hg/lib/tests/expected/hgvs/validTerms.txt index a29a90f8c10..04aae108e3a 100644 --- src/hg/lib/tests/expected/hgvs/validTerms.txt +++ src/hg/lib/tests/expected/hgvs/validTerms.txt @@ -1,56 +1,67 @@ # db: hg38 # inputFile: input/hgvs/validTerms.txt # A variant that is famously known as "MTHFR C677T" or "MTHFR 677C>T" -- but the 677 is incorrect (from an old sequence ~1995): chr1 11796320 11796321 NM_005957.4:c.665C>T 0 - # Same variant in LRG transcript, protein and genomic coords: chr1 11796320 11796321 LRG_726t1:c.665C>T 0 - chr1 11796319 11796322 LRG_726p1:p.Ala222Val 0 - chr1 11796320 11796321 LRG_726:g.14783C>T 0 + # These three are equivalent (although p. is less specific): chr11 112088972 112088973 NM_003002.3:c.276C>A 0 + chr11 112088970 112088973 NP_002993.1:p.Asp92Glu 0 + chr11 112088970 112088973 NP_002993.1:p.D92E 0 + # This is not HGVS but seems to be a commonly requested format and is easy to transform into the internal representation of HGVS: chr2 29193604 29193607 ALK G1494E 0 - # More gene symbol HGVS-ish chr1 8358598 8358601 RERE:Thr758Serfs 0 - chr1 8361232 8361235 RERE:Thr758Serfs 0 - chr1 155240657 155240660 GBA1:p.Leu29Alafs*18 0 - chr1 155239721 155239724 GBA1:p.Leu29Alafs*18 0 - chr1 9262237 9262240 H6PD Val320= 0 + chr1 9264518 9264521 H6PD Val320= 0 + chr1 9262270 9262273 H6PD Val320= 0 + chr1 9262243 9262246 H6PD Val320= 0 + chr1 9262249 9262252 H6PD Val320= 0 + chr1 11802930 11802936 MTHFR Pro101_Gly102insLeuTyrIleAspValThrTrpHisProAlaGlyAspPro 0 - chr1 11801329 11801335 MTHFR Pro101_Gly102insLeuTyrIleAspValThrTrpHisProAlaGlyAspPro 0 - chr1 11802933 11802939 MTHFR Pro101_Gly102insLeuTyrIleAspValThrTrpHisProAlaGlyAspPro 0 - chr1 11800245 11800251 MTHFR Pro101_Gly102insLeuTyrIleAspValThrTrpHisProAlaGlyAspPro 0 - chr1 32781089 32781101 YARS1 p.Val153_Val156del 0 - chr1 32806523 32806535 YARS1 p.Val153_Val156del 0 - chr1 11964767 11964770 PLOD1 Glu532del 0 + chr1 11966259 11966262 PLOD1 Glu532del 0 + chr1 40092118 40092136 PPT1 p.Gln91_Cys96delinsPhe 0 - chr1 40080426 40080444 PPT1 p.Gln91_Cys96delinsPhe 0 - chr1 11964767 11964770 PLOD1:p.532 0 + chr1 11966259 11966262 PLOD1:p.532 0 + # From a user via b0b: chr3 38597785 38597788 NM_198056.3:pAla735Val 0 - chr3 38555661 38555664 NM_198056.3:pArg1512Trp 0 - chr20 33443333 33443334 NM_003098.2:c.287G>C 0 - chr17 43093299 43093300 NM_007294.3:c.2231C>A 0 - chr17 43093299 43093300 NM_007294.3(BRCA1):c.2231C>A 0 - # Bare codon numbers and ranges of codon numbers, refs #38285 chr8 41955408 41955411 KAT6A p.495 0 - chr8 41949362 41955411 KAT6A p.495_533 0 - chr8 41949362 41955411 KAT6A p.Lys495_Ser533 0 - chr8 41955408 41955411 NM_006766.5 p.495 0 - chr8 41949362 41955411 NM_006766.5 p.495_533 0 - chr8 41955408 41955411 ENST00000265713.8 p.495 0 - chr8 41949362 41955411 ENST00000265713.8 p.495_533 0 - chr8 41949362 41955411 KAT6A c.1483_1599 0 - +chr8 41955408 41955411 KAT6A 495 0 - +chr8 41949362 41955411 KAT6A 495_533 0 - +# A hyphen is a range separator in protein coordinates only, refs #38285 +chr8 41949362 41955411 KAT6A 495-533 0 - +chr8 41949362 41955411 KAT6A p.495-533 0 - +chr8 41949362 41955411 NM_006766.5 p.495-533 0 - +chr8 41949362 41955411 ENST00000265713.8 p.495-533 0 - +# ...but in c. and n. terms a hyphen is still an intron offset, not a range: +# this one must stay a single base 1599 nt before c.1483, not codons 1483..1599 +chr8 41957009 41957010 KAT6A c.1483-1599 0 - +chr8 42049489 42049490 KAT6A n.100-200 0 -