d3752edc12da1bf08427946150f564dbdd5d2254 angie Thu Oct 24 13:55:51 2019 -0700 bigDbSnp track handler code - initial commit. refs #23283 * dnautil: Added trimRefAltLeft to get left-justified trimming (a la VCF not HGVS). * bigBedClick: do hReplaceGbdb up front in parseDetailsTablUrls instead of waiting until endpoint. * trackDbCustom.c: consolidating type-handling for wig/bigWig vs. bigBed-based big*. diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 1d36eb8..88ea935 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -6158,59 +6158,41 @@ { tg = trackFromTrackDb(tdb); if (ct->dbTrack) tg->loadItems = wigLoadItems; else tg->loadItems = ctWigLoadItems; tg->customPt = ct; tg->nextItemButtonable = FALSE; } else if (sameString(type, "bigWig")) { tg = trackFromTrackDb(tdb); tg->bbiFile = ct->bbiFile; tg->nextItemButtonable = FALSE; } -else if (sameString(type, "bigBed")|| sameString(type, "bigGenePred") || - sameString(type, "bigNarrowPeak") || sameString(type, "bigPsl") || - sameString(type, "bigMaf")|| sameString(type, "bigChain") || - sameString(type, "bigLolly") || - sameString(type, "bigBarChart") || sameString(type, "bigInteract")) +else if (startsWith("big", type)) { struct bbiFile *bbi = ct->bbiFile; /* Find field counts, and from that revise the tdb->type to be more complete. */ char extra = (bbi->fieldCount > bbi->definedFieldCount ? '+' : '.'); char typeBuf[64]; - if (sameString(type, "bigGenePred")) - safef(typeBuf, sizeof(typeBuf), "bigGenePred"); - else if (sameString(type, "bigNarrowPeak")) - safef(typeBuf, sizeof(typeBuf), "bigNarrowPeak"); - else if (sameString(type, "bigChain")) - safef(typeBuf, sizeof(typeBuf), "bigChain"); - else if (sameString(type, "bigMaf")) - safef(typeBuf, sizeof(typeBuf), "bigMaf"); - else if (sameString(type, "bigPsl")) - safef(typeBuf, sizeof(typeBuf), "bigPsl"); - else if (sameString(type, "bigBarChart")) - safef(typeBuf, sizeof(typeBuf), "bigBarChart"); - else if (sameString(type, "bigLolly")) - safef(typeBuf, sizeof(typeBuf), "bigLolly"); - else if (sameString(type, "bigInteract")) - safef(typeBuf, sizeof(typeBuf), "bigInteract"); - else + if (startsWithWord("bigBed", type)) safef(typeBuf, sizeof(typeBuf), "bigBed %d %c", bbi->definedFieldCount, extra); + else + safecpy(typeBuf, sizeof(typeBuf), type); tdb->type = cloneString(typeBuf); /* Finish wrapping track around tdb. */ tg = trackFromTrackDb(tdb); tg->bbiFile = bbi; tg->nextItemButtonable = TRUE; } else if (sameString(type, "bedGraph")) { tg = trackFromTrackDb(tdb); tg->canPack = FALSE; tg->customPt = ct; ct->wigFile = ctFileName; tg->mapItemName = ctMapItemName; tg->nextItemButtonable = FALSE; @@ -7238,37 +7220,32 @@ lmCleanup(&lm); } struct paraFetchData { struct paraFetchData *next; struct track *track; boolean done; }; static boolean isTrackForParallelLoad(struct track *track) /* Is this a track that should be loaded in parallel ? */ { char *bdu = trackDbSetting(track->tdb, "bigDataUrl"); -return (startsWithWord("bigWig" , track->tdb->type) +return (startsWith("big", track->tdb->type) || startsWithWord("mathWig" , track->tdb->type) - || startsWithWord("bigBed" , track->tdb->type) - || startsWithWord("bigPsl" , track->tdb->type) - || startsWithWord("bigNarrowPeak" , track->tdb->type) - || startsWithWord("bigGenePred" , track->tdb->type) - || startsWithWord("bigChain" , track->tdb->type) || startsWithWord("bam" , track->tdb->type) || startsWithWord("halSnake", track->tdb->type) || startsWithWord("bigLolly", track->tdb->type) || startsWithWord("vcfTabix", track->tdb->type)) // XX code-review: shouldn't we error abort if the URL is not valid? && (bdu && isValidBigDataUrl(bdu, FALSE)) && !(containsStringNoCase(bdu, "dl.dropboxusercontent.com")) && (track->subtracks == NULL); } static void findLeavesForParallelLoad(struct track *trackList, struct paraFetchData **ppfdList) /* Find leaves of track tree that are remote network resources for parallel-fetch loading */ { struct track *track; if (!trackList)