Index: src/utils/bigWigInfo/bigWigInfo.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/bigWigInfo/bigWigInfo.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -B -U 1000000 -r1.2 -r1.3
--- src/utils/bigWigInfo/bigWigInfo.c	8 Sep 2009 19:50:24 -0000	1.2
+++ src/utils/bigWigInfo/bigWigInfo.c	5 Nov 2009 19:48:21 -0000	1.3
@@ -1,55 +1,65 @@
 /* bigWigInfo - Print out information about bigWig file.. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "localmem.h"
 #include "udc.h"
 #include "bigWig.h"
+#include "hmmstats.h"
 
 
 static char const rcsid[] = "$Id$";
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "bigWigInfo - Print out information about bigWig file.\n"
   "usage:\n"
   "   bigWigInfo file.bw\n"
   "options:\n"
   "   -udcDir=/dir/to/cache - place to put cache for remote bigBed/bigWigs\n"
+  "   -chroms - list all chromosomes and their sizes\n"
   );
 }
 
 static struct optionSpec options[] = {
    {"udcDir", OPTION_STRING},
+   {"chroms", OPTION_BOOLEAN},
    {NULL, 0},
 };
 
 void bigWigInfo(char *fileName)
 /* bigWigInfo - Print out information about bigWig file.. */
 {
 struct bbiFile *bwf = bigWigFileOpen(fileName);
 printf("version: %d\n", bwf->version);
 printf("isSwapped: %d\n", bwf->isSwapped);
 printf("zoomLevels: %d\n", bwf->zoomLevels);
 struct bbiZoomLevel *zoom;
 for (zoom = bwf->levelList; zoom != NULL; zoom = zoom->next)
     printf("\t%d\n", zoom->reductionLevel);
 struct bbiChromInfo *chrom, *chromList = bbiChromList(bwf);
 printf("chromCount: %d\n", slCount(chromList));
-for (chrom=chromList; chrom != NULL; chrom = chrom->next)
+if (optionExists("chroms"))
+    for (chrom=chromList; chrom != NULL; chrom = chrom->next)
     printf("\t%s %d %d\n", chrom->name, chrom->id, chrom->size);
+struct bbiSummaryElement sum = bbiTotalSummary(bwf);
+printf("basesCovered: %lld\n", sum.validCount);
+printf("mean: %f\n", sum.sumData/sum.validCount);
+printf("min: %f\n", sum.minVal);
+printf("max: %f\n", sum.maxVal);
+printf("std: %f\n", calcStdFromSums(sum.sumData, sum.sumSquares, sum.validCount));
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 udcSetDefaultDir(optionVal("udcDir", udcDefaultDir()));
 if (argc != 2)
     usage();
 bigWigInfo(argv[1]);
 return 0;
 }

