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 = "";
//
// if((letter == '>')){ qFile.putback(letter); break; }
// else if (isprint(letter)) { scores += letter; }
// }
-// cout << scores << endl;
// m->gobble(qFile);
//
// break;
// qScores.pop_back();
seqLength = qScores.size();
-
+ //cout << "seqlenght = " << seqLength << '\t' << count << endl;
}
catch(exception& e) {
string QualityScores::getName(){
try {
- cout << qScores.size() << '\t';
return seqName;
}
catch(exception& e) {
try {
vector<int> hold;
- cout << seqName << '\t' << qScores.size() << '\t' << start << '\t' << end << endl;
-
+
+ //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);
if(errorSeq[i] == 'm') { qualErrorMap['m'][qScores[qIndex]] += weight; }
else if(errorSeq[i] == 's') { qualErrorMap['s'][qScores[qIndex]] += weight; }
else if(errorSeq[i] == 'i') { qualErrorMap['i'][qScores[qIndex]] += weight; }
- else if(errorSeq[i] == 'a') { qualErrorMap['a'][qScores[qIndex]] += weight; }
+ else if(errorSeq[i] == 'a') { qualErrorMap['a'][qScores[qIndex]] += weight; /*if(qScores[qIndex] != 0){ cout << qIndex << '\t'; }*/ }
else if(errorSeq[i] == 'd') { /* there are no qScores for deletions */ }
if(errorSeq[i] != 'd') { qIndex++; }
+
if(qIndex > stop){ break; }
}
}