X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=refchimeratest.cpp;h=2f397e8f71ec0b8a1d47338b1f12cfc552642ed2;hb=d71a31a60542608595ce1278cc4a3398479cec7f;hp=aab17e6b50d1c966f53c7d56e05c383507237a27;hpb=a11ad41867e19c38377e04b1afc1ca82900c4f82;p=mothur.git diff --git a/refchimeratest.cpp b/refchimeratest.cpp index aab17e6..2f397e8 100644 --- a/refchimeratest.cpp +++ b/refchimeratest.cpp @@ -14,11 +14,10 @@ int MAXINT = numeric_limits::max(); //*************************************************************************************************************** -RefChimeraTest::RefChimeraTest(vector& refs, string chimeraReportFileName){ +RefChimeraTest::RefChimeraTest(vector& refs){ m = MothurOut::getInstance(); - m->openOutputFile(chimeraReportFileName, chimeraReportFile); numRefSeqs = refs.size(); referenceSeqs.resize(numRefSeqs); @@ -30,14 +29,22 @@ RefChimeraTest::RefChimeraTest(vector& refs, string chimeraReportFileN alignLength = referenceSeqs[0].length(); - chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\tdistToBestMera\tnumParents" << endl; -// chimeraReportFile << "leftParentTri,middleParentTri,rightParentTri\tbreakPointTriA,breakPointTriB\tminMismatchToTrimera\tdistToBestMera\tnMera" << endl; } +//*************************************************************************************************************** +int RefChimeraTest::printHeader(ofstream& chimeraReportFile){ + try { + chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\tdistToBestMera\tnumParents" << endl; + return 0; + }catch(exception& e) { + m->errorOut(e, "RefChimeraTest", "execute"); + exit(1); + } +} //*************************************************************************************************************** -int RefChimeraTest::analyzeQuery(string queryName, string querySeq){ +int RefChimeraTest::analyzeQuery(string queryName, string querySeq, ofstream& chimeraReportFile){ vector > left(numRefSeqs); vector singleLeft, bestLeft; @@ -60,7 +67,7 @@ int RefChimeraTest::analyzeQuery(string queryName, string querySeq){ int nMera = 0; string chimeraRefSeq = ""; - if(bestSequenceMismatch - minMismatchToChimera > 3 || (minMismatchToChimera == 0 && bestSequenceMismatch != 0)){ + if(bestSequenceMismatch - minMismatchToChimera >= 3){// || (minMismatchToChimera == 0 && bestSequenceMismatch != 0)){ nMera = 2; chimeraRefSeq = stitchBimera(leftParentBi, rightParentBi, breakPointBi); @@ -112,9 +119,11 @@ int RefChimeraTest::getMismatches(string& querySeq, vector >& left, for(int i=0;i >& left, int index = 0; for(int l=alignLength-1;l>=0;l--){ // if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){ - if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l]){ + if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l] && referenceSeqs[i][l] != 'N'){ rDiffs++; } right[i][index++] = rDiffs; } + if(lDiffs < bestSequenceMismatch){ bestSequenceMismatch = lDiffs; bestRefSeq = i; @@ -259,8 +269,8 @@ double RefChimeraTest::calcDistToChimera(string& querySeq, string& chimeraRefSeq for(int i=0;i