/**************************************************************************************************/
-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);
- istringstream nameStream(line);
+ //string line;
+ //m->getline(qFile, line);
+ //istringstream nameStream(line);
- nameStream >> seqName;
- seqName = seqName.substr(1);
+ qFile >> seqName;
+ while (!qFile.eof()) { char c = qFile.get(); if (c == 10 || c == 13 || c == -1){ break; } } // get rest of line
+ m->gobble(qFile);
+ if (seqName == "") { m->mothurOut("Error reading quality file, name blank at position, " + toString(qFile.tellg())); m->mothurOutEndLine(); }
+ else {
+ seqName = seqName.substr(1);
+ }
- getline(qFile, line);
- istringstream qualStream(line);
+ //m->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();
+ m->gobble(qFile);
+
}
catch(exception& e) {
m->errorOut(e, "QualityScores", "QualityScores");
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;
double windowAverage = windowSum / (double)(end-start);
if(windowAverage < qThreshold){
- end = start;
+ end = end - stepSize;
break;
}
start += stepSize;