d8900846fdae9183808ccd57864191ee48fca00e chmalee Fri Jun 5 10:07:25 2026 -0700 myVariants: fix item display and HGVS gene-track lookup on GenArk hubs, refs #33808 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> diff --git src/hg/lib/hgHgvs.c src/hg/lib/hgHgvs.c index fcf864d512e..cccf4d10816 100644 --- src/hg/lib/hgHgvs.c +++ src/hg/lib/hgHgvs.c @@ -3288,24 +3288,33 @@ 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" }; +// On an assembly hub the gene tracks carry a hub_<id>_ prefix and hTrackDb() is empty, +// so enumerate the hub genome's tracks and match by bare name; native dbs fall back to +// hTrackDbForTrack. Guard trackHubGetGenome: it aborts when no hub is registered. +struct trackHubGenome *hubGenome = trackHubDatabase(db) ? trackHubGetGenome(db) : NULL; +struct trackDb *hubTdbList = (hubGenome != NULL) ? trackHubAddTracksGenome(hubGenome) : NULL; int i; for (i = 0; i < ArraySize(geneTrackPrefs); i++) { - struct trackDb *tdb = hTrackDbForTrack(db, geneTrackPrefs[i]); + struct trackDb *tdb; + if (hubTdbList != NULL) + tdb = findTdbByBareName(hubTdbList, geneTrackPrefs[i]); + else + tdb = hTrackDbForTrack(db, geneTrackPrefs[i]); if (tdb != NULL) return tdb; } return NULL; }