]> git.donarmstrong.com Git - rsem.git/blobdiff - PairedEndReadQ.h
Imported Upstream version 1.2.17
[rsem.git] / PairedEndReadQ.h
index f04afb7089e66a853aa798afbc5415b678ee8ca5..751382074b9816134f90cde692507031f598f3fd 100644 (file)
@@ -15,8 +15,6 @@ public:
                this->mate1 = mate1;
                this->mate2 = mate2;
                this->name = mate1.getName();
-
-               calc_lq();
        }
 
        bool read(int argc, std::istream* argv[], int flags = 7);
@@ -29,10 +27,10 @@ public:
                else return mate2;
        }
 
+       void calc_lq(bool, int); // calculate if this read is low quality. Without calling this function, isLowQuality() will always be false
+
 private:
        SingleReadQ mate1, mate2;
-
-       void calc_lq();
 };
 
 bool PairedEndReadQ::read(int argc, std::istream* argv[], int flags) {
@@ -45,8 +43,6 @@ bool PairedEndReadQ::read(int argc, std::istream* argv[], int flags) {
        name = "";
        if (flags & 4) { name = mate1.getName(); } //May chop 1 char later if we want
 
-       if (flags & 1) calc_lq();
-
        return success;
 }
 
@@ -59,8 +55,13 @@ void PairedEndReadQ::write(int argc, std::ostream* argv[]) {
        mate2.write(1, outMate2);
 }
 
-void PairedEndReadQ::calc_lq() {
-       low_quality = mate1.isLowQuality() && mate2.isLowQuality();
+//calculate if this read is low quality
+void PairedEndReadQ::calc_lq(bool hasPolyA, int seedLen) {
+       low_quality = false;
+       mate1.calc_lq(hasPolyA, seedLen);
+       mate2.calc_lq(hasPolyA, seedLen);
+       if (mate1.getReadLength() < seedLen || mate2.getReadLength() < seedLen) low_quality = true;
+       else low_quality = mate1.isLowQuality() && mate2.isLowQuality();
 }
 
 #endif /* PAIREDENDREADQ_H_ */