/**************************************************************************************************/
-QualityScores::QualityScores(ifstream& qFile, int l){
+QualityScores::QualityScores(ifstream& qFile){
try {
m = MothurOut::getInstance();
-
+
seqName = "";
- seqLength = l;
int score;
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);
- }
-
- //m->getline(qFile, line);
- //istringstream qualStream(line);
-
- //while(qualStream){
- // qualStream >> score;
- // qScores.push_back(score);
- //}
- //qScores.pop_back();
-
- //seqLength = qScores.size();
-
- /*while(!in.eof()){
- string saveName = "";
- string name = "";
- string scores = "";
-
- in >> name;
- //cout << name << endl;
- if (name.length() != 0) {
- saveName = name.substr(1);
- while (!in.eof()) {
- char c = in.get();
- if (c == 10 || c == 13){ break; }
- else { name += c; }
- }
- m->gobble(in);
- }
-
- while(in){
- char letter= in.get();
- if(letter == '>'){ in.putback(letter); break; }
- else{ scores += letter; }
- }
-
- //istringstream iss (scores,istringstream::in);
-
- //int count = 0; int tempScore;
- //while (iss) { iss >> tempScore; count++; }
- //cout << saveName << '\t' << count << endl;
-
- m->gobble(in);
- }*/
+ m->getline(qFile);
+ if (seqName == "") {
+ m->mothurOut("Error reading quality file, name blank at position, " + toString(qFile.tellg()));
+ m->mothurOutEndLine();
+ }
+ else{
+ seqName = seqName.substr(1);
+ }
+ string qScoreString = m->getline(qFile);
- for(int i=0;i<seqLength;i++){
- qFile >> score;
+ istringstream qScoreStringStream(qScoreString);
+ while(!qScoreStringStream.eof()){
+ qScoreStringStream >> score;
qScores.push_back(score);
}
- m->gobble(qFile);
-
+ qScores.pop_back();
+ seqLength = qScores.size();
}
catch(exception& e) {
m->errorOut(e, "QualityScores", "QualityScores");
exit(1);
}
-
+
}
+
/**************************************************************************************************/
string QualityScores::getName(){
try {
int seqLength = errorSeq.size();
+ cout << start << '\t' << stop << '\t' << seqLength << endl;
+
int qIndex = start - 1;
for(int i=0;i<seqLength;i++){
else if(errorSeq[i] == 'd') { /* there are no qScores for deletions */ }
if(errorSeq[i] != 'd') { qIndex++; }
-
+ if(qIndex > stop){ break; }
}
}
catch(exception& e) {