1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/*++
Module Name:
AlignerStats.cpp
Abstract:
Common statistics for running single & paired alignment.
Authors:
Ravi Pandya, May, 2012
Environment:
`
User mode service.
Revision History:
Integrated from SingleAligner.cpp & PairedAligner.cpp
--*/
#include "stdafx.h"
#include "options.h"
#include "AlignerStats.h"
AbstractStats::~AbstractStats()
{}
AlignerStats::AlignerStats(AbstractStats* i_extra)
:
totalReads(0),
usefulReads(0),
singleHits(0),
multiHits(0),
notFound(0),
alignedAsPairs(0),
extra(i_extra),
lvCalls(0)
{
for (int i = 0; i <= AlignerStats::maxMapq; i++) {
mapqHistogram[i] = 0;
}
for (int i = 0; i < maxMaxHits; i++) {
countOfBestHitsByWeightDepth[i] = 0;
countOfAllHitsByWeightDepth[i] = 0;
probabilityMassByWeightDepth[i] = 0;
}
#if TIME_HISTOGRAM
for (unsigned i = 0; i < 31; i++) {
countByTimeBucket[i] = nanosByTimeBucket[i] = 0;
}
#endif // TIME_HISTOGRAM
}
AlignerStats::~AlignerStats()
{
if (extra != NULL) {
delete extra;
}
}
void
AlignerStats::printHistograms(
FILE* out)
{
// nothing
if (extra != NULL) {
extra->printHistograms(out);
}
}
void
AlignerStats::add(
const AbstractStats* i_other)
{
AlignerStats* other = (AlignerStats*) i_other;
totalReads += other->totalReads;
usefulReads += other->usefulReads;
singleHits += other->singleHits;
multiHits += other->multiHits;
notFound += other->notFound;
alignedAsPairs += other->alignedAsPairs;
lvCalls += other->lvCalls;
if (extra != NULL && other->extra != NULL) {
extra->add(other->extra);
}
for (int i = 0; i <= AlignerStats::maxMapq; i++) {
mapqHistogram[i] += other->mapqHistogram[i];
}
for (int i = 0; i < maxMaxHits; i++) {
countOfBestHitsByWeightDepth[i] += other->countOfBestHitsByWeightDepth[i];
countOfAllHitsByWeightDepth[i] += other->countOfAllHitsByWeightDepth[i];
probabilityMassByWeightDepth[i] = other->probabilityMassByWeightDepth[i];
}
#if TIME_HISTOGRAM
for (unsigned i = 0; i < 31; i++) {
countByTimeBucket[i] += other->countByTimeBucket[i];
nanosByTimeBucket[i] += other->nanosByTimeBucket[i];
}
#endif // TIME_HISTOGRAM
}
|