]> git.donarmstrong.com Git - mothur.git/blobdiff - rarefact.cpp
version working on mac with .tellg changed to unget for windows
[mothur.git] / rarefact.cpp
index 5c1ce741c951a620fb68529b834a3fd44e4b1840..67662496618d427c12363ea5ec120f21578e3f12 100644 (file)
@@ -94,15 +94,23 @@ try {
                        //randomize the groups
                        random_shuffle(lookup.begin(), lookup.end());
                        
+                       //make merge the size of lookup[0]
+                       SharedRAbundVector* merge = new SharedRAbundVector(lookup[0]->size());
+                       
+                       //make copy of lookup zero
+                       for(int i = 0; i<lookup[0]->size(); i++) {
+                               merge->set(i, lookup[0]->getAbundance(i), "merge");
+                       }
+                       
                        vector<SharedRAbundVector*> subset;
                        //send each group one at a time
                        for (int k = 0; k < lookup.size(); k++) { 
                                subset.clear(); //clears out old pair of sharedrabunds
                                //add in new pair of sharedrabunds
-                               subset.push_back(lookup[0]); subset.push_back(lookup[k]);
+                               subset.push_back(merge); subset.push_back(lookup[k]);
                                
                                rcd->updateSharedData(subset, k+1, numGroupComb);
-                               mergeVectors(lookup[0], lookup[k]);
+                               mergeVectors(merge, lookup[k]);
                        }
 
                        //resets output files
@@ -110,6 +118,7 @@ try {
                                displays[i]->reset();
                        }
                        
+                       delete merge;
                }
                
                for(int i=0;i<displays.size();i++){
@@ -134,9 +143,7 @@ void Rarefact::mergeVectors(SharedRAbundVector* shared1, SharedRAbundVector* sha
        try{
                for (int k = 0; k < shared1->size(); k++) {
                        //merge new species into shared1
-                       if ((shared1->getAbundance(k) == 0) && (shared2->getAbundance(k) != 0)) {
-                               shared1->set(k, shared2->getAbundance(k), "combo");  //set to 'combo' since this vector now contains multiple groups
-                       }
+                       shared1->set(k, (shared1->getAbundance(k) + shared2->getAbundance(k)), "combo");  //set to 'combo' since this vector now contains multiple groups
                }
        }
        catch(exception& e) {