X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=nast.cpp;h=647e0e4f1e17e205c183c78615a966b7a98545cc;hp=28cc659e9c5a6090bcd6cb5edecdc7cf9d6c9ec0;hb=df7e3ff9f68ef157b0328a2d353c3258c5d45d89;hpb=f09bacac01a842a74c1c1b69070852cc969ff506 diff --git a/nast.cpp b/nast.cpp index 28cc659..647e0e4 100644 --- a/nast.cpp +++ b/nast.cpp @@ -45,7 +45,7 @@ void Nast::pairwiseAlignSeqs(){ // Here we call one of the pairwise alignment me string candAln = alignment->getSeqAAln(); string tempAln = alignment->getSeqBAln(); - + if(candAln == ""){ candidateSeq->setPairwise(""); @@ -78,6 +78,7 @@ void Nast::pairwiseAlignSeqs(){ // Here we call one of the pairwise alignment me candidateSeq->setPairwise(candAln); // set the pairwise sequences in the Sequence objects for templateSeq->setPairwise(tempAln); // the candidate and template sequences + } catch(exception& e) { m->errorOut(e, "Nast", "pairwiseAlignSeqs"); @@ -91,11 +92,6 @@ void Nast::removeExtraGaps(string& candAln, string tempAln, string newTemplateAl // here we do steps C-F of Fig. 2 from DeSantis et al. try { - - //cout << candAln << endl; - //cout << tempAln << endl; - //cout << newTemplateAlign << endl; - //cout << endl; int longAlignmentLength = newTemplateAlign.length(); @@ -143,24 +139,22 @@ void Nast::removeExtraGaps(string& candAln, string tempAln, string newTemplateAl 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 + + }else{ // not enough room to the left, have to steal some space to the right //cout << "in else lr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << insertLength << endl; - string leftTemplateString = newTemplateAlign.substr(0,i); // the right + string leftTemplateString = newTemplateAlign.substr(0,i); string rightTemplateString = newTemplateAlign.substr((i+insertLength)); newTemplateAlign = leftTemplateString + rightTemplateString; longAlignmentLength = newTemplateAlign.length(); - //cout << " in else lr candAln = " << candAln.length() << '\t' << " leftIndex = " << leftIndex << " leftroom = " << leftRoom << " rightIndex = " << rightIndex << '\t' << endl; + //cout << " in else lr candAln = " << candAln.length() << '\t' << " leftIndex = " << leftIndex << " leftroom = " << leftRoom << " rightIndex = " << rightIndex << '\t' << " rightroom = " << rightRoom << '\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))); candAln = leftCandidateString + insertString + rightCandidateString; } - } - else{ // the right gap is closer - > move stuff right there's + }else{ // the right gap is closer - > move stuff right there's if(rightRoom >= insertLength){ // enough room to the right to move //cout << "rr newTemplateAlign = " << newTemplateAlign.length() << '\t' << i << '\t' << i+insertLength << endl; string leftTemplateString = newTemplateAlign.substr(0,i); @@ -188,7 +182,9 @@ void Nast::removeExtraGaps(string& candAln, string tempAln, string newTemplateAl } } - i -= insertLength; + + if ((i - insertLength) < 0) { i = 0; } + else { i -= insertLength; } } else{ @@ -211,7 +207,7 @@ void Nast::removeExtraGaps(string& candAln, string tempAln, string newTemplateAl // i -= insertLength; //if i is negative, we want to remove the extra gaps to the right - if (i < 0) { cout << "i is negative" << endl; } + if (i < 0) { m->mothurOut("i is negative"); m->mothurOutEndLine(); } } } }