]> git.donarmstrong.com Git - mothur.git/blobdiff - qualityscores.cpp
1.12.1
[mothur.git] / qualityscores.cpp
index 4b315b1c397d3a42921b0071253065b26b4befe6..29c81e295c883bc42d48830b59243f8961a273fb 100644 (file)
@@ -25,32 +25,39 @@ QualityScores::QualityScores(){
 
 /**************************************************************************************************/
 
-QualityScores::QualityScores(ifstream& qFile){
+QualityScores::QualityScores(ifstream& qFile, int l){
        try {
                
                m = MothurOut::getInstance();
 
                seqName = "";
-               seqLength = -1;
+               seqLength = l;
                int score;
                
                string line;
-               getline(qFile, line);
+               getline(qFile, line); gobble(qFile);
                istringstream nameStream(line);
        
                nameStream >> seqName;
                seqName = seqName.substr(1); 
 
-               getline(qFile, line);
-               istringstream qualStream(line);
+               //getline(qFile, line);
+               //istringstream qualStream(line);
        
-               while(qualStream){
-                       qualStream >> score;
+               //while(qualStream){
+               //      qualStream >> score;
+               //      qScores.push_back(score);
+               //}
+               //qScores.pop_back();
+               
+               //seqLength = qScores.size();   
+               
+               for(int i=0;i<seqLength;i++){
+                       qFile >> score;
                        qScores.push_back(score);
                }
-               qScores.pop_back();
-               
-               seqLength = qScores.size();     
+               gobble(qFile);
+
        }
        catch(exception& e) {
                m->errorOut(e, "QualityScores", "QualityScores");
@@ -213,8 +220,8 @@ bool QualityScores::stripQualWindowAverage(Sequence& sequence, int stepSize, int
                int seqLength = sequence.getNumBases();
                
                if(seqName != sequence.getName()){
-                       m->mothurOut("sequence name mismatch btwn fasta: " + sequence.getName() + " and qual file: " + seqName);
-                       m->mothurOutEndLine();  
+                       m->mothurOut("sequence name mismatch between fasta: " + sequence.getName() + " and qual file: " + seqName);
+                       m->mothurOutEndLine();
                }
                
                int end = windowSize;
@@ -230,7 +237,7 @@ bool QualityScores::stripQualWindowAverage(Sequence& sequence, int stepSize, int
                        double windowAverage = windowSum / (double)(end-start);
                        
                        if(windowAverage < qThreshold){
-                               end = start;
+                               end = end - stepSize;
                                break;
                        }
                        start += stepSize;