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;
}