0b9c2a6f9930555f65104385a9edcb00147a5bc6 braney Mon Feb 3 09:31:56 2025 -0800 add support for quikLifting mySQL beds. diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 532341b4e2d..4e2b08ef161 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -966,31 +966,32 @@ if ((superTrack != NULL) && startsWith("on", superTrack)) isSuper = TRUE; if (!(trackDbSetting(tdb, "compositeTrack") || trackDbSetting(tdb, "container") || isSuper)) { errAbort("Parent track %s is not compositeTrack, container, or superTrack in hub %s genome %s", tdb->track, hub->url, genome->name); } } else { /* Check type field. */ char *type = requiredSetting(hub, genome, tdb, "type"); - if (! isCustomComposite(tdb)) + char *quickLifted = trackDbSetting(tdb, "quickLifted"); + if (! ( isCustomComposite(tdb) || (quickLifted != NULL))) { if (startsWithWord("mathWig", type) ) { requiredSetting(hub, genome, tdb, "mathDataUrl"); } else { /* RMH: Added bigRmsk to support RepeatMasker data in bigBed track hub format */ if (!(startsWithWord("wig", type)|| startsWithWord("bedGraph", type))) { if (!(startsWithWord("bigWig", type) || startsWithWord("bigBed", type) || #ifdef USE_HAL startsWithWord("pslSnake", type) || startsWithWord("halSnake", type) || @@ -1594,63 +1595,67 @@ return vis; } struct dyString *trackDbString(struct trackDb *tdb) /* Convert a trackDb entry into a dyString. */ { struct dyString *dy; struct hash *existHash = newHash(5); struct hashEl *hel; hel = hashLookup(tdb->settingsHash, "track"); if (hel == NULL) errAbort("can't find track variable in tdb"); +// add a prefix to the track name so the special cased loaders aren't used +// add a note that this is a quickLifted track so the browser will accept tracks that aren't big* dy = dyStringNew(200); -dyStringPrintf(dy, "track %s\n", trackHubSkipHubName((char *)hel->val)); +dyStringPrintf(dy, "track qlft%s\nquickLifted on\n", trackHubSkipHubName((char *)hel->val)); hashStore(existHash, "track"); dumpTdbAndParents(dy, tdb, existHash, NULL); return dy; } static void walkTree(FILE *f, struct cart *cart, struct trackDb *tdb, struct dyString *visDy) /* walk tree looking for visible tracks. */ { for(; tdb; tdb = tdb->next) { if (tdb->subtracks) walkTree(f, cart, tdb->subtracks, visDy); else { - if (!startsWith("big", tdb->type)) + if (!( startsWith("big", tdb->type) || startsWith("bed ", tdb->type))) continue; boolean isVisible = FALSE; if (tdb->parent == NULL) { char *cartVis = cartOptionalString(cart, tdb->track); if (cartVis != NULL) { tdb->visibility = hTvFromString(cartVis); } isVisible = tdb->visibility != tvHide; } else if (isParentVisible(cart, tdb) && isSubtrackVisible(cart, tdb)) { char *cartVis = cartOptionalString(cart, tdb->parent->track); + if ((cartVis == NULL) && tdb->parent->parent) + cartVis = cartOptionalString(cart, tdb->parent->parent->track); tdb->visibility = hTvFromString(cartVis); isVisible = TRUE; } if (isVisible) { dyStringPrintf(visDy, "&%s=%s", tdb->track,hStringFromTv(tdb->visibility)); //if (hashLookup(tdb->settingsHash, "customized") == NULL) { hashRemove(tdb->settingsHash, "maxHeightPixels"); hashRemove(tdb->settingsHash, "superTrack"); hashRemove(tdb->settingsHash, "subGroups"); hashRemove(tdb->settingsHash, "polished"); hashRemove(tdb->settingsHash, "noInherit"); hashRemove(tdb->settingsHash, "group");