c8c7f5c3d5b590e37dfd321d99b7dd3f1baaa3c1
braney
  Tue Apr 9 13:12:00 2019 -0700
some tweaks to GDC cancer track, bigBed filters, and lollipop manual
ranges

diff --git src/hg/hgTracks/lolly.c src/hg/hgTracks/lolly.c
index 3b4c7f7..f0a5c7d 100644
--- src/hg/hgTracks/lolly.c
+++ src/hg/hgTracks/lolly.c
@@ -169,52 +169,52 @@
     slAddHead(&popList, pop);
     pop->val = val;
     pop->start = atoi(bedRow[1]);
     pop->end = atoi(bedRow[2]);
     pop->name = cloneString(bedRow[3]);
     count++;
     sumData += val;
     sumSquares += val * val;
     if (val > maxVal)
         maxVal = val;
     if (val < minVal)
         minVal = val;
     }
 
 if (count == 0)
-    tg->lollyCart->upperLimit = tg->lollyCart->lowerLimit = NAN;
-else
+    lollyCart->upperLimit = lollyCart->lowerLimit = NAN;
+else if (lollyCart->autoScale == wiggleScaleAuto)
     {
-    tg->lollyCart->upperLimit = maxVal;
-    tg->lollyCart->lowerLimit = minVal;
+    lollyCart->upperLimit = maxVal;
+    lollyCart->lowerLimit = minVal;
     }
 
-double range = maxVal - minVal;
+double range = lollyCart->upperLimit - lollyCart->lowerLimit;
 int usableHeight = trackHeight - 2 * 5 * 2; 
 for(pop = popList; pop; pop = pop->next)
     {
     pop->radius = 5;
     pop->color = MG_RED;
     if (range == 0.0)
         {
         pop->height = usableHeight ;
         pop->color = lollyPalette[0] | 0xff000000;
         }
     else
         {
-        pop->height = usableHeight * (pop->val  - minVal) / range + 5 * 2;
-        int colorIndex = 8 * (pop->val  - minVal) / range;
+        pop->height = usableHeight * (pop->val  - lollyCart->lowerLimit) / range + 5 * 2;
+        int colorIndex = 8 * (pop->val  - lollyCart->lowerLimit) / range;
         pop->color = lollyPalette[colorIndex] | 0xff000000;
         }
     }
 
 /*
 double average = sumData/count;
 double stdDev = calcStdFromSums(sumData, sumSquares, count);
 
 for(pop = popList; pop; pop = pop->next)
     {
     if (pop->val > average + stdDev / 5)
         {
         pop->color = MG_RED;
         pop->radius = 8;
         pop->height = 3 * tl.fontHeight;
@@ -248,30 +248,32 @@
 int minHeightPixels;
 int defaultHeight;  /*  pixels per item */
 int settingsDefault;
 
 cartTdbFetchMinMaxPixels(cart, tdb, MIN_HEIGHT_PER, atoi(DEFAULT_HEIGHT_PER), atoi(DEFAULT_HEIGHT_PER),
                                 &minHeightPixels, &maxHeightPixels, &settingsDefault, &defaultHeight);
 lollyCart->height = defaultHeight;
 
 lollyCart->autoScale = wigFetchAutoScaleWithCart(cart,tdb, tdb->track, NULL);
 
 double tDbMinY;     /*  data range limits from trackDb type line */
 double tDbMaxY;     /*  data range limits from trackDb type line */
 char *trackWords[8];     /*  to parse the trackDb type line  */
 int trackWordCount = 0;  /*  to parse the trackDb type line  */
 wigFetchMinMaxYWithCart(cart, tdb, tdb->track, &lollyCart->minY, &lollyCart->maxY, &tDbMinY, &tDbMaxY, trackWordCount, trackWords);
+lollyCart->upperLimit = lollyCart->maxY;
+lollyCart->lowerLimit = lollyCart->minY;
 
 return lollyCart;
 }
 
 void lollyMethods(struct track *track, struct trackDb *tdb, 
                                 int wordCount, char *words[])
 /* bigLolly track type methods */
 {
 struct lollyCartOptions *lollyCart = lollyCartOptionsNew(cart, tdb, wordCount, words);
 char *ourWords[2];
 ourWords[0] = "bigBed";
 ourWords[1] = "4";
 bigBedMethods(track, tdb,2,ourWords);
 if (tdb->visibility == tvDense)
     return;