40b4fc89ec72c22cae51bf9a8b9a7e8dd887eebf chmalee Thu Jun 4 15:34:16 2026 -0700 Show MANE-relative HGVS terms on myVariants SNV detail pages, refs #33808 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> diff --git src/hg/lib/hgHgvs.c src/hg/lib/hgHgvs.c index 52c71d065c2..fcf864d512e 100644 --- src/hg/lib/hgHgvs.c +++ src/hg/lib/hgHgvs.c @@ -1230,31 +1230,31 @@ // Since we found hgvs->seqAcc, split it into versionless and version parts. if (retFoundAcc) *retFoundAcc = cloneFirstWordByDelimiter(hgvs->seqAcc, '.'); if (retFoundVersion) { char *p = strchr(hgvs->seqAcc, '.'); if (p) *retFoundVersion = atoi(p+1); } // Don't free chromInfo, it's cached! } } return coordsOK; } -static char *txSeqFromGp(char *db, struct genePred *gp) +char *txSeqFromGp(char *db, struct genePred *gp) /* Return transcribed-from-genome sequence for gp */ { int seqLen = 0; int i; for (i = 0; i < gp->exonCount; i++) seqLen += (gp->exonEnds[i] - gp->exonStarts[i]); char *seq = needMem(seqLen+1); int offset = 0; for (i = 0; i < gp->exonCount; i++) { int exonStart = gp->exonStarts[i]; int exonEnd = gp->exonEnds[i]; struct dnaSeq *exonSeq = hChromSeq(db, gp->chrom, exonStart, exonEnd); safencpy(seq+offset, seqLen+1-offset, exonSeq->dna, exonSeq->size); offset += exonSeq->size; @@ -3281,15 +3281,31 @@ if (hitsStopCodon) aaToAbbr('X', refLastAbbr, sizeof(refLastAbbr)); else aaToAbbr(pSeq[rangeEnd-1], refLastAbbr, sizeof(refLastAbbr)); if (dupLen == 1) dyStringPrintf(dy, "%s%d", refStartAbbr, rangeStart+1); else dyStringPrintf(dy, "%s%d_%s%d", refStartAbbr, rangeStart+1, refLastAbbr, rangeEnd); } hgvsAppendChangesFromPepRefAlt(dy, vpPep->ref, vpPep->alt, dupLen); } if (addParens) dyStringAppendC(dy, ')'); return dyStringCannibalize(&dy); } + +struct trackDb *hgvsDefaultGeneTrack(char *db) +/* Return trackDb for the assembly's preferred gene-model track (MANE first), or NULL + * if none is present. Caller checks tdb->type for genePred vs bigGenePred. */ +{ +static char *geneTrackPrefs[] = + { "mane", "ncbiRefSeqSelect", "ncbiRefSeqCurated", "refGene", "ensGene", "knownGene" }; +int i; +for (i = 0; i < ArraySize(geneTrackPrefs); i++) + { + struct trackDb *tdb = hTrackDbForTrack(db, geneTrackPrefs[i]); + if (tdb != NULL) + return tdb; + } +return NULL; +}