]> git.donarmstrong.com Git - mothur.git/blobdiff - rarefact.cpp
speed up rarefaction.shared
[mothur.git] / rarefact.cpp
index cb4bbbce9a4047ae08b5f37b807be3f78c255d89..5c1ce741c951a620fb68529b834a3fd44e4b1840 100644 (file)
@@ -76,46 +76,21 @@ void Rarefact::getCurve(int increment = 1, int nIters = 1000){
 
 void Rarefact::getSharedCurve(int increment = 1, int nIters = 1000){
 try {
-               globaldata = GlobalData::getInstance();
                SharedRarefactionCurveData* rcd = new SharedRarefactionCurveData();
                
+               label = lookup[0]->getLabel();
+               
                //register the displays
                for(int i=0;i<displays.size();i++){
                        rcd->registerDisplay(displays[i]);
                }
-
+               
                for(int iter=0;iter<nIters;iter++){
-                       //clear out old values for new iter
-                       lookup.clear();
                
-                       //create and initialize vector of sharedvectors, one for each group
-                       for (int i = 0; i < globaldata->Groups.size(); i++) { 
-                               SharedRAbundVector* temp = new SharedRAbundVector(sharedorder->getNumBins());
-                               temp->setLabel(sharedorder->getLabel());
-                               temp->setGroup(globaldata->Groups[i]);
-                               lookup.push_back(temp);
-                       }
-                       
                        for(int i=0;i<displays.size();i++){
                                displays[i]->init(label);                 
                        }
-               
-                       //sample all the members
-                       for(int i=0;i<numSeqs;i++){
-                               //get first sample
-                               individual chosen = sharedorder->get(i);
-                               int abundance; 
-                                       
-                               //set info for sharedvector in chosens group
-                               for (int j = 0; j < lookup.size(); j++) { 
-                                       if (chosen.group == lookup[j]->getGroup()) {
-                                               abundance = lookup[j]->getAbundance(chosen.bin);
-                                               lookup[j]->set(chosen.bin, (abundance + 1), chosen.group);
-                                               break;
-                                       }
-                               }
-                       }
-                       
+
                        //randomize the groups
                        random_shuffle(lookup.begin(), lookup.end());
                        
@@ -135,9 +110,6 @@ try {
                                displays[i]->reset();
                        }
                        
-                       for (int i = 0; i < lookup.size(); i++) {
-                               delete lookup[i];
-                       }
                }
                
                for(int i=0;i<displays.size();i++){