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++;