]> git.donarmstrong.com Git - mothur.git/blobdiff - chimeraslayer.cpp
changes while testing
[mothur.git] / chimeraslayer.cpp
index b637000fe688920ac89097358cc50e9ac5ca2fc8..102db7478223d0027e676304288552a2148966fb 100644 (file)
@@ -46,6 +46,56 @@ int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int num
        }
 }
 //***************************************************************************************************************
+//template=self, byGroup parameter used for mpienabled version to read the template as MPI_COMM_SELF instead of MPI_COMM_WORLD
+ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, int>& prior, string mode, int k, int ms, int mms, int win, float div, 
+                                                        int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas, int tid, bool bg) : Chimera()  {       
+       try {
+               byGroup = bg;
+               fastafile = file; templateSeqs = readSeqs(fastafile);
+               templateFileName = temp; 
+               searchMethod = mode;
+               kmerSize = k;
+               match = ms;
+               misMatch = mms;
+               window = win;
+               divR = div;
+               minSim = minsim;
+               minCov = mincov;
+               minBS = minbs;
+               minSNP = minsnp;
+               parents = par;
+               iters = it;
+               increment = inc;
+               numWanted = numw;
+               realign = r; 
+               trimChimera = trim;
+               priority = prior;
+               numNoParents = 0;
+               blastlocation = blas;
+               threadID = tid;
+               
+               
+               createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
+               
+               if (searchMethod == "distance") { 
+                       //createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
+                       
+                       //run filter on template copying templateSeqs into filteredTemplateSeqs
+                       for (int i = 0; i < templateSeqs.size(); i++) {  
+                               if (m->control_pressed) {  break; }
+                               
+                               Sequence* newSeq = new Sequence(templateSeqs[i]->getName(), templateSeqs[i]->getAligned());
+                               runFilter(newSeq);  
+                               filteredTemplateSeqs.push_back(newSeq);
+                       }
+               }
+       }
+       catch(exception& e) {
+               m->errorOut(e, "ChimeraSlayer", "ChimeraSlayer");
+               exit(1);
+       }
+}
+//***************************************************************************************************************
 //template=self
 ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, int>& prior, string mode, int k, int ms, int mms, int win, float div, 
                                                         int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas, int tid) : Chimera()  {        
@@ -73,10 +123,11 @@ ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, in
                blastlocation = blas;
                threadID = tid;
                
+               
                createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
                
                if (searchMethod == "distance") { 
-                       createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
+                       //createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
                        
                        //run filter on template copying templateSeqs into filteredTemplateSeqs
                        for (int i = 0; i < templateSeqs.size(); i++) {  
@@ -523,12 +574,13 @@ Sequence ChimeraSlayer::print(ostream& out, ostream& outAcc, data_results leftPi
 
 #ifdef USE_MPI
 //***************************************************************************************************************
-Sequence ChimeraSlayer::print(MPI_File& out, MPI_File& outAcc, data_results leftPiece, data_results rightPiece) {
+Sequence ChimeraSlayer::print(MPI_File& out, MPI_File& outAcc, data_results leftPiece, data_results rightPiece, bool& chimFlag) {
        try {
                MPI_Status status;
                bool results = false;
                string outAccString = "";
                string outputString = "";
+        chimFlag = false;
                
                Sequence trim;
                
@@ -577,6 +629,7 @@ Sequence ChimeraSlayer::print(MPI_File& out, MPI_File& outAcc, data_results left
                                        memcpy(buf2, outAccString.c_str(), length);
                                
                                        MPI_File_write_shared(outAcc, buf2, length, MPI_CHAR, &status);
+                    chimFlag = true;
                                        delete buf2;
                                        
                                        if (trimChimera) {