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/affyTransciptome/normalizeSampleFile.c src/hg/affyTransciptome/normalizeSampleFile.c index 95d70b5..0d186e4 100644 --- src/hg/affyTransciptome/normalizeSampleFile.c +++ src/hg/affyTransciptome/normalizeSampleFile.c @@ -1,132 +1,132 @@ /* 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 "sample.h" void usage() { errAbort("normalizeSampleFiles - calculates average value over a series of\n" "sample files and sets the average of each sample file to the global\n" "average. Optionally will also group together samples into larger groups.\n" "usage:\n\t" "normalizeSampleFiles <minVal - int> <maxVal - int> <doNorm {TRUE,FALSE}> <files>\n"); } int countGoodSamples(struct sample *sList, int minVal, int maxVal) { struct sample *s = NULL; int goodCount = 0; int i =0; for(s = sList; s != NULL; s = s->next) { for(i=0; i< s->sampleCount; i++) { if(s->sampleHeight[i] > minVal && s->sampleHeight[i] < maxVal) goodCount++; } } return goodCount; } float calculateAverage(struct sample *sList, int minVal, int maxVal, int numSamples) { struct sample *s = NULL; float average = 0; int i =0; for(s = sList; s != NULL; s = s->next) { for(i=0; i< s->sampleCount; i++) { if(s->sampleHeight[i] > minVal && s->sampleHeight[i] < maxVal) average += (float)s->sampleHeight[i]/(float)numSamples; } } return average; } void normalizeSamples(struct sample *sList, float normVal) { struct sample *s; float sum; int i; assert(normVal); for(s = sList; s != NULL; s = s->next) { sum = 0; for(i=0; i<s->sampleCount; i++) { s->sampleHeight[i] = s->sampleHeight[i]/normVal; if(s->sampleHeight[i] < 1) s->sampleHeight[i] = 1; sum += s->sampleHeight[i]; } s->score = (int)(sum/s->sampleCount); if(s->score < 1) s->score = 1; } } void normalizeSampleFiles(int minVal, int maxVal, boolean doNorm, char *files[], int numFiles) /* Top level function to do nomalization. */ { float ave = 0; int i = 0; int numSamples = 0; char buff[10*strlen(files[0])]; struct sample *sList = NULL, *s = NULL; float normVal = 0; FILE *out = NULL; for(i=0; i<numFiles; i++) { float currentAve = 0; sList = sampleLoadAll(files[i]); numSamples = countGoodSamples(sList, minVal, maxVal); currentAve = calculateAverage(sList, minVal, maxVal, numSamples); printf("Average val for %s is %f\n", files[i], currentAve); sampleFreeList(&sList); ave += currentAve; } ave = ave/numFiles; printf("Global Average is: %f\n", ave); if(doNorm) { printf("Normalizing files."); for(i=0; i<numFiles; i++) { float currentAve = 0; fprintf(stdout, "."); fflush(stdout); sList = sampleLoadAll(files[i]); numSamples = countGoodSamples(sList, minVal, maxVal); currentAve = calculateAverage(sList, minVal, maxVal, numSamples); normVal = currentAve/ave; normalizeSamples(sList, normVal); snprintf(buff, sizeof(buff), "%s.norm", files[i]); out = mustOpen(buff, "w"); for(s=sList; s != NULL; s = s->next) sampleTabOut(s,out); carefulClose(&out); sampleFreeList(&sList); } fprintf(stdout, "\tDone.\n"); } } int main(int argc, char *argv[]) { int maxVal, minVal; boolean doNorm = FALSE; if(argc < 5) usage(); minVal = atoi(argv[1]); maxVal = atoi(argv[2]); if(sameString(argv[3], "TRUE")) doNorm = TRUE; normalizeSampleFiles(minVal, maxVal, doNorm, argv+4, argc-4); return 0; }