b02d20dede590203b6ecca10be473e7e22179a51 braney Thu Jan 12 13:12:53 2023 -0800 deal with some weird edge cases in hub that Hiram's hub illicit. Don't read a single trackDb.txt file more than once even if it's referenced from mulitple hubs. Also, only the first time a genome is defined does it get to populate its own groups. Subsequent examples get put into their own group, just like a normal track hub does. diff --git src/hg/hubApi/apiUtils.c src/hg/hubApi/apiUtils.c index 7b7ebfd..97400d4 100644 --- src/hg/hubApi/apiUtils.c +++ src/hg/hubApi/apiUtils.c @@ -295,31 +295,32 @@ return -1; else if (dif == 0.0) return strcasecmp(a->shortLabel, b->shortLabel); else return 1; } struct trackDb *obtainTdb(struct trackHubGenome *genome, char *db) /* return a full trackDb fiven the hub genome pointer, or ucsc database name */ { struct trackDb *tdb = NULL; if (db) tdb = hTrackDb(db); else { - tdb = trackHubTracksForGenome(genome->trackHub, genome, NULL); + boolean foundFirstGenome = FALSE; + tdb = trackHubTracksForGenome(genome->trackHub, genome, NULL, &foundFirstGenome); tdb = trackDbLinkUpGenerations(tdb); tdb = trackDbPolishAfterLinkup(tdb, genome->name); } slSort(tdb, trackDbTrackCmp); // slSort(&tdb, trackDbCmp); return tdb; } struct trackDb *findTrackDb(char *track, struct trackDb *tdb) /* search tdb structure for specific track, recursion on subtracks */ { struct trackDb *trackFound = NULL; for (trackFound = tdb; trackFound; trackFound = trackFound->next) {