X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=LenDist.h;h=90d47d74522cbc90088ff8267b387046a533a0e3;hp=88366a61d0a741d65f5b3f524a69ad71ab33e5a8;hb=910250881a4c3e48a33aa427b82131acda914da3;hpb=a95154919f950f86de9104b2b9dcf1f0c7e83387 diff --git a/LenDist.h b/LenDist.h index 88366a6..90d47d7 100644 --- a/LenDist.h +++ b/LenDist.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -177,13 +178,9 @@ void LenDist::setAsNormal(double mean, double sd, int minL, int maxL) { trim(); } -int bo = 0; // need delete - void LenDist::init() { memset(pdf, 0, sizeof(double) * (span + 1)); memset(cdf, 0, sizeof(double) * (span + 1)); - - bo = 0; } void LenDist::finish() { @@ -193,6 +190,8 @@ void LenDist::finish() { sum += pdf[i]; } + if (sum <= EPSILON) { fprintf(stderr, "No valid read to estimate the length distribution!\n"); exit(-1); } + for (int i = 1; i <= span; i++) { pdf[i] = pdf[i] / sum; cdf[i] = cdf[i - 1] + pdf[i]; @@ -210,10 +209,6 @@ void LenDist::collect(const LenDist& o) { cdf = new double[span + 1]; memset(pdf, 0, sizeof(double) * (span + 1)); memset(cdf, 0, sizeof(double) * (span + 1)); - - //need delete - ++bo; - assert(bo < 2); } for (int i = 1; i <= span; i++) { pdf[i] += o.pdf[i]; @@ -225,12 +220,12 @@ void LenDist::read(FILE *fi) { delete[] pdf; delete[] cdf; - fscanf(fi, "%d %d %d", &lb, &ub, &span); + assert(fscanf(fi, "%d %d %d", &lb, &ub, &span) == 3); pdf = new double[span + 1]; cdf = new double[span + 1]; pdf[0] = cdf[0] = 0.0; for (int i = 1; i <= span; i++) { - fscanf(fi, "%lf", &pdf[i]); + assert(fscanf(fi, "%lf", &pdf[i]) == 1); cdf[i] = cdf[i - 1] + pdf[i]; }