X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=maligner.cpp;h=6deeb8012c5f18937f65b889ad50e69852ece5c9;hb=03acfa01ede71b107817966fcf27cd728038b3c9;hp=5da4b9f9cece7a9e64dd4a5dd621477fc365e94e;hpb=813f0516e9c7533859f57ebe6d7b8854896bf009;p=mothur.git diff --git a/maligner.cpp b/maligner.cpp index 5da4b9f..6deeb80 100644 --- a/maligner.cpp +++ b/maligner.cpp @@ -71,6 +71,9 @@ string Maligner::chimeraMaligner(int chimeraPenalty, DeCalculator* decalc) { //trims seqs to first non gap char in all seqs and last non gap char in all seqs spotMap = decalc->trimSeqs(query, refSeqs); + + //you trimmed the whole sequence, skip + if (query->getAligned() == "") { return "no"; } vector temp = refSeqs; temp.push_back(query); @@ -175,6 +178,8 @@ vector Maligner::minCoverageFilter(vector ref){ //if coverage above minimum if (coverage > minCoverage) { newRefs.push_back(ref[i]); + }else { + delete ref[i]; } } @@ -502,13 +507,13 @@ vector Maligner::getBlastSeqs(Sequence* q, int num) { string leftQuery = queryUnAligned.substr(0, int(queryUnAligned.length() * 0.33)); //first 1/3 of the sequence string rightQuery = queryUnAligned.substr(int(queryUnAligned.length() * 0.66)); //last 1/3 of the sequence - Sequence* queryLeft = new Sequence(q->getName(), leftQuery); - Sequence* queryRight = new Sequence(q->getName(), rightQuery); + Sequence* queryLeft = new Sequence(q->getName()+"left", leftQuery); + Sequence* queryRight = new Sequence(q->getName()+"right", rightQuery); vector tempIndexesRight = databaseLeft->findClosestMegaBlast(queryRight, num+1); vector tempIndexesLeft = databaseLeft->findClosestMegaBlast(queryLeft, num+1); - - //if ((tempIndexesRight.size() != (num+1)) || (tempIndexesLeft.size() != (num+1))) { m->mothurOut("megablast returned " + toString(tempIndexesRight.size()) + " results for the right end, and " + toString(tempIndexesLeft.size()) + " for the left end. Needed " + toString(num+1) + ". Unable to porcess sequence " + q->getName()); m->mothurOutEndLine(); return refResults; } + + //if ((tempIndexesRight.size() == 0) && (tempIndexesLeft.size() == 0)) { m->mothurOut("megablast returned " + toString(tempIndexesRight.size()) + " results for the right end, and " + toString(tempIndexesLeft.size()) + " for the left end. Needed " + toString(num+1) + ". Unable to process sequence " + q->getName()); m->mothurOutEndLine(); return refResults; } vector smaller; vector larger;