src/hg/hgTracks/bedTrack.c 1.23

1.23 2010/01/14 22:36:30 kent
Making bigBed code in dense mode bypass the fast summary based method if a score filter is on.
Index: src/hg/hgTracks/bedTrack.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/bedTrack.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -b -B -U 4 -r1.22 -r1.23
--- src/hg/hgTracks/bedTrack.c	14 Jan 2010 07:39:20 -0000	1.22
+++ src/hg/hgTracks/bedTrack.c	14 Jan 2010 22:36:30 -0000	1.23
@@ -82,15 +82,17 @@
 
 /* Get list of items */
 if (tg->isBigBed)
     {
+    char *scoreFilter = cartOrTdbString(cart, tg->tdb, "scoreFilter", NULL);
+    if (scoreFilter != NULL || tg->visibility != tvDense)
+	{
     struct lm *lm = lmInit(0);
     struct bigBedInterval *bb, *bbList = bigBedSelectRange(conn, tg,
     							   chromName, winStart, winEnd, lm);
     char *bedRow[32];
     char startBuf[16], endBuf[16];
     int minScore = 0;
-    char *scoreFilter = cartOrTdbString(cart, tg->tdb, "scoreFilter", NULL);
     if (scoreFilter)
         minScore = atoi(scoreFilter);
 
     for (bb = bbList; bb != NULL; bb = bb->next)
@@ -101,8 +103,9 @@
 	    slAddHead(&list, bed);
 	}
     lmCleanup(&lm);
     }
+    }
 else
     {
     struct sqlResult *sr = NULL;
     /* limit to items above a specified score */
@@ -563,10 +566,12 @@
 {
 if (!tg->drawItemAt)
     errAbort("missing drawItemAt in track %s", tg->mapName);
 
-if (vis == tvDense && tg->isBigBed)
+if (vis == tvDense && canDrawBigBedDense(tg))
+    {
     bigBedDrawDense(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color);
+    }
 else
     genericDrawItems(tg, seqStart, seqEnd, hvg, xOff, yOff, width,
 	    font, color, vis);
 }