4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/regulate/regBedStats/regBedStats.c src/hg/regulate/regBedStats/regBedStats.c
index f0f37cc..b3ee942 100644
--- src/hg/regulate/regBedStats/regBedStats.c
+++ src/hg/regulate/regBedStats/regBedStats.c
@@ -1,111 +1,111 @@
 /* regBedStats - Go through bed files and calculate a bunch of statistics on them. */
 
 /* Copyright (C) 2011 The Regents of the University of California 
- * See README in this or parent directory for licensing information. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "hmmstats.h"
 #include "obscure.h"
 #include "sqlNum.h"
 
 
 int chromColIx = 0, startColIx=1, endColIx=2, scoreColIx=4;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "regBedStats - Go through bed files and calculate a bunch of statistics on them\n"
   "usage:\n"
   "   regBedStats fileList output\n"
   "options:\n"
   "   -chromColIx=N (default %d)\n"
   "   -startColIx=N (default %d)\n"
   "   -endColIx=N (default %d)\n"
   "   -scoreColIx=N (default %d)\n"
   , chromColIx, startColIx, endColIx, scoreColIx
   );
 }
 
 static struct optionSpec options[] = {
    {"chromColIx", OPTION_INT},
    {"startColIx", OPTION_INT},
    {"endColIx", OPTION_INT},
    {"scoreColIx", OPTION_INT},
    {NULL, 0},
 };
 
 void printStats(FILE *f, struct slDouble *list)
 /* Print out stats on list: ave +-std min 1/4 median 3/4 max */
 {
 int count = 0;
 struct slDouble *el;
 double sum=0, sumSquared=0;
 for (el = list; el != NULL; el = el->next)
     {
     sum += el->val;
     sumSquared += el->val * el->val;
     count += 1;
     }
 double ave = sum/count;
 double std = calcStdFromSums(sum, sumSquared, count);
 double minVal, q1, median, q3, maxVal;
 slDoubleBoxWhiskerCalc(list, &minVal, &q1, &median, &q3, &maxVal);
 fprintf(f, "\t%g+-%g [%g %g %g %g %g]", ave, std, minVal, q1, median, q3, maxVal);
 }
 
 void bedFileStats(char *bedFile, int colCount, FILE *f)
 /* Collect stats on sizes of things in a bed file, and scores too. */
 {
 struct lineFile *lf = lineFileOpen(bedFile, TRUE);
 struct slDouble *sizeList=NULL, *scoreList=NULL, *el;
 char *row[colCount];
 while (lineFileNextRow(lf, row, colCount))
     {
     int size = sqlUnsigned(row[endColIx]) - sqlUnsigned(row[startColIx]);
     el = slDoubleNew(size);
     slAddHead(&sizeList, el);
     double score = sqlDouble(row[scoreColIx]);
     el = slDoubleNew(score);
     slAddHead(&scoreList, el);
     }
 fprintf(f, "%s\t%d\tsize:", bedFile, slCount(scoreList));
 printStats(f, sizeList);
 fprintf(f, "\tscore:");
 printStats(f, scoreList);
 fprintf(f, "\n");
 lineFileClose(&lf);
 }
 
 void regBedStats(char *fileOfFiles, char *output)
 /* regBedStats - Go through bed files and calculate a bunch of statistics on them. */
 {
 struct slName *in, *inList = readAllLines(fileOfFiles);
 FILE *f = mustOpen(output, "w");
 int colCount = max(chromColIx, startColIx);
 colCount = max(colCount, endColIx);
 colCount = max(colCount, scoreColIx);
 colCount += 1;
 for (in = inList; in != NULL; in = in->next)
     {
     bedFileStats(in->name, colCount, f);
     }
 carefulClose(&f);
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 3)
     usage();
 chromColIx = optionInt("chromColIx", chromColIx);
 startColIx = optionInt("startColIx", startColIx);
 endColIx = optionInt("endColIx", endColIx);
 scoreColIx = optionInt("scoreColIx", scoreColIx);
 
 regBedStats(argv[1], argv[2]);
 return 0;
 }