d122fcf75362e05d6700ca95ffd5f533238814f3
max
Fri Apr 13 14:42:19 2012 -0700
removed some code criticized by hiram because it s special case handling with startswith and stringIn. still leave in the special case for Marker tracks because we will get many of them and having one rule per marker track will be very ugly. cannot do wildcard hash lookup myself, needs work in lookupTrack and also needs a wildcard-aware hash lookup function which I am not sure how to write
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 07802ad..9af5545 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -12394,31 +12394,30 @@
static struct hash* pubsLookupSequences(struct track *tg, struct sqlConnection* conn, char* articleId, bool getSnippet)
/* create a hash with a mapping annotId -> snippet or annotId -> shortSeq for an articleId*/
{
char query[LARGEBUF];
char *sequenceTable = trackDbRequiredSetting(tg->tdb, "pubsSequenceTable");
char *selectValSql = NULL;
if (getSnippet)
selectValSql = "replace(replace(snippet, \"\", \"\\n>>> \"), \"\", \" <<<\\n\")";
else
selectValSql = "concat(substr(sequence,1,4),\"...\",substr(sequence,-4))";
safef(query, sizeof(query), "SELECT annotId, %s FROM %s WHERE articleId='%s' ",
selectValSql, sequenceTable, articleId);
struct hash *seqIdHash = sqlQuickHash(conn, query);
- //freeMem(sequenceTable); // XX Why does this crash??
return seqIdHash;
}
static char *pubsArticleDispId(struct track *tg, struct sqlConnection *conn, char* articleId)
/* given an articleId, lookup author and year and create label for it */
{
char* dispLabel = NULL;
char *articleTable = pubsArticleTable(tg);
char query[LARGEBUF];
safef(query, sizeof(query), "SELECT firstAuthor, year FROM %s WHERE articleId = '%s'",
articleTable, articleId);
struct sqlResult *sr = sqlGetResult(conn, query);
if (sr!=NULL)
{
char **row = NULL;
@@ -12515,37 +12514,34 @@
return;
wordCount = chopLine(cloneString(typeLine), words);
if (wordCount <= 0)
return;
type = words[0];
#ifndef GBROWSE
if (sameWord(type, "bed"))
{
complexBedMethods(track, tdb, FALSE, wordCount, words);
/* bed.h includes genePred.h so should be able to use these trackDb
settings. */
if (trackDbSetting(track->tdb, GENEPRED_CLASS_TBL) !=NULL)
track->itemColor = genePredItemClassColor;
- // XX MaxH: this works as a temp hack, but it is not the right way to do it
- // XX should I introduce several new track types ?
- // XX or rather additional trackDb statements, one per pubs-"track type" ?
+ // FIXME: registerTrackHandler cannot do wildcards
+ // I think this is the only way to a similar behaviour
if (startsWith("pubs", track->track) && stringIn("Marker", track->track))
pubsMarkerMethods(track);
- if (startsWith("pubs", track->track) && stringIn("Blat", track->track))
- pubsBlatMethods(track);
}
/*
else if (sameWord(type, "bedLogR"))
{
wordCount++;
words[1] = "9";
complexBedMethods(track, tdb, FALSE, wordCount, words);
//track->bedSize = 10;
}
*/
else if (sameWord(type, "bigBed"))
{
bigBedMethods(track, tdb, wordCount, words);
if (trackShouldUseAjaxRetrieval(track))
track->loadItems = dontLoadItems;
@@ -12581,34 +12577,30 @@
track->loadItems = loadGenePred;
track->colorShades = NULL;
if (track->itemAttrTbl != NULL)
track->itemColor = genePredItemAttrColor;
else if (trackDbSetting(track->tdb, GENEPRED_CLASS_TBL) !=NULL)
track->itemColor = genePredItemClassColor;
}
else if (sameWord(type, "logo"))
{
logoMethods(track, tdb, wordCount, words);
}
#endif /* GBROWSE */
else if (sameWord(type, "psl"))
{
pslMethods(track, tdb, wordCount, words);
-
- // XX what is the right way to do this? new track type?
- if (trackDbSettingClosestToHome(track->tdb, "pubsArticleTable") !=NULL)
- pubsBlatPslMethods(track);
}
else if (sameWord(type, "snake"))
{
snakeMethods(track, tdb, wordCount, words);
}
else if (sameWord(type, "chain"))
{
chainMethods(track, tdb, wordCount, words);
}
else if (sameWord(type, "netAlign"))
{
netMethods(track);
}
else if (sameWord(type, "maf"))
{
@@ -13293,30 +13285,38 @@
registerTrackHandler("encode_tba23EvoFold", rnaSecStrMethods);
registerTrackHandler("encodeEvoFold", rnaSecStrMethods);
registerTrackHandler("rnafold", rnaSecStrMethods);
registerTrackHandler("mcFolds", rnaSecStrMethods);
registerTrackHandler("rnaEditFolds", rnaSecStrMethods);
registerTrackHandler("altSpliceFolds", rnaSecStrMethods);
registerTrackHandler("chimpSimpleDiff", chimpSimpleDiffMethods);
registerTrackHandler("tfbsCons", tfbsConsMethods);
registerTrackHandler("tfbsConsSites", tfbsConsSitesMethods);
registerTrackHandler("pscreen", simpleBedTriangleMethods);
registerTrackHandler("dless", dlessMethods);
registerTrackHandler("jaxAllele", jaxAlleleMethods);
registerTrackHandler("jaxPhenotype", jaxPhenotypeMethods);
registerTrackHandler("jaxAlleleLift", jaxAlleleMethods);
registerTrackHandler("jaxPhenotypeLift", jaxPhenotypeMethods);
+
+/* publications track */
+// FIXME: need a way to register based on pattern, see fillInFromType
+registerTrackHandler("pubsBlat", pubsBlatMethods);
+registerTrackHandler("pubsBlatPsl", pubsBlatPslMethods);
+registerTrackHandler("pubsDevBlat", pubsBlatMethods); // pubs testing tracks
+registerTrackHandler("pubsDevBlatPsl", pubsBlatPslMethods);
+
/* ENCODE related */
registerTrackHandlerOnFamily("wgEncodeGencode", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeSangerGencode", gencodeGeneMethods);
// one per gencode version, after V7 when it was substantially changed
// FIXME: this is hacky, need a way to register based on pattern
registerTrackHandlerOnFamily("wgEncodeGencodeV3", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV4", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV7", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV8", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV9", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV10", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV11", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV12", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV13", gencodeGeneMethods);
registerTrackHandlerOnFamily("wgEncodeGencodeV14", gencodeGeneMethods);