b3dbed770983d0b61bbb6fd12735e38a10cd7166
kent
  Thu Jun 24 18:26:57 2010 -0700
Getting list of tracks that are being clustered from a database table (defined by an inputTrackTable trackDb tag) rather than trying to figure them out from the trackDb subGroup data.  This fixes a problem that sometimes caused tracks that should have appeared in the details page to be missed after the HudsonAlpha data integration into the wgEncodeRegTfbs track.
diff --git src/hg/hgc/peakClusters.c src/hg/hgc/peakClusters.c
index da97737..7208d67 100644
--- src/hg/hgc/peakClusters.c
+++ src/hg/hgc/peakClusters.c
@@ -292,18 +292,15 @@
     printf("<B>Cluster Score (out of 1000):</B> %d<BR>\n", cluster->score);
     printPos(cluster->chrom, cluster->chromStart, cluster->chromEnd, NULL, TRUE, NULL);
 
+#ifdef OLD
     /* Get list of tracks we'll look through for input. */
-    char *inputTracks = trackDbRequiredSetting(tdb, "inputTracks");
     struct slName *inTrackList = stringToSlNames(inputTracks);
 
     /* Get list of subgroups to select on */
     char *inputTracksSubgroupSelect = trackDbRequiredSetting(tdb, "inputTracksSubgroupSelect");
     struct slPair *selGroupList = slPairFromString(inputTracksSubgroupSelect);
 
-    /* Get list of subgroups to display */
-    char *inputTracksSubgroupDisplay = trackDbRequiredSetting(tdb, "inputTracksSubgroupDisplay");
-    struct slName *displayGroupList = stringToSlNames(inputTracksSubgroupDisplay);
-
+    /* Add factorId as selection criteria*/
     /* Figure out factor ID and add it as selection criteria*/
     char *factorId = findFactorId(inTrackList, cluster->name);
     struct slPair *factorSel = slPairNew("factor", cloneString(factorId));
@@ -312,6 +309,17 @@
     /* Get list of tracks that match criteria. */
     struct slName *matchTrackList = encodeFindMatchingSubtracks(inTrackList, selGroupList);
     struct slName *matchTrack;
+#endif /* OLD */
+
+    /* Get list of tracks we'll look through for input. */
+    char *inputTrackTable = trackDbRequiredSetting(tdb, "inputTrackTable");
+    safef(query, sizeof(query), "select tableName from %s where factor='%s' order by source", inputTrackTable, cluster->name);
+    struct slName *matchTrackList = sqlQuickList(conn, query);
+    struct slName *matchTrack;
+
+    /* Get list of subgroups to display */
+    char *inputTracksSubgroupDisplay = trackDbRequiredSetting(tdb, "inputTracksSubgroupDisplay");
+    struct slName *displayGroupList = stringToSlNames(inputTracksSubgroupDisplay);
 
     /* In a new section put up list of hits. */
     webNewSection("List of %s Items in Cluster", cluster->name);