2ffab4396193a716178dbf8b75c36633607d0bcb markd Sun Jun 14 14:38:26 2020 -0700 fixed typo in header diff --git src/hg/pslStats/pslStats.c src/hg/pslStats/pslStats.c index 3977aa9..f18218d 100644 --- src/hg/pslStats/pslStats.c +++ src/hg/pslStats/pslStats.c @@ -97,31 +97,31 @@ } struct sumStats /* structure to hold per-query summary statistics */ { char *qName; /* query name; string is in hash table, NULL if overall */ unsigned queryCnt; /* total number of queries, if summary */ unsigned minQSize; /* min/max/total sizes of queries */ unsigned maxQSize; bits64 totalQSize; unsigned alnCnt; /* number of alignments */ bits64 totalAlign; /* total bases aligned */ bits64 totalMatch; /* total bases matching */ bits64 totalRepMatch; /* total bases matching repeats */ float minIdent; /* min/max fraction identity */ - float maxIndent; + float maxIdent; float minQCover; /* min/max coverage of query */ float maxQCover; float minTCover; /* min/max coverage of target */ float maxTCover; float minRepMatch; /* fraction that is repeat matches */ float maxRepMatch; }; struct sumStats *sumStatsGetForQuery(struct hash *queryStatsTbl, char *qName, unsigned qSize) /* lookup a stats on query by name, creating if it doesn't exist */ { struct hashEl *hel = hashStore(queryStatsTbl, qName); struct sumStats *qs = hel->val; if (qs == NULL) @@ -239,71 +239,71 @@ else return (float)(((double)ss->totalRepMatch)/((double)ss->totalAlign)); } static void sumStatsAccumulateQuery(struct sumStats *ss, struct psl *psl) /* accumulate stats from psl into sumStats object; must be for same query */ { float ident = calcIdent(psl); float qCover = calcQCover(psl); float tCover = calcTCover(psl); float repMatch = calcRepMatch(psl); if (ss->alnCnt == 0) { ss->totalQSize = psl->qSize; ss->minQSize = ss->maxQSize = psl->qSize; - ss->minIdent = ss->maxIndent = ident; + ss->minIdent = ss->maxIdent = ident; ss->minQCover = ss->maxQCover = qCover; ss->minTCover = ss->maxTCover = tCover; ss->minRepMatch = ss->maxRepMatch = repMatch; } else { ss->minQSize = min(ss->minQSize, psl->qSize); ss->maxQSize = max(ss->maxQSize, psl->qSize); ss->minIdent = min(ss->minIdent, ident); - ss->maxIndent = max(ss->maxIndent, ident); + ss->maxIdent = max(ss->maxIdent, ident); ss->minQCover = min(ss->minQCover, qCover); ss->maxQCover = max(ss->maxQCover, qCover); ss->minTCover = min(ss->minTCover, tCover); ss->maxTCover = max(ss->maxTCover, tCover); ss->minRepMatch = min(ss->minRepMatch, repMatch); ss->maxRepMatch = max(ss->maxRepMatch, repMatch); } ss->totalAlign += calcAligned(psl); ss->totalMatch += calcMatch(psl); ss->totalRepMatch += psl->repMatch; ss->alnCnt++; } static void sumStatsSum(struct sumStats *ss, struct sumStats *ss2) /* sum a sumStats object into this object */ { if (ss->alnCnt == 0) { ss->minQSize = ss2->maxQSize; - ss->minIdent = ss2->maxIndent; + ss->minIdent = ss2->maxIdent; ss->minQCover = ss2->maxQCover; ss->minTCover = ss2->maxTCover; ss->minRepMatch = ss2->maxRepMatch; } else if (ss2->alnCnt > 0) { ss->minQSize = min(ss->minQSize, ss2->minQSize); ss->maxQSize = max(ss->maxQSize, ss2->maxQSize); ss->minIdent = min(ss->minIdent, ss2->minIdent); - ss->maxIndent = max(ss->maxIndent, ss2->maxIndent); + ss->maxIdent = max(ss->maxIdent, ss2->maxIdent); ss->minQCover = min(ss->minQCover, ss2->minQCover); ss->maxQCover = max(ss->maxQCover, ss2->maxQCover); ss->minTCover = min(ss->minTCover, ss2->minTCover); ss->maxTCover = max(ss->maxTCover, ss2->maxTCover); ss->minRepMatch = min(ss->minRepMatch, ss2->minRepMatch); ss->maxRepMatch = max(ss->maxRepMatch, ss2->maxRepMatch); } ss->queryCnt += ss2->queryCnt; ss->totalQSize += ss2->totalQSize; ss->totalAlign += ss2->totalAlign; ss->totalMatch += ss2->totalMatch; ss->totalRepMatch += ss2->totalRepMatch; ss->alnCnt += ss2->alnCnt; } @@ -342,41 +342,41 @@ fprintf(fh, alnStatsFmt, psl->qName, psl->qSize, psl->tName, psl->tStart, psl->tEnd, calcIdent(psl), calcQCover(psl), calcRepMatch(psl), calcTCover(psl)); if (querySizesTbl != NULL) querySizeCntGet(querySizesTbl, psl->qName, psl->qSize)->alnCnt++; pslFree(&psl); } lineFileClose(&pslLf); if (querySizesTbl != NULL) alignStatsOutputUnaligned(fh, querySizesTbl); carefulClose(&fh); } /* header for query statistics */ -static char *queryStatsHdr = "#qName\t" "qSize\t" "alnCnt\t" "minIdent\t" "maxIndent\t" "meanIdent\t" +static char *queryStatsHdr = "#qName\t" "qSize\t" "alnCnt\t" "minIdent\t" "maxIdent\t" "meanIdent\t" "minQCover\t" "maxQCover\t" "meanQCover\t" "minRepMatch\t" "maxRepMatch\t" "meanRepMatch\t" "minTCover\t" "maxTCover\n"; static void queryStatsOutput(FILE *fh, struct sumStats *qs) /* output statistic on a query */ { fprintf(fh, "%s\t%d\t%d\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\n", qs->qName, qs->minQSize, qs->alnCnt, - qs->minIdent, qs->maxIndent, calcMeanIdent(qs), + qs->minIdent, qs->maxIdent, calcMeanIdent(qs), qs->minQCover, qs->maxQCover, calcMeanQCover(qs), qs->minRepMatch, qs->maxRepMatch, calcMeanRepMatch(qs), qs->minTCover, qs->maxTCover); } static void outputQueryStats(struct hash *queryStatsTbl, char *statsFile) /* output statistics on queries */ { struct hashCookie cookie = hashFirst(queryStatsTbl); FILE *fh = mustOpen(statsFile, "w"); struct hashEl *hel; fputs(queryStatsHdr, fh); while ((hel = hashNext(&cookie)) != NULL) queryStatsOutput(fh, hel->val); @@ -401,45 +401,45 @@ pslFree(&psl); } lineFileClose(&pslLf); return queryStatsTbl; } static void pslQueryStats(char *pslFile, char *statsFile, char *querySizeFile) /* collect and output per-query stats */ { struct hash *queryStatsTbl = collectQueryStats(pslFile, querySizeFile); outputQueryStats(queryStatsTbl, statsFile); } /* header for overall statistics */ static char *overallStatsHdr = "#queryCnt\t" "minQSize\t" "maxQSize\t" "meanQSize\t" -"alnCnt\t" "minIdent\t" "maxIndent\t" "meanIdent\t" +"alnCnt\t" "minIdent\t" "maxIdent\t" "meanIdent\t" "minQCover\t" "maxQCover\t" "meanQCover\t" "minRepMatch\t" "maxRepMatch\t" "meanRepMatch\t" "minTCover\t" "maxTCover\t" "aligned\t" "aligned1\t" "alignedN\t" "totalAlignedSize\n"; static void outputOverallStats(char *statsFile, struct sumStats *os, int aligned1, int alignedN) /* output overall statistic */ { FILE *fh = mustOpen(statsFile, "w"); fputs(overallStatsHdr, fh); fprintf(fh, "%d\t%d\t%d\t%d\t%d\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\t%0.4f\t" "%0.4f\t%0.4f\t" "%d\t%d\t%d\t%lld\n", os->queryCnt, os->minQSize, os->maxQSize, calcMeanQSize(os), os->alnCnt, - os->minIdent, os->maxIndent, calcMeanIdent(os), + os->minIdent, os->maxIdent, calcMeanIdent(os), os->minQCover, os->maxQCover, calcMeanQCover(os), os->minRepMatch, os->maxRepMatch, calcMeanRepMatch(os), os->minTCover, os->maxTCover, aligned1+alignedN, aligned1, alignedN, os->totalAlign); carefulClose(&fh); } static struct sumStats sumOverAllStats(struct hash *queryStatsTbl, int *aligned1, int *alignedN) /* sum statistics over all queries */ { struct sumStats os; ZeroVar(&os); struct hashEl *hel; struct hashCookie cookie = hashFirst(queryStatsTbl); while ((hel = hashNext(&cookie)) != NULL)