src/hg/makeDb/hgLoadWiggle/wigTableStats.sh 1.2
1.2 2009/11/25 18:01:46 hiram
Add viewLimits recommended calculation
Index: src/hg/makeDb/hgLoadWiggle/wigTableStats.sh
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgLoadWiggle/wigTableStats.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -B -U 4 -r1.1 -r1.2
--- src/hg/makeDb/hgLoadWiggle/wigTableStats.sh 22 Nov 2009 22:50:02 -0000 1.1
+++ src/hg/makeDb/hgLoadWiggle/wigTableStats.sh 25 Nov 2009 18:01:46 -0000 1.2
@@ -20,8 +20,23 @@
hgsql -N ${DB} \
-e "select lowerLimit,dataRange,validCount,sumData,sumSquares from ${T}" \
| awk '
+function abs(value) { if (value < 0) {return -value;} else {return value;} }
+function viewUpper(min, max, mean, stdDev, fiveDev, range, upper) {
+fiveDev = 5 * stdDev;
+range = abs(max-min);
+upper = mean + fiveDev;
+if (upper > max) upper = max;
+return upper;
+}
+function viewLower(min, max, mean, stdDev, fiveDev, range, lower) {
+fiveDev = 5 * stdDev;
+range = abs(max-min);
+lower = mean - fiveDev;
+if (lower < min) lower = min;
+return lower;
+}
BEGIN { lower=3.0e+100; upper=-3.0e+100; count = 0; sumData = 0.0;
sumSquares = 0.0 }
{
maximum = $1 + $2
@@ -36,9 +51,12 @@
mean = sumData / count;
var = sumSquares - (sumData*sumData)/count;
stdDev = var;
if (count > 1) { stdDev = sqrt(var/(count-1)); }
- printf "%g %g %g %d %g %g\n", lower, upper, mean, count, sumData, stdDev
+ vLower = viewLower(lower, upper, mean, stdDev);
+ vUpper = viewUpper(lower, upper, mean, stdDev);
+ printf "%g %g %g %d %g %g viewLimits=%g:%g\n",
+ lower, upper, mean, count, sumData, stdDev, vLower, vUpper
} else {
printf "empty data set\n"
}
}