6cf742bbfef254c145fc44b150385d6b379aa8fd braney Mon Jul 14 16:06:08 2014 -0700 refactor some source so not every makefile has to include HALLIBS diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index fc98550..f123b0d 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -896,111 +896,30 @@ * and store in tdb->html. */ { addOneDescription(trackDbFile, tdb); if (isEmpty(tdb->html)) { struct trackDb *parent; for (parent = tdb->parent; isEmpty(tdb->html) && parent != NULL; parent = parent->parent) { addOneDescription(trackDbFile, parent); if (isNotEmpty(parent->html)) tdb->html = cloneString(parent->html); } } } -static int hubCheckTrack(struct trackHub *hub, struct trackHubGenome *genome, - struct trackDb *tdb, struct dyString *errors, FILE *searchFp) -/* Make sure that track is ok. */ -{ -int retVal = 0; -struct errCatch *errCatch = errCatchNew(); - -if (errCatchStart(errCatch)) - { - if (searchFp != NULL) - { - addOneDescription(genome->trackDbFile, tdb); - if (tdb->html != NULL) - { - char *stripHtml =htmlTextStripTags(tdb->html); - strSwapChar(stripHtml, '\n', ' '); - strSwapChar(stripHtml, '\t', ' '); - strSwapChar(stripHtml, '\r', ' '); - strSwapChar(stripHtml, ')', ' '); - strSwapChar(stripHtml, '(', ' '); - strSwapChar(stripHtml, '[', ' '); - strSwapChar(stripHtml, ']', ' '); - fprintf(searchFp, "%s.%s\t%s\t%s\t%s\n",hub->url, tdb->track, - tdb->shortLabel, tdb->longLabel, stripHtml); - } - else - fprintf(searchFp, "%s.%s\t%s\t%s\n",hub->url, tdb->track, - tdb->shortLabel, tdb->longLabel); - } - else - { - char *relativeUrl = trackDbSetting(tdb, "bigDataUrl"); - char *type = trackDbRequiredSetting(tdb, "type"); - - if (relativeUrl != NULL) - { - char *bigDataUrl = trackHubRelativeUrl(genome->trackDbFile, relativeUrl); - verbose(2, "checking %s.%s type %s at %s\n", genome->name, tdb->track, type, bigDataUrl); - if (startsWithWord("bigWig", type)) - { - /* Just open and close to verify file exists and is correct type. */ - struct bbiFile *bbi = bigWigFileOpen(bigDataUrl); - bbiFileClose(&bbi); - } - else if (startsWithWord("bigBed", type)) - { - /* Just open and close to verify file exists and is correct type. */ - struct bbiFile *bbi = bigBedFileOpen(bigDataUrl); - bbiFileClose(&bbi); - } - else if (startsWithWord("vcfTabix", type)) - { - /* Just open and close to verify file exists and is correct type. */ - struct vcfFile *vcf = vcfTabixFileMayOpen(bigDataUrl, NULL, 0, 0, 1, 1); - if (vcf == NULL) - // Warnings already indicated whether the tabix file is missing etc. - errAbort("Couldn't open %s and/or its tabix index (.tbi) file. " - "See http://genome.ucsc.edu/goldenPath/help/vcf.html", - bigDataUrl); - vcfFileFree(&vcf); - } - else if (startsWithWord("bam", type)) - { - bamFileAndIndexMustExist(bigDataUrl); - } - else - errAbort("unrecognized type %s in genome %s track %s", type, genome->name, tdb->track); - freez(&bigDataUrl); - } - } - } -errCatchEnd(errCatch); -if (errCatch->gotError) - { - retVal = 1; - dyStringPrintf(errors, "%s", errCatch->message->string); - } -errCatchFree(&errCatch); - -return retVal; -} void trackHubFixName(char *name) /* Change all characters other than alphanumeric, dash, and underbar * to underbar. */ { if (name == NULL) return; char *in = name; char c; for(; (c = *in) != 0; in++) { if (c == ' ') break; @@ -1042,126 +961,31 @@ struct hash *nameHash = hashNew(5); for (tdb = tdbList; tdb != NULL; tdb = next) { if (tdb->parent != NULL) polishOneTrack(hub, tdb->parent, nameHash); next = tdb->next; polishOneTrack(hub, tdb, nameHash); if (tdb->subtracks != NULL) { trackHubPolishTrackNames(hub, tdb->subtracks); } } } -static int hubCheckGenome(struct trackHub *hub, struct trackHubGenome *genome, - struct dyString *errors, boolean checkTracks, FILE *searchFp) -/* Check out genome within hub. */ -{ -struct errCatch *errCatch = errCatchNew(); -struct trackDb *tdbList = NULL; -int retVal = 0; - -if (errCatchStart(errCatch)) - { - tdbList = trackHubTracksForGenome(hub, genome); - trackHubPolishTrackNames(hub, tdbList); - } -errCatchEnd(errCatch); - -if (errCatch->gotError) - { - retVal = 1; - dyStringPrintf(errors, "%s", errCatch->message->string); - } -errCatchFree(&errCatch); - -if (!checkTracks) - return retVal; - -struct trackDb *tdb; -for (tdb = tdbList; tdb != NULL; tdb = tdb->next) - retVal |= hubCheckTrack(hub, genome, tdb, errors, searchFp); -verbose(2, "%d tracks in %s\n", slCount(tdbList), genome->name); - -return retVal; -} - -int trackHubCheck(char *hubUrl, struct dyString *errors, - boolean checkTracks, FILE *searchFp) -/* hubCheck - Check a track data hub for integrity. Put errors in dyString. - * return 0 if hub has no errors, 1 otherwise - * if checkTracks is TRUE, individual tracks are checked - */ - -{ -struct errCatch *errCatch = errCatchNew(); -struct trackHub *hub = NULL; -int retVal = 0; - -if (errCatchStart(errCatch)) - hub = trackHubOpen(hubUrl, "hub_0"); -errCatchEnd(errCatch); - -if (errCatch->gotError) - { - retVal = 1; - dyStringPrintf(errors, "%s", errCatch->message->string); - } -errCatchFree(&errCatch); -if (hub == NULL) - return 1; - -verbose(2, "hub %s\nshortLabel %s\nlongLabel %s\n", hubUrl, hub->shortLabel, hub->longLabel); -verbose(2, "%s has %d elements\n", hub->genomesFile, slCount(hub->genomeList)); - -if (searchFp != NULL) - { - struct trackHubGenome *genomeList = hub->genomeList; - - for(; genomeList ; genomeList = genomeList->next) - fprintf(searchFp, "%s\t%s\n",hub->url, trackHubSkipHubName(genomeList->name)); - fprintf(searchFp, "%s\t%s\t%s\n",hub->url, hub->shortLabel, hub->longLabel); - - if (hub->descriptionUrl != NULL) - { - char *html = netReadTextFileIfExists(hub->descriptionUrl); - char *stripHtml =htmlTextStripTags(html); - strSwapChar(stripHtml, '\n', ' '); - strSwapChar(stripHtml, '\t', ' '); - strSwapChar(stripHtml, '\015', ' '); - strSwapChar(stripHtml, ')', ' '); - strSwapChar(stripHtml, '(', ' '); - strSwapChar(stripHtml, '[', ' '); - strSwapChar(stripHtml, ']', ' '); - fprintf(searchFp, "%s\t%s\n",hub->url, stripHtml); - } - - return 0; - } - -struct trackHubGenome *genome; -for (genome = hub->genomeList; genome != NULL; genome = genome->next) - { - retVal |= hubCheckGenome(hub, genome, errors, checkTracks, NULL); - } -trackHubClose(&hub); - -return retVal; -} void trackHubFindPos(char *db, char *term, struct hgPositions *hgp) /* Look for term in track hubs. Update hgp if found */ { struct trackDb *tdbList = NULL; if (trackHubDatabase(db)) { struct trackHubGenome *genome = trackHubGetGenome(db); tdbList = trackHubTracksForGenome(genome->trackHub, genome); } else tdbList = hubCollectTracks(db, NULL);