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;