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/companion/regCompanionEntropy/regCompanionEntropy.c src/hg/regulate/companion/regCompanionEntropy/regCompanionEntropy.c index eb7cd66..1773990 100644 --- src/hg/regulate/companion/regCompanionEntropy/regCompanionEntropy.c +++ src/hg/regulate/companion/regCompanionEntropy/regCompanionEntropy.c @@ -1,94 +1,94 @@ /* regCompanionEntropy - Calculate entropy from tab-separated file with IDs in first col and expn * values in other columns. */ /* 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" void usage() /* Explain usage and exit. */ { errAbort( "regCompanionEntropy - Calculate entropy from tab-separated file with IDs in first col and expn\n" "values in other columns. Output is two column: id<tab>entropy\n" "usage:\n" " regCompanionEntropy input.tab output.tab\n" "options:\n" " -ignoreAllZero\n" ); } static struct optionSpec options[] = { {"ignoreAllZero", OPTION_BOOLEAN}, {NULL, 0}, }; void regCompanionEntropy(char *input, char *output) /* regCompanionEntropy - Calculate entropy from tab-separated file with IDs in first col and expn * values in other columns. */ { struct lineFile *lf = lineFileOpen(input, TRUE); FILE *f = mustOpen(output, "w"); char *words[256]; double vals[256], x; int wordCount; while ((wordCount = lineFileChop(lf, words)) > 0) { if (wordCount < 3) errAbort("Need at least two numbers in a line for this to work."); int i; char *id = words[0]; double sum = 0; double maxX = 0; for (i=1; i<wordCount; ++i) { vals[i-1] = x = lineFileNeedDouble(lf, words, i); if (x > maxX) maxX = x; if (x < 0) errAbort("All numbers should be positive. Got %g line %d of %s\n", x, lf->lineIx, lf->fileName); sum += x; } /* Normalize so whole row of numbers adds to 1. */ if (sum == 0) { if (optionExists("ignoreAllZero")) continue; else errAbort("Need at least one positive number in line %d of %s\n", lf->lineIx, lf->fileName); } int valCount = wordCount - 1; for (i=0; i<valCount; ++i) vals[i] /= sum; double h = 0; /* entropy */ for (i=0; i<valCount; ++i) { x = vals[i]; if (x > 0) h += x*log(x); } if (h != 0) h /= -log(2); fprintf(f, "%s\t%g\t%g\n", id, maxX, h); } carefulClose(&f); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); regCompanionEntropy(argv[1], argv[2]); return 0; }