]> git.donarmstrong.com Git - rsem.git/blobdiff - LenDist.h
install the rsem_perl_utils.pm to /usr/bin even though this is wrong
[rsem.git] / LenDist.h
index 88366a61d0a741d65f5b3f524a69ad71ab33e5a8..90d47d74522cbc90088ff8267b387046a533a0e3 100644 (file)
--- a/LenDist.h
+++ b/LenDist.h
@@ -3,6 +3,7 @@
 
 #include<cstdio>
 #include<cstring>
+#include<cstdlib>
 #include<cassert>
 #include<algorithm>
 
@@ -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];
        }