e341c576504ab46af7ad7d7a28cd4f81369e0fea braney Mon Sep 1 11:18:57 2025 -0700 working to get quickLifts from genark hubs to work diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index d4767d51191..6eaeadf898e 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -146,30 +146,33 @@ return (struct trackHubGenome *)hel->val; } struct trackHubGenome *trackHubGetGenome(char *database) /* get genome structure for an assembly in a trackHub */ { if (hubAssemblyHash == NULL) errAbort("An error occurred while adding the custom track. This may be due to a mismatch" " between the db= parameter and the genome selected at the top of the page." " If you are having trouble resolving this error please contact us at" " genome-www@soe.ucsc.edu."); struct hashEl *hel = hashLookup(hubAssemblyHash, database); +if (hel == NULL) + hel = hashLookup(hubAssemblyUndecoratedHash, database); + if (hel == NULL) return NULL; return (struct trackHubGenome *)hel->val; } boolean trackHubDatabase(char *database) /* Is this an assembly from an Assembly Data hub? */ { if (hubAssemblyHash == NULL) return FALSE; return trackHubGetGenome(database) != NULL; } @@ -1628,34 +1631,34 @@ dyStringPrintf(dy, "parent %s\n", tdb->parent->track); while ((hel = hashNext(&cookie)) != NULL) { if (sameString(hel->name, "parent")) { char buffer[1024]; safef(buffer, sizeof buffer, "%s_sel", tdb->track); char *cartSelected = cartOptionalString(cart, tdb->track); if (cartSelected != NULL) { char *str = "off"; if (sameString(cartSelected, "1")) str = "on"; - dyStringPrintf(dy, "parent %s %s\n", tdb->parent->track, str); + dyStringPrintf(dy, "parent %s %s\n", trackHubSkipHubName(tdb->parent->track), str); } else - dyStringPrintf(dy, "%s %s\n", hel->name, ((char *)hel->val)); + dyStringPrintf(dy, "%s %s\n", hel->name, trackHubSkipHubName(((char *)hel->val))); } else if (sameString(hel->name, "html")) dyStringPrintf(dy, "%s %s\n", hel->name, trackHubSkipHubName((char *)hel->val)); else if (differentString(hel->name, "track") && differentString(hel->name, "visibility")) dyStringPrintf(dy, "%s %s\n", hel->name, ((char *)hel->val)); } if (tdb->subtracks) { for (tdb = tdb->subtracks; tdb; tdb = tdb->next) { char *track = trackHubSkipHubName(tdb->track); dyStringPrintf(dy, "\ntrack %s\nquickLifted on\n", track); if (!isVetted(track)) dyStringPrintf(dy, "avoidHandler on\n"); @@ -1681,31 +1684,31 @@ { dyStringPrintf(dy, "superTrack on show\n"); } if (!isVetted(track)) dyStringPrintf(dy, "avoidHandler on\n"); dumpTdbAndChildren(cart, dy, tdb); return dy; } static boolean validateOneTdb(char *db, struct trackDb *tdb, struct trackDb **badList) /* Make sure the tdb is a track type we grok. */ { -if (sameString("cytoBandIdeo", tdb->track) || +if (sameString("cytoBandIdeo", trackHubSkipHubName(tdb->track)) || !( startsWith("bigBed", tdb->type) || \ startsWith("bigWig", tdb->type) || \ startsWith("bigDbSnp", tdb->type) || \ startsWith("bigGenePred", tdb->type) || \ startsWith("gvf", tdb->type) || \ startsWith("genePred", tdb->type) || \ startsWith("narrowPeak", tdb->type) || \ startsWith("bigLolly", tdb->type) || \ sameString("bed", tdb->type) || startsWith("bed ", tdb->type))) { slAddHead(badList, tdb); return FALSE; } @@ -1883,31 +1886,31 @@ struct grp *grp; for(grp = grpList; grp; grp = grp->next) hashAdd(groupHash, grp->name, grp); for(tdb = tdbList; tdb; tdb = tdb->next) { grp = hashFindVal(groupHash, tdb->grp); tdb->groupPriority = grp->priority; } slSort(&tdbList, cmpPriority); char *filename = getHubName(cart, db); FILE *f = mustOpen(filename, "w"); chmod(filename, 0666); -outHubHeader(f, db); +outHubHeader(f, trackHubSkipHubName(db)); walkTree(f, db, cart, tdbList, visDy, badList); fclose(f); return cloneString(filename); } struct grp *trackHubGetGrps() /* Get the groups defined by attached track hubs. */ { return trackHubGrps; } struct trackDb *trackHubAddTracksGenome(struct trackHubGenome *hubGenome) /* Load up stuff from data hub and return list. */