src/hg/hgTracks/simpleTracks.c 1.63
1.63 2009/02/23 22:57:30 angie
Added dgvMethods: filter items by publication reference.
Index: src/hg/hgTracks/simpleTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/simpleTracks.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -b -B -U 4 -r1.62 -r1.63
--- src/hg/hgTracks/simpleTracks.c 18 Feb 2009 23:58:35 -0000 1.62
+++ src/hg/hgTracks/simpleTracks.c 23 Feb 2009 22:57:30 -0000 1.63
@@ -9328,8 +9328,50 @@
linkedFeaturesMethods(tg);
tg->itemName = kiddEichlerItemName;
}
+boolean dgvFilter(struct track *tg, void *item)
+/* For use with filterItems -- return TRUE if item's PubMed ID is in the list
+ * specified by the user. */
+{
+static struct slName *filterPmIds = NULL;
+struct linkedFeatures *lf = item;
+struct sqlConnection *conn = hAllocConn(database);
+char query[512];
+safef(query, sizeof(query), "select pubmedId from %s where name = '%s'",
+ tg->tdb->tableName, lf->name);
+char buf[32];
+char *pmId = sqlQuickQuery(conn, query, buf, sizeof(buf));
+hFreeConn(&conn);
+if (filterPmIds == NULL)
+ {
+ char cartVarName[256];
+ safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterPmId", tg->tdb->tableName);
+ filterPmIds = cartOptionalSlNameList(cart, cartVarName);
+ }
+return slNameInList(filterPmIds, pmId);
+}
+
+void loadDgv(struct track *tg)
+/* Load Database of Genomic Variants items, filtering by pubmedId if specified. */
+{
+loadBed9(tg);
+char cartVarName[256];
+safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterType", tg->tdb->tableName);
+char *incOrExc = cartUsualString(cart, cartVarName, NULL);
+safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterPmId", tg->tdb->tableName);
+struct slName *filterPmIds = cartOptionalSlNameList(cart, cartVarName);
+if (isNotEmpty(incOrExc) && filterPmIds != NULL)
+ filterItems(tg, dgvFilter, incOrExc);
+}
+
+void dgvMethods(struct track *tg)
+/* Database of Genomic Variants. */
+{
+linkedFeaturesMethods(tg);
+tg->loadItems = loadDgv;
+}
+
void loadGenePred(struct track *tg)
/* Convert gene pred in window to linked feature. */
{
tg->items = lfFromGenePredInRange(tg, tg->mapName, chromName, winStart, winEnd);
@@ -10984,8 +11026,9 @@
retroRegisterTrackHandlers();
registerTrackHandler("retroposons", dbRIPMethods);
registerTrackHandler("kiddEichlerDisc", kiddEichlerMethods);
registerTrackHandler("kiddEichlerValid", kiddEichlerMethods);
+registerTrackHandler("dgv", dgvMethods);
registerTrackHandler("hapmapSnps", hapmapMethods);
registerTrackHandler("omicia", omiciaMethods);
registerTrackHandler("omimGene", omimGeneMethods);