f86cc1e3f913432f81ad47733aae8e78ab9500c6
markd
  Mon May 27 12:06:58 2019 -0700
output total number of aligned bases in pslStats -overallStats

diff --git src/hg/pslStats/pslStats.c src/hg/pslStats/pslStats.c
index b8f4162..4a1cfb4 100644
--- src/hg/pslStats/pslStats.c
+++ src/hg/pslStats/pslStats.c
@@ -384,46 +384,47 @@
 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"
 "minQCover\t" "maxQCover\t" "meanQCover\t" "minRepMatch\t" "maxRepMatch\t" "meanRepMatch\t"
-"minTCover\t" "maxTCover\t" "aligned\t" "aligned1\t" "alignedN\n";
+"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\n",
+        "%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->minQCover, os->maxQCover, calcMeanQCover(os),
         os->minRepMatch, os->maxRepMatch, calcMeanRepMatch(os),
-        os->minTCover, os->maxTCover, aligned1+alignedN, aligned1, alignedN);
+        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)
     {
     struct sumStats *ss = hel->val;
     sumStatsSum(&os, ss);
     if (ss->alnCnt == 1)