6f5408b67c1b4534efa4d795bc3776c6c667d586 braney Fri Dec 22 18:29:07 2017 -0800 implement missing data handling in mathWigs diff --git src/hg/hgTracks/bigWigTrack.c src/hg/hgTracks/bigWigTrack.c index 8c9ae03..b1b2d2e 100644 --- src/hg/hgTracks/bigWigTrack.c +++ src/hg/hgTracks/bigWigTrack.c @@ -212,34 +212,44 @@ static void dataToPixels(double *data, struct preDrawContainer *pre) /* Sample data into pixels. */ { unsigned size = winEnd - winStart; double dataPerPixel = size / (double) insideWidth; if (dataPerPixel <= 1.0) dataToPixelsUp(data, pre); else dataToPixelsDown(data, pre); } static void mathWigLoadItems(struct track *tg) /* Fill up tg->items with bedGraphItems derived from a bigWig file */ { +char *missingSetting; +boolean missingIsZero = FALSE; +if ((missingSetting = trackDbSetting(tg->tdb, "missingMethod")) != NULL) + { + missingIsZero = sameString(missingSetting, "missing"); + } char *equation = cloneString(trackDbSetting(tg->tdb, "mathDataUrl")); struct preDrawContainer *pre = tg->preDrawContainer = initPreDrawContainer(insideWidth); -double *data = mathWigGetValues(equation, chromName, winStart, winEnd); +double *data; +if (missingIsZero) + data = mathWigGetValuesMissing(equation, chromName, winStart, winEnd); +else + data = mathWigGetValues(equation, chromName, winStart, winEnd); dataToPixels(data, pre); free(data); } static void bigWigLoadItems(struct track *tg) /* Fill up tg->items with bedGraphItems derived from a bigWig file */ { char *extTableString = trackDbSetting(tg->tdb, "extTable"); if (tg->bbiFile == NULL) { /* Figure out bigWig file name. */ if (tg->parallelLoading) // do not use mysql during parallel-fetch {