5634a1ee547d0d332bfe1ec37e164bfe896d6288
hiram
  Mon Feb 8 17:23:03 2021 -0800
honor the log transform and the negate option for mouseOver values refs #26505

diff --git src/hg/hgTracks/wigTrack.c src/hg/hgTracks/wigTrack.c
index a49dea9..948baa2 100644
--- src/hg/hgTracks/wigTrack.c
+++ src/hg/hgTracks/wigTrack.c
@@ -1426,40 +1426,47 @@
 struct wigMouseOver *mouseOverData = graphPreDrawContainer(preContainer,
     preDrawZero, width, tg, hvg, xOff, yOff,
     graphUpperLimit, graphLowerLimit, graphRange, vis, wigCart);
 
 drawZeroLine(vis, wigCart->horizontalGrid,
     graphUpperLimit, graphLowerLimit,
     hvg, xOff, yOff, width, tg->lineHeight);
 
 drawArbitraryYLine(vis, (enum wiggleGridOptEnum)wigCart->yLineOnOff,
     graphUpperLimit, graphLowerLimit,
     hvg, xOff, yOff, width, tg->lineHeight, wigCart->yLineMark, graphRange,
     wigCart->yLineOnOff);
 
 if (enableMouseOver && mouseOverData)
     {
+    enum wiggleTransformFuncEnum transformFunc = wigCart->transformFunc;
+    boolean gotLog = (transformFunc == wiggleTransformFuncLog);
+
     jsonWriteObjectStart(mouseOverJson, tg->track);
     jsonWriteString(mouseOverJson, "t", tg->tdb->type);
     jsonWriteListStart(mouseOverJson, "d");
     slReverse(&mouseOverData);
     struct wigMouseOver *dataItem = mouseOverData;
     for (; dataItem; dataItem = dataItem->next)
         {
         jsonWriteObjectStart(mouseOverJson, NULL);
         jsonWriteNumber(mouseOverJson, "x1", (long long)dataItem->x1);
         jsonWriteNumber(mouseOverJson, "x2", (long long)dataItem->x2);
+	if (gotLog)
+	    dataItem->value = doTransform(dataItem->value, transformFunc);
+	if (wigCart->doNegative)
+	    dataItem->value = - dataItem->value;
         jsonWriteDouble(mouseOverJson, "v", dataItem->value);
         jsonWriteNumber(mouseOverJson, "c", dataItem->valueCount);
         jsonWriteObjectEnd(mouseOverJson);
         }
     jsonWriteListEnd(mouseOverJson);
     jsonWriteObjectEnd(mouseOverJson);
     slFreeList(&mouseOverData);
     // hidden element to pass along jsonUrl file name and also the trigger
     // that this track has data to display.
     hPrintf("<div id='mouseOver_%s' name='%s' class='hiddenText mouseOverData' jsonUrl='%s'></div>\n", tg->track, tg->track, mouseOverJsonFile->forCgi);
     }
 // Might need something like this later for other purposes
 // else if (enableMouseOver)       // system enabled, but no data for this track
 //     {
     /* signal to indicate zoom in required to see data */