try {
m = MothurOut::getInstance();
maxInsertLength = 0;
+
pairwiseAlignSeqs(); // This is part A in Fig. 2 of DeSantis et al.
regapSequences(); // This is parts B-F in Fig. 2 of DeSantis et al.
+
}
catch(exception& e) {
m->errorOut(e, "Nast", "Nast");
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 is negative, we want to remove the extra gaps to the right
+ if (i < 0) { cout << "i is negative" << endl; }
}
}
}
void Nast::regapSequences(){ //This is essentially part B in Fig 2. of DeSantis et al.
try {
-
+ //cout << candidateSeq->getName() << endl;
string candPair = candidateSeq->getPairwise();
string candAln = "";
string lastLoop = "";
while(pairwiseAlignIndex<pairwiseLength){
+ //cout << pairwiseAlignIndex << '\t' << fullAlignIndex << '\t' << pairwiseLength << endl;
if(isalpha(tempPair[pairwiseAlignIndex]) && isalpha(tempAln[fullAlignIndex])
&& isalpha(candPair[pairwiseAlignIndex])){
// the template and candidate pairwise and template aligned have characters
} // 2 of Desantis et al.
candidateSeq->setAligned(candAln);
+ //cout << "here" << endl;
}
catch(exception& e) {
m->errorOut(e, "Nast", "regapSequences");