X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=refchimeratest.cpp;fp=refchimeratest.cpp;h=246d4394a58ae7f5d65bf78c8b0d19a426ea30c6;hb=5e5253ff472de3c6349e562d2580873287be0c65;hp=0000000000000000000000000000000000000000;hpb=fa08e82ec2dd48f73d051c210dad54a403308949;p=mothur.git diff --git a/refchimeratest.cpp b/refchimeratest.cpp new file mode 100644 index 0000000..246d439 --- /dev/null +++ b/refchimeratest.cpp @@ -0,0 +1,276 @@ +/* + * refchimeratest.cpp + * Mothur + * + * Created by Pat Schloss on 1/31/11. + * Copyright 2011 Schloss Lab. All rights reserved. + * + */ + +#include "refchimeratest.h" +#include "mothur.h" + +int MAXINT = numeric_limits::max(); + +//*************************************************************************************************************** + +RefChimeraTest::RefChimeraTest(vector& refs, string chimeraReportFileName){ + + m = MothurOut::getInstance(); + + m->openOutputFile(chimeraReportFileName, chimeraReportFile); + numRefSeqs = refs.size(); + + referenceSeqs.resize(numRefSeqs); + referenceNames.resize(numRefSeqs); + for(int i=0;i > left(numRefSeqs); + vector singleLeft, bestLeft; + vector singleRight, bestRight; + + vector > right(numRefSeqs); + for(int i=0;i >& left, vector >& right, int& bestRefSeq){ + + int bestSequenceMismatch = MAXINT; + + for(int i=0;i=0;l--){ + if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){ + rDiffs++; + } + right[i][index++] = rDiffs; + } + if(lDiffs < bestSequenceMismatch){ + bestSequenceMismatch = lDiffs; + bestRefSeq = i; + } + } + return bestSequenceMismatch; +} + +/**************************************************************************************************/ + +int RefChimeraTest::getChimera(vector >& left, vector >& right, int& leftParent, int& rightParent, int& breakPoint, vector& singleLeft, vector& bestLeft, vector& singleRight, vector& bestRight){ + + singleLeft.resize(alignLength, MAXINT); + bestLeft.resize(alignLength, -1); + + for(int l=0;l >& left, vector >& right, int& leftParent, int& middleParent, int& rightParent, int& breakPointA, int& breakPointB, vector& singleLeft, vector& bestLeft, vector& singleRight, vector& bestRight){ + + int bestTrimeraMismatches = MAXINT; + + leftParent = -1; + middleParent = -1; + rightParent = -1; + + breakPointA = -1; + breakPointB = -1; + + vector > minDelta(alignLength); + vector > minDeltaSeq(alignLength); + + for(int i=0;i