for(int i=0; i<longAlignmentLength; i++){ // use the long alignment as the standard
int rightIndex, rightRoom, leftIndex, leftRoom;
-
+
// Part C of Fig. 2 from DeSantis et al.
if((isalpha(newTemplateAlign[i]) != isalpha(tempAln[i]))){ //if there is a discrepancy between the regapped
if((i-leftIndex) <= (rightIndex-i)){ // the left gap is closer - > move stuff left there's
if(leftRoom >= insertLength){ // enough room to the left to move
- //cout << "lr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << i+insertLength << endl;
+ //cout << "lr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << insertLength << endl;
string leftTemplateString = newTemplateAlign.substr(0,i);
string rightTemplateString = newTemplateAlign.substr((i+insertLength));
newTemplateAlign = leftTemplateString + rightTemplateString;
longAlignmentLength = newTemplateAlign.length();
- //cout << "lr candAln = " << candAln.length() << '\t' << leftIndex-insertLength+1 << '\t' << leftIndex+1 << endl;
+ //cout << "lr candAln = " << candAln.length() << '\t' << leftIndex << '\t' << endl;
string leftCandidateString = candAln.substr(0,(leftIndex-insertLength+1));
string rightCandidateString = candAln.substr((leftIndex+1));
candAln = leftCandidateString + rightCandidateString;
}
else{ // not enough room to the left, have to steal some space to
- //cout << "in else lr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << i+insertLength << endl;
+ //cout << "in else lr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << insertLength << endl;
string leftTemplateString = newTemplateAlign.substr(0,i); // the right
string rightTemplateString = newTemplateAlign.substr((i+insertLength));
newTemplateAlign = leftTemplateString + rightTemplateString;
longAlignmentLength = newTemplateAlign.length();
- //cout << " in else lr candAln = " << candAln.length() << '\t' << leftIndex-leftRoom+1 << '\t' << rightIndex-leftIndex-1 << '\t' << rightIndex+(insertLength-leftRoom) << endl;
+ //cout << " in else lr candAln = " << candAln.length() << '\t' << " leftIndex = " << leftIndex << " leftroom = " << leftRoom << " rightIndex = " << rightIndex << '\t' << endl;
string leftCandidateString = candAln.substr(0,(leftIndex-leftRoom+1));
string insertString = candAln.substr((leftIndex+1),(rightIndex-leftIndex-1));
string rightCandidateString = candAln.substr((rightIndex+(insertLength-leftRoom)));
}
}
i -= insertLength;
+ //if (i < 0) { cout << " we have a negative i = " << i << endl; }
}
else{
if (lastChar != "\\") { tempdefault += "\\"; }
#endif
- //test to make sure directory exists
- tempdefault = getFullPathName(tempdefault);
- string inTemp = tempdefault + "temp";
- ofstream in;
- in.open(inTemp.c_str(), ios::trunc);
- if(!in) {
- m->mothurOut(tempdefault + " directory does not exist or is not writable."); m->mothurOutEndLine();
- }else{
- in.close();
- remove(inTemp.c_str());
- m->mothurOut("Changing default directory to " + tempdefault); m->mothurOutEndLine();
- m->setDefaultPath(tempdefault);
- }
+ m->mothurOut("Changing default directory to " + tempdefault); m->mothurOutEndLine();
+ m->setDefaultPath(tempdefault);
}
return 0;
for (int i = 0; i < read.flowIndex.size(); i++) { sum += read.flowIndex[i]; out << sum << '\t'; }
//make the bases you want to clip lowercase and the bases you want to keep upper case
+ if(header.clipQualRight == 0){ header.clipQualRight = read.bases.length(); }
for (int i = 0; i < (header.clipQualLeft-1); i++) { read.bases[i] = tolower(read.bases[i]); }
for (int i = (header.clipQualLeft-1); i < (header.clipQualRight-1); i++) { read.bases[i] = toupper(read.bases[i]); }
for (int i = (header.clipQualRight-1); i < read.bases.length(); i++) { read.bases[i] = tolower(read.bases[i]); }
string seq = read.bases;
if (trim) {
- if(header.clipQualRight != 0){
+ if((header.clipQualRight != 0) && ((header.clipQualRight-header.clipQualLeft) >= 0)){
seq = seq.substr((header.clipQualLeft-1), (header.clipQualRight-header.clipQualLeft));
}
else {
try {
if (trim) {
- if(header.clipQualRight != 0){
+ if((header.clipQualRight != 0) && ((header.clipQualRight-header.clipQualLeft) >= 0)){
out << ">" << header.name << " length=" << (header.clipQualRight-header.clipQualLeft) << endl;
for (int i = (header.clipQualLeft-1); i < (header.clipQualRight-1); i++) { out << read.qualScores[i] << '\t'; }
}