aa8e1b3f010a3baa78d4d2a8c331ebf4aaa2d3aa
braney
  Sun Apr 7 16:53:25 2019 -0700
make bigLolly filtering more efficient

diff --git src/hg/hgTracks/lolly.c src/hg/hgTracks/lolly.c
index 2269d35..895599d 100644
--- src/hg/hgTracks/lolly.c
+++ src/hg/hgTracks/lolly.c
@@ -134,36 +134,36 @@
 char *bedRow[bbi->fieldCount];
 char startBuf[16], endBuf[16];
 struct lolly *popList = NULL, *pop;
 unsigned lollyField = 5;
 struct lollyCartOptions *lollyCart = tg->lollyCart;
 char *setting = trackDbSetting(tg->tdb, "lollyField");
 if (setting != NULL)
     lollyField = atoi(setting);
 double minVal = DBL_MAX, maxVal = -DBL_MAX;
 
 
 double sumData = 0.0, sumSquares = 0.0;
 unsigned count = 0;
 
 int trackHeight = tg->lollyCart->height;
+struct bigBedFilter *filters = bigBedBuildFilters(cart, bbi, tg->tdb);
                     
 for (bb = bbList; bb != NULL; bb = bb->next)
     {
     bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow));
 
-    struct bigBedFilter *filters = bigBedBuildFilters(cart, bbi, tg->tdb);
     if (!bigBedFilterInterval(bedRow, filters))
         continue;
 
     double val = atof(bedRow[lollyField - 1]);
     if (!((lollyCart->autoScale == wiggleScaleAuto) ||  ((val >= lollyCart->minY) && (val <= lollyCart->maxY) )))
         continue;
 
     AllocVar(pop);
     slAddHead(&popList, pop);
     pop->val = val;
     pop->start = atoi(bedRow[1]);
     pop->end = atoi(bedRow[2]);
     pop->name = cloneString(bedRow[3]);
     count++;
     sumData += val;