else{
seqName = seqName.substr(1);
}
+
string qScoreString = m->getline(qFile);
while(qFile.peek() != '>' && qFile.peek() != EOF){
- qScoreString += ' ' + m->getline(qFile);
+ qScoreString += ' ' + m->getline(qFile);
}
istringstream qScoreStringStream(qScoreString);
int count = 0;
while(!qScoreStringStream.eof()){
if (m->control_pressed) { break; }
- qScoreStringStream >> score;
+ qScoreStringStream >> score; m->gobble(qScoreStringStream);
+
qScores.push_back(score);
count++;
}
- qScores.pop_back();
+ //qScores.pop_back();
// string scores = "";
//
// qScores.pop_back();
seqLength = qScores.size();
-
+ //cout << "seqlenght = " << seqLength << '\t' << count << endl;
}
catch(exception& e) {
void QualityScores::trimQScores(int start, int end){
try {
vector<int> hold;
-
+
+
+ //cout << seqName << '\t' << start << '\t' << end << '\t' << qScores.size() << endl;
+ //for (int i = 0; i < qScores.size(); i++) { cout << qScores[i] << end; }
if(end == -1){
hold = vector<int>(qScores.begin()+start, qScores.end());
qScores = hold;
int end = windowSize;
int start = 0;
-
+
if(seqLength < windowSize) { return 0; }
- while(start < seqLength){
+ while((start+windowSize) < seqLength){
double windowSum = 0.0000;
for(int i=start;i<end;i++){
windowSum += qScores[i];
}
double windowAverage = windowSum / (double)(end-start);
-
+
if(windowAverage < qThreshold){
end = end - stepSize;
break;
}
+
start += stepSize;
end = start + windowSize;
- if(end >= seqLength){ end = seqLength - 1; }
+
+ if(end >= seqLength){ end = seqLength; }
+
}
-
+
if(end == -1){ end = seqLength; }
+ //failed first window
+ if (end < windowSize) { return 0; }
+
sequence.setUnaligned(rawSequence.substr(0,end));
trimQScores(-1, end);