]> git.donarmstrong.com Git - mothur.git/blobdiff - rarefact.cpp
sffinfo bug with flow grams right index when clipQualRight=0
[mothur.git] / rarefact.cpp
index d04885f4333e3f224bddbfa99aa9614e9f171b4c..0454d9e253473b368af34f35021dabbc4a50ae1b 100644 (file)
@@ -24,7 +24,7 @@ int Rarefact::getCurve(float percentFreq = 0.01, int nIters = 1000){
                if (percentFreq < 1.0) {  increment = numSeqs * percentFreq;  }
                else { increment = percentFreq;  }      
                
-               #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+               #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                                if(processors == 1){
                                        driver(rcd, increment, nIters); 
                                }else{
@@ -86,12 +86,12 @@ int Rarefact::driver(RarefactionCurveData* rcd, int increment, int nIters = 1000
                                lookup->set(binNumber, abundance);
                                rank->set(abundance, rank->get(abundance)+1);
 
-                               if((i == 0) || (i+1) % increment == 0){
+                               if((i == 0) || ((i+1) % increment == 0) || (ends.count(i+1) != 0)){
                                        rcd->updateRankData(rank);
                                }
                        }
        
-                       if(numSeqs % increment != 0){
+                       if((numSeqs % increment != 0) || (ends.count(numSeqs) != 0)){
                                rcd->updateRankData(rank);
                        }
 
@@ -114,9 +114,9 @@ int Rarefact::driver(RarefactionCurveData* rcd, int increment, int nIters = 1000
 
 int Rarefact::createProcesses(vector<int>& procIters, RarefactionCurveData* rcd, int increment) {
        try {
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                int process = 1;
-               int num = 0;
+               
                vector<int> processIDS;
                
                EstOutput results;
@@ -137,7 +137,11 @@ int Rarefact::createProcesses(vector<int>& procIters, RarefactionCurveData* rcd,
                                        displays[i]->outputTempFiles(tempFile);
                                }
                                exit(0);
-                       }else { m->mothurOut("unable to spawn the necessary processes."); m->mothurOutEndLine(); exit(0); }
+                       }else { 
+                               m->mothurOut("[ERROR]: unable to spawn the necessary processes."); m->mothurOutEndLine(); 
+                               for (int i = 0; i < processIDS.size(); i++) { kill (processIDS[i], SIGINT); }
+                               exit(0);
+                       }
                }
                
                driver(rcd, increment, procIters[0]);
@@ -153,7 +157,7 @@ int Rarefact::createProcesses(vector<int>& procIters, RarefactionCurveData* rcd,
                        for(int j=0;j<displays.size();j++){
                                string s = toString(processIDS[i]) + toString(j) + ".rarefact.temp";
                                displays[j]->inputTempFiles(s);
-                               remove(s.c_str());
+                               m->mothurRemove(s);
                        }
                }
                
@@ -179,7 +183,7 @@ try {
                }
                
                //if jumble is false all iters will be the same
-               if (globaldata->jumble == false)  {  nIters = 1;  }
+               if (m->jumble == false)  {  nIters = 1;  }
                
                //convert freq percentage to number
                int increment = 1;
@@ -192,7 +196,7 @@ try {
                                displays[i]->init(label);                 
                        }
                        
-                       if (globaldata->jumble == true)  {
+                       if (m->jumble == true)  {
                                //randomize the groups
                                random_shuffle(lookup.begin(), lookup.end());
                        }