]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedsobscollectsummary.cpp
sffinfo bug with flow grams right index when clipQualRight=0
[mothur.git] / sharedsobscollectsummary.cpp
index c0cc50700d9f9fc38523991a1c08cf287fb1fc29..b53b09afc0091e91baf6609aa9c8d5b0ab528b63 100644 (file)
 EstOutput SharedSobsCS::getValues(vector<SharedRAbundVector*> shared){
        try {
                data.resize(1,0);
-               int observed = 0;
+               double observed = 0;
                int numGroups = shared.size();
 
-               for (int i = 0; i < shared[0]->size(); i++) {
+               for (int i = 0; i < shared[0]->getNumBins(); i++) {
                        //get bin values and set sharedByAll 
                        bool sharedByAll = true;
                        for (int j = 0; j < numGroups; j++) {
@@ -34,13 +34,39 @@ EstOutput SharedSobsCS::getValues(vector<SharedRAbundVector*> shared){
                return data;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedSobsCS class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SharedSobsCS", "getValues");
                exit(1);
        }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedSobsCS class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+}
+/***********************************************************************/
+//This returns the number of shared species observed in several groups.  
+//The shared vector is each groups sharedrabundvector.
+
+EstOutput SharedSobsCS::getValues(vector<SharedRAbundVector*> shared, vector<string>& labels){
+       try {
+               data.resize(1,0);
+               double observed = 0;
+               int numGroups = shared.size();
+        labels.clear();
+        
+               for (int i = 0; i < shared[0]->getNumBins(); i++) {
+                       //get bin values and set sharedByAll 
+                       bool sharedByAll = true;
+                       for (int j = 0; j < numGroups; j++) {
+                               if (shared[j]->getAbundance(i) == 0) { sharedByAll = false; }
+                       }
+                       
+                       //they are shared
+                       if (sharedByAll == true) {  observed++;  labels.push_back(m->currentBinLabels[i]); }
+               }
+        
+               data[0] = observed;
+               return data;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "SharedSobsCS", "getValues");
                exit(1);
-       }       
+       }
 }
 
 /***********************************************************************/