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
 	{