src/hg/pslStats/pslStats.c 1.9
1.9 2009/10/30 21:08:18 markd
fixed bug computing mean query size
Index: src/hg/pslStats/pslStats.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/pslStats/pslStats.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -b -B -U 4 -r1.8 -r1.9
--- src/hg/pslStats/pslStats.c 2 May 2009 08:13:29 -0000 1.8
+++ src/hg/pslStats/pslStats.c 30 Oct 2009 21:08:18 -0000 1.9
@@ -206,9 +206,9 @@
{
if (ss->totalQSize == 0)
return 0.0;
else
- return (float)(((double)ss->totalAlign)/((double)ss->totalQSize));
+ return (float)(((double)ss->totalAlign)/((double)(ss->alnCnt*ss->totalQSize)));
}
static float calcMeanRepMatch(struct sumStats *ss)
/* calculate the mean repmatch for a set of alignments */
@@ -218,18 +218,18 @@
else
return (float)(((double)ss->totalRepMatch)/((double)ss->totalAlign));
}
-static void sumStatsAccumulate(struct sumStats *ss, struct psl *psl)
-/* accumulate stats from psl into sumStats object */
+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);
-ss->totalQSize += psl->qSize;
if (ss->alnCnt == 0)
{
+ ss->totalQSize = psl->qSize;
ss->minQSize = ss->maxQSize = psl->qSize;
ss->minIdent = ss->maxIndent = ident;
ss->minQCover = ss->maxQCover = qCover;
ss->minTCover = ss->maxTCover = tCover;
@@ -375,9 +375,9 @@
while ((psl = pslNext(pslLf)) != NULL)
{
struct sumStats *ss = sumStatsGetForQuery(queryStatsTbl, psl->qName, psl->qSize);
- sumStatsAccumulate(ss, psl);
+ sumStatsAccumulateQuery(ss, psl);
pslFree(&psl);
}
lineFileClose(&pslLf);
return queryStatsTbl;