void loadTagHash(struct hash *h, struct sageCounts *scList) { struct sageCounts *sc =NULL; int count=0; for(sc=scList;sc!=NULL;sc=sc->next) { if(count++ % 10000 == 0) { putTic(); } hashAddUnique(h,sc->tag,sc); } printf("\tDone.\n"); }
void createSageSummary(char *tagList, char *tagCounts, char *outFile) { struct sage *sgList = NULL,*sg = NULL; struct sageCounts *scList = NULL, *sc; struct hash *scHash = newHash(16); FILE *out = mustOpen(outFile,"w"); int i,count=0; printf("Loading tagCounts.\n"); scList = sageCountsLoadAll(tagCounts); printf("Loading SageTags.\n"); sgList = loadSageTags(tagList, scList->numExps); printf("Inserting scList into hash, %d elements.\n",slCount(scList)); loadTagHash(scHash,scList); printf("Calculating avgs and stdevs"); fflush(stdout); for(sg=sgList; sg != NULL; sg=sg->next) { if(count++ %1000 == 0) putTic(); scList = NULL; for(i=0;i<sg->numTags;i++) { sc = hashFindVal(scHash,sg->tags[i]); if(sc != NULL) slSafeAddHead(&scList,sc); } for(i=0; i<sg->numExps; i++) { sg->exps[i] =i; if(slCount(scList) > 3) { #ifdef BOGUS int q = 2+2; #endif } sg->meds[i] = scMedian(scList,i); sg->aves[i] = scAverage(scList, i); sg->stdevs[i] = scStdev(scList, i, sg->aves[i]); } sageTabOut(sg,out); fflush(out); } carefulClose(&out); printf("\tDone.\n"); }
void runSamples(char *goodFile, char *badFile, char *newDb, char *oldDb, int numToRun) /* run a bunch of tests */ { int i,j,k; FILE *good = mustOpen(goodFile, "w"); FILE *bad = mustOpen(badFile, "w"); char *tmp = NULL; int numGood=0, numBad=0, tooManyNs=0; boolean success = FALSE; struct dnaSeq *seq = NULL; printf("Running Tests\t"); for(i=0;i<numToRun;i++) { struct coordConvRep *ccr = NULL; struct coordConv *cc = NULL; if(!(i%10)) putTic(); cc = getRandomCoord(oldDb); seq = hDnaFromSeq(cc->chrom, cc->chromStart, cc->chromEnd, dnaLower); if(!(strstr(seq->dna, "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"))) { chrom = cc->chrom; chromStart = cc->chromStart; chromEnd = cc->chromEnd; success = convertCoordinates(good, bad, printReport, printReport); if(success) numGood++; else numBad++; } else { tooManyNs++; } freeDnaSeq(&seq); coordConvFree(&cc); } carefulClose(&good); carefulClose(&bad); printf("\tDone.\n"); printf("Out of %d attempts got %d 'succesfully converted' and %d 'had problems', %d had too many N's\n", (numGood + numBad), numGood, numBad, tooManyNs); printf("After checking got %d of %d correctly called and %d incorrectly called.\n", hgTestCorrect, hgTestCorrect+hgTestWrong, hgTestWrong); }