2fd02c5e1ce1bb989549b2e0069270ca8907efad braney Thu Apr 10 15:03:42 2025 -0700 add bigLolly to quickLift support diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index fed10068a84..8ce0a440f5d 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -1508,51 +1508,60 @@ trashDirDateFile(&hubTn, "quickLift", "hub", ".txt"); hubName = cloneString(hubTn.forCgi); cartSetString(cart, buffer, hubName); } FILE *f = mustOpen(hubName, "w"); outHubHeader(f, db); fclose(f); if (fd >= 0) close(fd); return hubName; } +static boolean isVetted(char *track) +/* Is this a track that's been tested with quickLift? If not we don't want to do the special name handling on the track. */ +{ +return sameString(track, "decipherSnvs")|| sameString(track, "omimLocation") || sameString(track, "omimAvSnp")|| sameString(track, "ncbiRefSeq")|| sameString(track, "clinvar")|| sameString(track, "clinvarSubLolly"); +} + static void dumpTdbAndChildren(struct dyString *dy, struct trackDb *tdb) /* Put a trackDb entry into a dyString, stepping up the tree for some variables. */ { struct hashCookie cookie = hashFirst(tdb->settingsHash); struct hashEl *hel; while ((hel = hashNext(&cookie)) != NULL) { if (differentString(hel->name, "track")) { if (sameString(hel->name, "parent") || sameString(hel->name, "html")) dyStringPrintf(dy, "%s %s\n", hel->name, trackHubSkipHubName((char *)hel->val)); else dyStringPrintf(dy, "%s %s\n", hel->name, ((char *)hel->val)); } } if (tdb->subtracks) { for (tdb = tdb->subtracks; tdb; tdb = tdb->next) { - dyStringPrintf(dy, "\ntrack %s\nquickLifted on\navoidHandler on\n", trackHubSkipHubName(tdb->track)); + char *track = trackHubSkipHubName(tdb->track); + dyStringPrintf(dy, "\ntrack %s\nquickLifted on\n", track); + if (!isVetted(track)) + dyStringPrintf(dy, "avoidHandler on\n"); dumpTdbAndChildren(dy, tdb); } } } static bool subtrackEnabledInTdb(struct trackDb *subTdb) /* Return TRUE unless the subtrack was declared with "subTrack ... off". */ { bool enabled = TRUE; char *words[2]; char *setting; if ((setting = trackDbLocalSetting(subTdb, "parent")) != NULL) { if (chopLine(cloneString(setting), words) >= 2) if (sameString(words[1], "off")) @@ -1599,47 +1608,48 @@ return vis; } struct dyString *trackDbString(struct trackDb *tdb) /* Convert a trackDb entry into a dyString. */ { struct dyString *dy; // add a note that the name based handler shouldn't be used on this track // add a note that this is a quickLifted track so the browser will accept tracks that aren't big* dy = dyStringNew(200); char *track = trackHubSkipHubName(tdb->track); dyStringPrintf(dy, "track %s\nquickLifted on\n", track); -if (!(sameString(track, "decipherSnvs")|| sameString(track, "omimLocation") || sameString(track, "omimAvSnp")|| sameString(track, "ncbiRefSeq"))) +if (!isVetted(track)) dyStringPrintf(dy, "avoidHandler on\n"); dumpTdbAndChildren(dy, tdb); return dy; } static boolean validateOneTdb(char *db, struct trackDb *tdb) /* Make sure the tdb is a track type we grok. */ { if (!( 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("bigLolly", tdb->type) || \ startsWith("bed ", tdb->type))) { //printf("%s not included: bad type %s\n",tdb->track,tdb->type); return FALSE; } // make sure we have a bigDataUrl if (startsWith("bigBed", tdb->type) || \ startsWith("bigWig", tdb->type)) { char *fileName = cloneString(trackDbSetting(tdb, "bigDataUrl")); if (fileName == NULL) { struct sqlConnection *conn = hAllocConnTrack(db, tdb);