src/lib/bbiRead.c 1.12

1.12 2009/08/14 20:56:48 kent
Fixing bug in coverage calcs.
Index: src/lib/bbiRead.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/bbiRead.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -b -B -U 4 -r1.11 -r1.12
--- src/lib/bbiRead.c	5 Aug 2009 23:06:27 -0000	1.11
+++ src/lib/bbiRead.c	14 Aug 2009 20:56:48 -0000	1.12
@@ -418,9 +418,9 @@
 	struct bbiInterval *intervalList, struct bbiSummaryElement *el)
 /* Update retVal with the average value if there is any data in interval.  Return number
  * of valid data bases in interval. */
 {
-bits32 validCount = 0;
+double validCount = 0;
 
 if (intervalList != NULL)
     {
     struct bbiInterval *interval;
@@ -445,15 +445,15 @@
 	    if (minVal > interval->val)
 		minVal = interval->val;
 	    }
 	}
-    el->validCount = validCount;
+    el->validCount = round(validCount);
     el->minVal = minVal;
     el->maxVal = maxVal;
     el->sumData = sumData;
     el->sumSquares = sumSquares;
     }
-return validCount;
+return round(validCount);
 }
 
 
 static boolean bbiSummaryArrayFromFull(struct bbiFile *bbi, 
@@ -539,8 +539,9 @@
 	fetchIntervals, summarySize, elements);
 if (ret)
     {
     int i;
+    double covFactor = (double)summarySize/(end - start);
     for (i=0; i<summarySize; ++i)
         {
 	struct bbiSummaryElement *el = &elements[i];
 	if (el->validCount > 0)
@@ -557,9 +558,9 @@
 		case bbiSumMin:
 		    val = el->minVal;
 		    break;
 		case bbiSumCoverage:
-		    val = (double)el->validCount/(end-start);
+		    val = covFactor*el->validCount;
 		    break;
 		default:
 		    internalErr();
 		    val = 0.0;