src/hg/hgTracks/wigTrack.c 1.94

1.94 2009/11/06 22:27:12 braney
add transform function for wiggles
Index: src/hg/hgTracks/wigTrack.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/wigTrack.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -b -B -U 4 -r1.93 -r1.94
--- src/hg/hgTracks/wigTrack.c	18 Sep 2009 20:05:16 -0000	1.93
+++ src/hg/hgTracks/wigTrack.c	6 Nov 2009 22:27:12 -0000	1.94
@@ -564,9 +564,10 @@
 return preDraw;
 }
 
 void preDrawWindowFunction(struct preDrawElement *preDraw, int preDrawSize,
-	enum wiggleWindowingEnum windowingFunction)
+	enum wiggleWindowingEnum windowingFunction,
+	enum wiggleTransformFuncEnum transformFunc)
 /*	apply windowing function to the values in preDraw array	*/
 {
 int i;
 
@@ -597,8 +598,10 @@
 		else
 		    dataValue = preDraw[i].max;
 		break;
 	}
+	if (transformFunc == wiggleTransformFuncLog)
+	    dataValue = log(1+dataValue);
 	preDraw[i].plotValue = dataValue;
 	preDraw[i].smooth = dataValue;
 	}
     }
@@ -1048,9 +1051,10 @@
 /*	width - width of drawing window in pixels
  *	pixelsPerBase - pixels per base
  *	basesPerPixel - calculated as 1.0/pixelsPerBase
  */
-preDrawWindowFunction(preDraw, preDrawSize, wigCart->windowingFunction);
+preDrawWindowFunction(preDraw, preDrawSize, wigCart->windowingFunction, 
+	wigCart->transformFunc);
 preDrawSmoothing(preDraw, preDrawSize, wigCart->smoothingWindow);
 overallRange = preDrawLimits(preDraw, preDrawZero, width,
     &overallUpperLimit, &overallLowerLimit);
 graphRange = preDrawAutoScale(preDraw, preDrawZero, width,
@@ -1424,8 +1428,9 @@
 wigFetchYLineMarkValueWithCart(cart,tdb,tdb->tableName, &yLineMark);
 wigCart->yLineMark = yLineMark;
 wigCart->yLineOnOff = wigFetchYLineMarkWithCart(cart,tdb,tdb->tableName, (char **) NULL);
 wigCart->alwaysZero = wigFetchAlwaysZeroWithCart(cart,tdb,tdb->tableName, (char **) NULL);
+wigCart->transformFunc = wigFetchTransformFuncWithCart(cart,tdb,tdb->tableName, (char **) NULL);
 
 wigCart->maxHeight = maxHeight;
 wigCart->defaultHeight = defaultHeight;
 wigCart->minHeight = minHeight;