e70152e44cc66cc599ff6b699eb8adc07f3e656a
kent
  Sat May 24 21:09:34 2014 -0700
Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment.
diff --git src/utils/bigWigToBedGraph/bigWigToBedGraph.c src/utils/bigWigToBedGraph/bigWigToBedGraph.c
index fee484a..2b38c67 100644
--- src/utils/bigWigToBedGraph/bigWigToBedGraph.c
+++ src/utils/bigWigToBedGraph/bigWigToBedGraph.c
@@ -1,106 +1,109 @@
 /* bigWigToBedGraph - Convert from bigWig to bedGraph format.. */
+
+/* Copyright (C) 2011 The Regents of the University of California 
+ * See README in this or parent directory for licensing information. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "localmem.h"
 #include "udc.h"
 #include "bigWig.h"
 #include "obscure.h"
 
 
 char *clChrom = NULL;
 int clStart = -1;
 int clEnd = -1;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "bigWigToBedGraph - Convert from bigWig to bedGraph format.\n"
   "usage:\n"
   "   bigWigToBedGraph in.bigWig out.bedGraph\n"
   "options:\n"
   "   -chrom=chr1 - if set restrict output to given chromosome\n"
   "   -start=N - if set, restrict output to only that over start\n"
   "   -end=N - if set, restict output to only that under end\n"
   "   -udcDir=/dir/to/cache - place to put cache for remote bigBed/bigWigs\n"
   );
 }
 
 static struct optionSpec options[] = {
    {"chrom", OPTION_STRING},
    {"start", OPTION_INT},
    {"end", OPTION_INT},
    {"udcDir", OPTION_STRING},
    {NULL, 0},
 };
 
 void bigWigToBedGraph(char *inFile, char *outFile)
 /* bigWigToBedGraph - Convert from bigWig to bedGraph format.. */
 {
 struct bbiFile *bwf = bigWigFileOpen(inFile);
 FILE *f = mustOpen(outFile, "w");
 struct bbiChromInfo *chrom, *chromList = bbiChromList(bwf);
 for (chrom = chromList; chrom != NULL; chrom = chrom->next)
     {
     boolean firstTime = TRUE;
     int saveStart = -1, prevEnd = -1;
     double saveVal = -1.0;
 
     if (clChrom != NULL && !sameString(clChrom, chrom->name))
         continue;
     char *chromName = chrom->name;
     struct lm *lm = lmInit(0);
     int start = 0, end = chrom->size;
     if (clStart > 0)
         start = clStart;
     if (clEnd > 0)
         end = clEnd;
     struct bbiInterval *interval, *intervalList = bigWigIntervalQuery(bwf, chromName, 
     	start, end, lm);
     for (interval = intervalList; interval != NULL; interval = interval->next)
 	{
 	if (firstTime)
 	    {
 	    saveStart = interval->start;
 	    saveVal = interval->val;
 	    firstTime = FALSE;
 	    }
 	else
 	    {
 	    if (!((prevEnd == interval->start) && (saveVal == interval->val)))
 		{
 		fprintf(f, "%s\t%u\t%u\t%g\n", chromName, saveStart, prevEnd, saveVal);
 		saveStart = interval->start;
 		saveVal = interval->val;
 		}
 
 	    }
 	prevEnd = interval->end;
 	}
     if (!firstTime)
 	fprintf(f, "%s\t%u\t%u\t%g\n", chromName, saveStart, prevEnd, saveVal);
 
     lmCleanup(&lm);
     }
 bbiChromInfoFreeList(&chromList);
 carefulClose(&f);
 bbiFileClose(&bwf);
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 clChrom = optionVal("chrom", clChrom);
 clStart = optionInt("start", clStart);
 clEnd = optionInt("end", clEnd);
 udcSetDefaultDir(optionVal("udcDir", udcDefaultDir()));
 if (argc != 3)
     usage();
 bigWigToBedGraph(argv[1], argv[2]);
 if (verboseLevel() > 1)
     printVmPeak();
 return 0;
 }