X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=inputdata.cpp;h=b237bb4fc55b0bacafa3815f9619f0345bd31492;hb=753dc84cf289b1d5dc0ca5b0c043640927aa951a;hp=4ed9c2711d2f11b0182ec165884d3747eeb0be80;hpb=d037597badc8d18e235c59f0c1114180edb7f98f;p=mothur.git diff --git a/inputdata.cpp b/inputdata.cpp index 4ed9c27..b237bb4 100644 --- a/inputdata.cpp +++ b/inputdata.cpp @@ -10,7 +10,7 @@ #include "inputdata.h" #include "ordervector.hpp" #include "listvector.hpp" -#include "utilities.hpp" +#include "rabundvector.hpp" /***********************************************************************/ @@ -24,7 +24,7 @@ InputData::InputData(string fName, string f) : format(f){ InputData::~InputData(){ - + fileHandle.close(); // delete output; } @@ -33,6 +33,7 @@ InputData::~InputData(){ InputData::InputData(string fName, string orderFileName, string f) : format(f){ try { + ifstream ofHandle; openInputFile(orderFileName, ofHandle); string name; @@ -89,7 +90,7 @@ ListVector* InputData::getListVector(){ SharedListVector* InputData::getSharedListVector(){ try { if(fileHandle){ - if (format == "shared"){ + if (format == "shared") { SharedList = new SharedListVector(fileHandle); } @@ -110,6 +111,33 @@ SharedListVector* InputData::getSharedListVector(){ } } +/***********************************************************************/ + +SharedOrderVector* InputData::getSharedOrderVector(){ + try { + if(fileHandle){ + if (format == "sharedfile") { + SharedOrder = new SharedOrderVector(fileHandle); + } + + gobble(fileHandle); + return SharedOrder; + + }else{ + return 0; + } + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the InputData class Function getSharedOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the InputData class function getSharedOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } +} + + /***********************************************************************/ @@ -119,7 +147,7 @@ OrderVector* InputData::getOrderVector(){ if(format == "list") { input = new ListVector(fileHandle); } - else if(format == "shared") { + else if (format == "shared") { input = new SharedListVector(fileHandle); } else if(format == "rabund"){ @@ -138,7 +166,7 @@ OrderVector* InputData::getOrderVector(){ gobble(fileHandle); output = new OrderVector(); *output = (input->getOrderVector()); - //delete input; + return output; } else{ @@ -154,6 +182,40 @@ OrderVector* InputData::getOrderVector(){ exit(1); } } +/***********************************************************************/ +//this is used when you don't need the order vector +vector InputData::getSharedRAbundVectors(){ + try { + if(fileHandle){ + if (format == "sharedfile") { + SharedRAbundVector* SharedRAbund = new SharedRAbundVector(fileHandle); + if (SharedRAbund != NULL) { + return SharedRAbund->getSharedRAbundVectors(); + } + }else if (format == "shared") { + SharedList = new SharedListVector(fileHandle); + if (SharedList != NULL) { + return SharedList->getSharedRAbundVector(); + } + } + gobble(fileHandle); + } + + //this is created to signal to calling function that the input file is at eof + vector null; null.push_back(NULL); + return null; + + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the InputData class Function getSharedRAbundVectors. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the InputData class function getSharedRAbundVectors. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } +} + /***********************************************************************/ @@ -163,7 +225,7 @@ SAbundVector* InputData::getSAbundVector(){ if (format == "list") { input = new ListVector(fileHandle); } - else if(format == "shared") { + else if (format == "shared") { input = new SharedListVector(fileHandle); } else if(format == "rabund"){ @@ -198,3 +260,46 @@ SAbundVector* InputData::getSAbundVector(){ } /***********************************************************************/ +RAbundVector* InputData::getRAbundVector(){ + try { + if(fileHandle){ + if (format == "list") { + input = new ListVector(fileHandle); + } + else if (format == "shared") { + input = new SharedListVector(fileHandle); + } + else if(format == "rabund"){ + input = new RAbundVector(fileHandle); + } + else if(format == "order"){ + input = new OrderVector(fileHandle); + } + else if(format == "sabund"){ + input = new SAbundVector(fileHandle); + } + + gobble(fileHandle); + + rabund = new RAbundVector(); + *rabund = (input->getRAbundVector()); + + return rabund; + } + else{ + return NULL; + } + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the InputData class Function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the InputData class function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } +} +/***********************************************************************/ + + +