3846f517009c43abc65d227a4695645c9b5f3e8a braney Fri Feb 15 18:31:21 2013 -0800 changes necessary to support assembly hubs (#8072) diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index 5001712..9b2ee2f 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -682,31 +682,31 @@ printf("%s:%d-%d
\n", chrom, start+1, end); /* printBand(chrom, (start + end)/2, 0, FALSE); */ printBand(chrom, start, end, FALSE); printf("Genomic Size: %d
\n", end - start); if (strand != NULL && differentString(strand,".")) printf("Strand: %s
\n", strand); else strand = "?"; if (featDna && end > start) { char *tbl = cgiUsualString("table", cgiString("g")); strand = cgiEncode(strand); printf("" "View DNA for this feature (%s/%s)
\n", hgcPathAndSettings(), start, (item != NULL ? cgiEncode(item) : ""), - chrom, start, end, strand, tbl, database, hGenome(database)); + chrom, start, end, strand, tbl, trackHubRemoveHubName(database), trackHubRemoveHubName(hGenome(database))); } } void printPosOnScaffold(char *chrom, int start, int end, char *strand) /* Print position lines referenced to scaffold. 'strand' argument may be null. */ { char *scaffoldName; int scaffoldStart, scaffoldEnd; if (!hScaffoldPos(database, chrom, start, end, &scaffoldName, &scaffoldStart, &scaffoldEnd)) { printPosOnChrom(chrom, start,end,strand, FALSE, NULL); return; } printf("Scaffold: %s
\n", scaffoldName); @@ -2876,30 +2876,32 @@ void printTrackUiLink(struct trackDb *tdb) /* Make link to hgTrackUi. */ { char *trackName = getParentTrackName(tdb); struct trackDb *parentTdb = tdb; if (!sameString(trackName, tdb->track)) parentTdb = hTrackDbForTrack(database, trackName); printf("

" "Go to %s track controls

\n", trackName, cartSidUrlString(cart), parentTdb->shortLabel); } static void printDataVersion(struct trackDb *tdb) /* If this annotation has a dataVersion trackDb setting, print it */ { +if (trackHubDatabase(database)) + return; metadataForTable(database,tdb,NULL); const char *version = metadataFindValue(tdb,"dataVersion"); if(version == NULL) version = trackDbSetting(tdb,"dataVersion"); if (version != NULL) printf("Data version: %s
\n", version); } void printDataRestrictionDate(struct trackDb *tdb) /* If this annotation has a dateUnrestricted trackDb setting, print it */ { char *restrictionDate = encodeRestrictionDateDisplay(database,tdb); if (restrictionDate != NULL) { printf("Restricted until: %s
\n", @@ -3765,34 +3767,36 @@ } else { errAbort("Unrecognized container type %s for %s", containerType, tdb->track); } } void genericClickHandlerPlus( struct trackDb *tdb, char *item, char *itemForUrl, char *plus) /* Put up generic track info, with additional text appended after item. */ { char *dupe, *type, *words[16], *headerItem; int wordCount; int start = cartInt(cart, "o"); int end = cartInt(cart, "t"); -struct sqlConnection *conn = hAllocConnTrack(database, tdb); +struct sqlConnection *conn = NULL; char *imagePath = trackDbSetting(tdb, ITEM_IMAGE_PATH); char *container = trackDbSetting(tdb, "container"); +if (!trackHubDatabase(database)) + conn = hAllocConnTrack(database, tdb); if (itemForUrl == NULL) itemForUrl = item; dupe = cloneString(tdb->type); wordCount = chopLine(dupe, words); headerItem = cloneString(item); /* Suppress printing item name in page header, as it is not informative for these types of * tracks... */ if (container == NULL && wordCount > 0) { type = words[0]; if (sameString(type, "maf") || sameString(type, "wigMaf") || sameString(type, "netAlign") || sameString(type, "encodePeak")) headerItem = NULL; else if (( sameString(type, "narrowPeak") @@ -24006,33 +24010,32 @@ char *item = cartOptionalString(cart, "i"); char *parentWigMaf = cartOptionalString(cart, "parentWigMaf"); struct trackDb *tdb = NULL; if (hIsGisaidServer()) { validateGisaidUser(cart); } /* database and organism are global variables used in many places */ getDbAndGenome(cart, &database, &genome, NULL); organism = hOrganism(database); scientificName = hScientificName(database); -setUdcCacheDir(); -dbIsFound = sqlDatabaseExists(database); +dbIsFound = trackHubDatabase(database) || sqlDatabaseExists(database); if (dbIsFound) seqName = hgOfficialChromName(database, cartString(cart, "c")); else seqName = cartString(cart, "c"); winStart = cartIntExp(cart, "l"); winEnd = cartIntExp(cart, "r"); /* Allow faked-out c=0 l=0 r=0 (e.g. for unaligned mRNAs) but not just any * old bogus position: */ if (seqName == NULL) { if (winStart != 0 || winEnd != 0) webAbort("CGI variable error", @@ -25249,19 +25252,20 @@ void cartDoMiddle(struct cart *theCart) /* Save cart and do main middle handler. */ { initOrgDbHash(); cart = theCart; doMiddle(); } char *excludeVars[] = {"hgSeq.revComp", "bool.hcg.dna.rc", "Submit", "submit", "g", "i", "aliTable", "addp", "pred", NULL}; int main(int argc, char *argv[]) { long enteredMainTime = clock1000(); pushCarefulMemHandler(LIMIT_2or6GB); cgiSpoof(&argc,argv); +setUdcCacheDir(); cartEmptyShell(cartDoMiddle, hUserCookie(), excludeVars, NULL); cgiExitTime("hgc", enteredMainTime); return 0; }