]> git.donarmstrong.com Git - mothur.git/blobdiff - refchimeratest.cpp
mods to seq.errror
[mothur.git] / refchimeratest.cpp
index 246d4394a58ae7f5d65bf78c8b0d19a426ea30c6..4d4a658fe471ba9d0970fbb7fa57151d93c53807 100644 (file)
@@ -30,8 +30,8 @@ RefChimeraTest::RefChimeraTest(vector<Sequence>& refs, string chimeraReportFileN
        
        alignLength = referenceSeqs[0].length();
 
-       chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\t";
-       chimeraReportFile << "leftParentChi,middleParentTri,rightParentChi\tbreakPointTriA,breakPointTriB\tminMismatchToTrimera\tdistToBestMera\tnMera" << endl;
+       chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\tdistToBestMera\tnumParents" << endl;
+//     chimeraReportFile << "leftParentTri,middleParentTri,rightParentTri\tbreakPointTriA,breakPointTriB\tminMismatchToTrimera\tdistToBestMera\tnMera" << endl;
 
 }
 
@@ -54,8 +54,8 @@ int RefChimeraTest::analyzeQuery(string queryName, string querySeq){
        int leftParentBi, rightParentBi, breakPointBi;
        int minMismatchToChimera = getChimera(left, right, leftParentBi, rightParentBi, breakPointBi, singleLeft, bestLeft, singleRight, bestRight);
        
-       int minMismatchToTrimera = MAXINT;
-       int leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB;
+//     int minMismatchToTrimera = MAXINT;
+//     int leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB;
        
        int nMera = 0;
        string chimeraRefSeq = "";
@@ -65,17 +65,20 @@ int RefChimeraTest::analyzeQuery(string queryName, string querySeq){
                chimeraRefSeq = referenceSeqs[bestMatch];
        }
        else {
-               
-               minMismatchToTrimera = getTrimera(left, right, leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB, singleLeft, bestLeft, singleRight, bestRight);
 
-               if(minMismatchToChimera - minMismatchToTrimera <= 3){
-                       nMera = 2;
-                       chimeraRefSeq = stitchBimera(leftParentBi, rightParentBi, breakPointBi);
-               }
-               else{                   
-                       nMera = 3;
-                       chimeraRefSeq = stitchTrimera(leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB);
-               }
+               nMera = 2;
+               chimeraRefSeq = stitchBimera(leftParentBi, rightParentBi, breakPointBi);
+               
+//             minMismatchToTrimera = getTrimera(left, right, leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB, singleLeft, bestLeft, singleRight, bestRight);
+//
+//             if(minMismatchToChimera - minMismatchToTrimera <= 3){
+//                     nMera = 2;
+//                     chimeraRefSeq = stitchBimera(leftParentBi, rightParentBi, breakPointBi);
+//             }
+//             else{                   
+//                     nMera = 3;
+//                     chimeraRefSeq = stitchTrimera(leftParentTri, middleParentTri, rightParentTri, breakPointTriA, breakPointTriB);
+//             }
                
        }
        double distToChimera = calcDistToChimera(querySeq, chimeraRefSeq);
@@ -86,12 +89,12 @@ int RefChimeraTest::analyzeQuery(string queryName, string querySeq){
        chimeraReportFile << referenceNames[leftParentBi] << ',' << referenceNames[rightParentBi] << '\t' << breakPointBi << '\t';
        chimeraReportFile << minMismatchToChimera << '\t';
        
-       if(nMera == 1){
-               chimeraReportFile << "NA" << '\t' << "NA" << '\t' << "NA";
-       }
-       else{
-               chimeraReportFile << referenceNames[leftParentTri] << ',' << referenceNames[middleParentTri] << ',' << referenceNames[rightParentTri] << '\t' << breakPointTriA << ',' << breakPointTriB << '\t' << minMismatchToTrimera;       
-       }
+//     if(nMera == 1){
+//             chimeraReportFile << "NA" << '\t' << "NA" << '\t' << "NA";
+//     }
+//     else{
+//             chimeraReportFile << referenceNames[leftParentTri] << ',' << referenceNames[middleParentTri] << ',' << referenceNames[rightParentTri] << '\t' << breakPointTriA << ',' << breakPointTriB << '\t' << minMismatchToTrimera;       
+//     }
        
        chimeraReportFile << '\t' << distToChimera << '\t' << nMera << endl;
                
@@ -108,7 +111,8 @@ int RefChimeraTest::getMismatches(string& querySeq, vector<vector<int> >& left,
                
                int lDiffs = 0;
                for(int l=0;l<alignLength;l++){
-                       if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+//                     if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+                       if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l]){
                                lDiffs++;
                        }
                        left[i][l] = lDiffs;
@@ -117,7 +121,8 @@ int RefChimeraTest::getMismatches(string& querySeq, vector<vector<int> >& left,
                int rDiffs = 0;
                int index = 0;
                for(int l=alignLength-1;l>=0;l--){
-                       if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+//                     if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+                       if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l]){
                                rDiffs++;
                        }                       
                        right[i][index++] = rDiffs;
@@ -251,7 +256,8 @@ double RefChimeraTest::calcDistToChimera(string& querySeq, string& chimeraRefSeq
        int mismatch = 0;
        
        for(int i=0;i<alignLength;i++){
-               if(querySeq[i] != '.' && chimeraRefSeq[i] != '.'){
+//             if(querySeq[i] != '.' && chimeraRefSeq[i] != '.'){
+               if(chimeraRefSeq[i] != '.'){
                        if(querySeq[i] == '-' && chimeraRefSeq[i] == '-'){      /*      do nothing      */      }
                        else if(querySeq[i] == chimeraRefSeq[i]){
                                match++;