365898605d0de79f306e48d26e7362a8b8a8063d markd Thu Jan 21 14:30:36 2021 -0800 fixed bug pslStats -overallStats calculation of mean query coverage diff --git src/hg/pslStats/pslStats.c src/hg/pslStats/pslStats.c index f18218d..45d0bcc 100644 --- src/hg/pslStats/pslStats.c +++ src/hg/pslStats/pslStats.c @@ -216,60 +216,61 @@ static unsigned calcMeanQSize(struct sumStats *ss) /* calculate the mean query size for a set of alignments */ { if (ss->queryCnt == 0) return 0; else return ss->totalQSize/ss->queryCnt; } static float calcMeanQCover(struct sumStats *ss) /* calculate the mean qcover for a set of alignments */ { if (ss->totalQSize == 0) return 0.0; else - return (float)(((double)ss->totalAlign)/((double)(ss->alnCnt*ss->totalQSize))); + return (float)(((double)ss->totalAlign)/((double)ss->totalQSize)); } static float calcMeanRepMatch(struct sumStats *ss) /* calculate the mean repmatch for a set of alignments */ { if (ss->totalAlign == 0) return 0.0; 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->maxIdent = ident; ss->minQCover = ss->maxQCover = qCover; ss->minTCover = ss->maxTCover = tCover; ss->minRepMatch = ss->maxRepMatch = repMatch; } else { + ss->totalQSize += psl->qSize; ss->minQSize = min(ss->minQSize, psl->qSize); ss->maxQSize = max(ss->maxQSize, psl->qSize); ss->minIdent = min(ss->minIdent, 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++;