]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedordervector.cpp
added list parameter to get.seqs and remove.seqs and added readline library for inter...
[mothur.git] / sharedordervector.cpp
index 973f69553a476c4e67f72c4b9f10cecae0bc32b6..e1ede6d0e8048ee46cdc38b33ef47b76ffa03624 100644 (file)
@@ -7,9 +7,6 @@
  *
  */
 
-using namespace std;
-
-
 #include "sharedordervector.h"
 #include "sharedutilities.h"
 
@@ -36,7 +33,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                
                if (globaldata->gGroupmap == NULL) {  groupmap = new GroupMap(); }
                
-               int num, inputData, pos, count;
+               int num, inputData, count;
                count = 0;  numSeqs = 0;
                string holdLabel, nextLabel, groupN;
                individual newguy;
@@ -60,8 +57,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                        }
                }
                
-               //save position in file in case next line is a new label.
-               pos = f.tellg();
+               gobble(f); 
                
                if (f.eof() != true) { f >> nextLabel; }
                
@@ -85,15 +81,14 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                                }
                        }
                        
-                       //save position in file in case next line is a new label.
-                       pos = f.tellg();
-       
+                       gobble(f);
+                               
                        if (f.eof() != true) { f >> nextLabel; }
 
                }
                
                //put file pointer back since you are now at a new distance label
-               f.seekg(pos, ios::beg);
+               for (int i = 0; i < nextLabel.length(); i++) { f.unget();  }
        
                if (globaldata->gGroupmap == NULL) { globaldata->gGroupmap = groupmap; }
                
@@ -101,11 +96,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function SharedOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function SharedOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "SharedOrderVector");
                exit(1);
        }
 }
@@ -149,7 +140,7 @@ individual SharedOrderVector::get(int index){
 
 
 /***********************************************************************/
-
+//commented updateStats out to improve speed, but whoever calls this must remember to update when they are done with all the pushbacks they are doing 
 void SharedOrderVector::push_back(int binNumber, int abund, string groupName){
        individual newGuy;
        newGuy.group = groupName;
@@ -159,7 +150,8 @@ void SharedOrderVector::push_back(int binNumber, int abund, string groupName){
        //numSeqs++;
        //numBins++;
        //if (abund > maxRank) { maxRank = abund; }
-       updateStats();
+       
+       //updateStats();
 }
 
 /***********************************************************************/
@@ -174,11 +166,7 @@ void SharedOrderVector::print(ostream& output){
                output << endl;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "print");
                exit(1);
        }
 }
@@ -187,7 +175,7 @@ void SharedOrderVector::print(ostream& output){
 /***********************************************************************/
 
 void SharedOrderVector::resize(int){
-       cout << "resize() did nothing in class SharedOrderVector";
+       mothurOut("resize() did nothing in class SharedOrderVector");
 }
 
 /***********************************************************************/
@@ -230,13 +218,9 @@ RAbundVector SharedOrderVector::getRAbundVector(){
                return rav;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "getRAbundVector");
                exit(1);
        }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }       
 }
 /***********************************************************************/
 
@@ -254,11 +238,7 @@ OrderVector SharedOrderVector::getOrderVector(map<string,int>* nameMap = NULL) {
                return ov;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function getOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "getOrderVector");
                exit(1);
        }
 }
@@ -288,14 +268,9 @@ SharedRAbundVector SharedOrderVector::getSharedRAbundVector(string group) {
                return sharedRav;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "getSharedRAbundVector");
                exit(1);
        }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       
 }
 /***********************************************************************/
 vector<SharedRAbundVector*> SharedOrderVector::getSharedRAbundVector() {
@@ -310,14 +285,9 @@ vector<SharedRAbundVector*> SharedOrderVector::getSharedRAbundVector() {
                return lookup;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "getSharedRAbundVector");
                exit(1);
        }
-       
 }
 /***********************************************************************/
 SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) {
@@ -328,14 +298,9 @@ SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) {
                                
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "getSharedSAbundVector");
                exit(1);
        }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       
 }
 
 /***********************************************************************/
@@ -354,34 +319,23 @@ void SharedOrderVector::updateStats(){
                numBins = 0;
                maxRank = 0;
        
-               for(int i=0;i<data.size();i++){
-
-                       if(data[i].bin != -1){
-                               numSeqs++;
-                       }
-               }
-               //vector<individual> hold(numSeqs, 0);
-       
-               //for(int i=0;i<numSeqs;i++){
-                       //if(data[i].bin != -1){
-                               //hold[data[i].bin].bin = hold[data[i].bin].bin+1;
-                       //}
-               //}     
-
+               numSeqs = data.size();
+                               
+               vector<int> hold(numSeqs, 0);
                for(int i=0;i<numSeqs;i++){
-                       if(data[i].bin > numBins) { numBins = data[i].bin;      } 
-                       if(data[i].abundance > maxRank) {       maxRank = data[i].abundance;    }
+                       hold[data[i].bin] = hold[data[i].bin]+1;
+               }       
+               
+               for(int i=0;i<numSeqs;i++){
+                       if(hold[i] > 0)                         {       numBins++;                              }
+                       if(hold[i] > maxRank)           {       maxRank = hold[i];              }
                }
-               numBins++; //if you have 10 bins largest .bin is 9 since we start at 0.
+               
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function updateStats. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               errorOut(e, "SharedOrderVector", "updateStats");
                exit(1);
        }
-       catch(...) {
-               cout << "An unknown error has occurred in the SharedOrderVector class function updateStats. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }       
 }
 
 /***********************************************************************/