]> git.donarmstrong.com Git - mothur.git/commitdiff
added headers to shared and relabund files
authorwestcott <westcott>
Wed, 1 Jun 2011 17:37:36 +0000 (17:37 +0000)
committerwestcott <westcott>
Wed, 1 Jun 2011 17:37:36 +0000 (17:37 +0000)
16 files changed:
datavector.hpp
engine.cpp
getrelabundcommand.cpp
inputdata.cpp
mergegroupscommand.cpp
mothurout.h
normalizesharedcommand.cpp
removerarecommand.cpp
sharedcommand.cpp
sharedrabundfloatvector.cpp
sharedrabundfloatvector.h
sharedrabundvector.cpp
sharedrabundvector.h
sharedsabundvector.cpp
subsamplecommand.cpp
validparameter.cpp

index 734ace57988f31c3f9bd911999fdc30940ecccd6..e6c839d4772d0586457a9913df2d9e889db60e00 100644 (file)
@@ -36,6 +36,7 @@ public:
        virtual void resize(int) = 0;
        virtual int size()      = 0;
        virtual void print(ostream&) = 0;
+       virtual void printHeaders(ostream&) {};
        virtual void clear() = 0;
        
        void setLabel(string l)         {       label = l;                      }
index d595be332eed785c27037710396d1a7dd46c845e..469ff404011283d81e8744d1072e59bdacdb656b 100644 (file)
@@ -185,6 +185,7 @@ bool InteractEngine::getInput(){
                                        mout->Treenames.clear();
                                        mout->names.clear();
                                        mout->saveNextLabel = "";
+                                       mout->printedHeaders = false;
                                                        
                                        Command* command = cFactory->getCommand(commandName, options);
                                        quitCommandCalled = command->execute();
@@ -366,6 +367,7 @@ bool BatchEngine::getInput(){
                                        mout->Treenames.clear();
                                        mout->names.clear();
                                        mout->saveNextLabel = "";
+                                       mout->printedHeaders = false;
                                                        
                                        Command* command = cFactory->getCommand(commandName, options);
                                        quitCommandCalled = command->execute();
@@ -529,6 +531,7 @@ bool ScriptEngine::getInput(){
                                        mout->Treenames.clear();
                                        mout->names.clear();
                                        mout->saveNextLabel = "";
+                                       mout->printedHeaders = false;
                                                        
                                        Command* command = cFactory->getCommand(commandName, options);
                                        quitCommandCalled = command->execute();
index 91384fab4e71bb37c865c1c037e829d2581e3a1a..d4caf5b59a758899606cfc316b20cb386679307c 100644 (file)
@@ -175,6 +175,7 @@ int GetRelAbundCommand::execute(){
                        if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){                  
 
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                getRelAbundance(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -187,7 +188,7 @@ int GetRelAbundCommand::execute(){
                                for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }  
                                lookup = input->getSharedRAbundVectors(lastLabel);
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-                               
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                getRelAbundance(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -228,7 +229,7 @@ int GetRelAbundCommand::execute(){
                        lookup = input->getSharedRAbundVectors(lastLabel);
                        
                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-                       
+                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                        getRelAbundance(lookup, out);
                        
                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
index 08bab60dbd71f4e4c4d0b56472ccb199a026d85b..ac215ca99438fce1b19416c93942d8c5ef51c6a3 100644 (file)
@@ -20,12 +20,14 @@ InputData::InputData(string fName, string f) : format(f){
        filename = fName;
        m->saveNextLabel = "";
        
+       
 }
 /***********************************************************************/
 
 InputData::~InputData(){
        fileHandle.close();
        m->saveNextLabel = "";
+       
 }
 
 /***********************************************************************/
@@ -48,6 +50,7 @@ InputData::InputData(string fName, string orderFileName, string f) : format(f){
                ofHandle.close();
        
                m->openInputFile(fName, fileHandle);
+               m->saveNextLabel = "";
        }
        catch(exception& e) {
                m->errorOut(e, "InputData", "InputData");
index df74ade901634cc2cbfaa5a06877354a819e2ee2..f62bb0ca8bcf0e0cd5b63ca080208af0b1a5d00d 100644 (file)
@@ -192,6 +192,8 @@ int MergeGroupsCommand::execute(){
                        if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){                  
                                
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+                               
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                process(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -205,6 +207,7 @@ int MergeGroupsCommand::execute(){
                                lookup = input.getSharedRAbundVectors(lastLabel);
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                                
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                process(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -246,6 +249,7 @@ int MergeGroupsCommand::execute(){
                        
                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                        
+                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                        process(lookup, out);
                        
                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
index fb5b432f549de88a1fa519bc83541649a0882389..98cd6a357421b9bfc6210e245b005bd09fca423c 100644 (file)
@@ -41,7 +41,8 @@ class MothurOut {
                vector<string> Treenames;
                map<string, string> names;
                vector<string> namesOfGroups;
-               string saveNextLabel, argv;
+               string saveNextLabel, argv, sharedHeaderMode;
+               bool printedHeaders;
                
                //functions from mothur.h
                //file operations
@@ -179,6 +180,8 @@ class MothurOut {
                        processors = "1";
                        flowfile = "";
                        gui = false;
+                       printedHeaders = false;
+                       sharedHeaderMode = "";
                };
                ~MothurOut();
 
index 718eeb131397ecbe99702a1a38b20d3e8e7bc04d..07c353af3c33847978638fd71d1e220d34c090d4 100644 (file)
@@ -240,6 +240,7 @@ int NormalizeSharedCommand::execute(){
                                m->mothurOut("Normalizing to " + toString(norm) + "."); m->mothurOutEndLine();
                        }
                        
+                       
                        //as long as you are not at the end of the file or done wih the lines you want
                        while((lookup[0] != NULL) && ((allLines == 1) || (userLabels.size() != 0))) {
                                
@@ -248,6 +249,7 @@ int NormalizeSharedCommand::execute(){
                                if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){                  
                                        
                                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+                                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                        normalize(lookup, out);
                                        
                                        processedLabels.insert(lookup[0]->getLabel());
@@ -260,7 +262,7 @@ int NormalizeSharedCommand::execute(){
                                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }  
                                        lookup = input->getSharedRAbundVectors(lastLabel);
                                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-                                       
+                                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                        normalize(lookup, out);
                                        
                                        processedLabels.insert(lookup[0]->getLabel());
@@ -301,7 +303,7 @@ int NormalizeSharedCommand::execute(){
                                lookup = input->getSharedRAbundVectors(lastLabel);
                                
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-                               
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                normalize(lookup, out);
                                
                                for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
@@ -351,6 +353,8 @@ int NormalizeSharedCommand::execute(){
                                if(allLines == 1 || labels.count(lookupFloat[0]->getLabel()) == 1){                     
                                        
                                        m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+                                       
+                                       if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
                                        normalize(lookupFloat, out);
                                        
                                        processedLabels.insert(lookupFloat[0]->getLabel());
@@ -362,8 +366,9 @@ int NormalizeSharedCommand::execute(){
                                        
                                        for (int i = 0; i < lookupFloat.size(); i++) {  delete lookupFloat[i];  }  
                                        lookupFloat = input->getSharedRAbundFloatVectors(lastLabel);
-                                       m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
                                        
+                                       m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+                                       if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
                                        normalize(lookupFloat, out);
                                        
                                        processedLabels.insert(lookupFloat[0]->getLabel());
@@ -405,6 +410,7 @@ int NormalizeSharedCommand::execute(){
                                
                                m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
                                
+                               if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
                                normalize(lookupFloat, out);
                                
                                for (int i = 0; i < lookupFloat.size(); i++) {  delete lookupFloat[i];  }
index cd0b602113f496af4a1db27850e882ae04d29077..255448ece9d1ed6eb5c8d65b4d562644ddf73051 100644 (file)
@@ -646,6 +646,7 @@ int RemoveRareCommand::processShared(){
                                processedLabels.insert(lookup[0]->getLabel());
                                userLabels.erase(lookup[0]->getLabel());
                                
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                processLookup(lookup, out);
                        }
                        
@@ -659,6 +660,7 @@ int RemoveRareCommand::processShared(){
                                processedLabels.insert(lookup[0]->getLabel());
                                userLabels.erase(lookup[0]->getLabel());
                                
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                processLookup(lookup, out);                     
                                
                                //restore real lastlabel to save below
@@ -693,6 +695,7 @@ int RemoveRareCommand::processShared(){
                        
                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                        
+                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                        processLookup(lookup, out);     
                        
                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  } 
index 54b06fc1fd3a89c3b9012bd6ebf47e597866707f..b322007bc5e8ef6cba50d4c6d2ff5fce0b87a0fa 100644 (file)
@@ -319,6 +319,7 @@ int SharedCommand::execute(){
                                                return 0; 
                                        }
                                        
+                                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                        printSharedData(lookup); //prints info to the .shared file
                                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
                                
@@ -348,6 +349,7 @@ int SharedCommand::execute(){
                                                return 0; 
                                        }
                                        
+                                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                        printSharedData(lookup); //prints info to the .shared file
                                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
                                        
@@ -393,6 +395,7 @@ int SharedCommand::execute(){
                                        return 0; 
                        }
                        
+                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                        printSharedData(lookup); //prints info to the .shared file
                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
                        delete SharedList;
index 6c2dea195fdea527678277633ad08f9fbe4fc795..e7ab22565431d61a34d875322663ac107c9e21af 100644 (file)
@@ -44,8 +44,17 @@ SharedRAbundFloatVector::SharedRAbundFloatVector(ifstream& f) : DataVector(), ma
                for (int i = 0; i < lookup.size(); i++) {  delete lookup[i]; lookup[i] = NULL; }
                lookup.clear();
                
-               if (m->saveNextLabel == "") {  f >> label;  }
-               else { label = m->saveNextLabel; }
+               //are we at the beginning of the file??
+               if (m->saveNextLabel == "") {  
+                       f >> label; 
+                       
+                       //is this a shared file that has headers
+                       if (label == "label") { 
+                               //eat rest of line
+                               label = m->getline(f); m->gobble(f);
+                               f >> label;
+                       }
+               }else { label = m->saveNextLabel; }
                
                //read in first row since you know there is at least 1 group.
                f >> groupN >> num;
@@ -218,6 +227,24 @@ int SharedRAbundFloatVector::size(){
        return data.size();
 }
 /***********************************************************************/
+void SharedRAbundFloatVector::printHeaders(ostream& output){
+       try {
+               output << "label\tGroup\tnumOtus\t";
+               if (m->sharedHeaderMode == "tax") {
+                       for (int i = 0; i < numBins; i++) {  output << "PhyloType" << (i+1) << '\t'; }
+                       output << endl;
+               }else {
+                       for (int i = 0; i < numBins; i++) {  output << "Otu" << (i+1) << '\t'; }
+                       output << endl;
+               }
+               m->printedHeaders = true;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "SharedRAbundVector", "printHeaders");
+               exit(1);
+       }
+}
+/***********************************************************************/
 void SharedRAbundFloatVector::print(ostream& output){
        try {
                output << numBins << '\t';
index 06fb6044818709520d1d1ef9abd6a25368926424..12df9e87eab30fb3cc31ae8c6c7d6d5d54e81d0f 100644 (file)
@@ -55,6 +55,7 @@ public:
        int size();
        
        void print(ostream&);
+       void printHeaders(ostream&);
                
        RAbundVector getRAbundVector();
        SAbundVector getSAbundVector();
index b41c5fafa40255b1535526f79c2ce1c5dc637a43..8d0df607401c1b4f6d084812c90c1e719bf84179 100644 (file)
@@ -68,8 +68,17 @@ SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0),
                
                for (int i = 0; i < lookup.size(); i++) {  delete lookup[i]; lookup[i] = NULL; }  lookup.clear();
                
-               if (m->saveNextLabel == "") {  f >> label;  }
-               else { label = m->saveNextLabel; }
+               //are we at the beginning of the file??
+               if (m->saveNextLabel == "") {  
+                       f >> label; 
+                       
+                       //is this a shared file that has headers
+                       if (label == "label") { 
+                               //eat rest of line
+                               label = m->getline(f); m->gobble(f);
+                               f >> label;
+                       }
+               }else { label = m->saveNextLabel; }
                
                //read in first row since you know there is at least 1 group.
                f >> groupN >> num;
@@ -300,8 +309,27 @@ int SharedRAbundVector::size(){
        return data.size();
 }
 
+
+/***********************************************************************/
+void SharedRAbundVector::printHeaders(ostream& output){
+       try {
+               output << "label\tGroup\tnumOtus\t";
+               if (m->sharedHeaderMode == "tax") {
+                       for (int i = 0; i < numBins; i++) {  output << "PhyloType" << (i+1) << '\t'; }
+                       output << endl;
+               }else {
+                       for (int i = 0; i < numBins; i++) {  output << "Otu" << (i+1) << '\t'; }
+                       output << endl;
+               }
+               m->printedHeaders = true;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "SharedRAbundVector", "printHeaders");
+               exit(1);
+       }
+}
 /***********************************************************************/
-void SharedRAbundVector::print(ostream& output){
+void SharedRAbundVector::print(ostream& output) {
        try {
                output << numBins << '\t';
        
index 887478f2964b7d16407135d45905d977b1040ddf..02dc9f4dad286ae4a200bc000a0dac5a5e3d1f02 100644 (file)
@@ -61,6 +61,7 @@ public:
        vector<individual>::reverse_iterator rend();
        
        void print(ostream&);
+       void printHeaders(ostream&);
                
        RAbundVector getRAbundVector();
        RAbundVector getRAbundVector2();
index 1df608b75974d4460dfdb724c22e984ae2676789..efd14bcc249207ac4181fc552b8a918d57144083 100644 (file)
@@ -13,7 +13,7 @@
 
 /***********************************************************************/
 
-SharedSAbundVector::SharedSAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0){}
+SharedSAbundVector::SharedSAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0){  }
 
 /***********************************************************************/
 
index 66ea7e91df86eb1bc5b2b55c23b08dc852fa135a..0f7bdec57cc94e1b721c8cee65c57eb01a5e6124 100644 (file)
@@ -702,6 +702,7 @@ int SubSampleCommand::getSubSampleShared() {
                                
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                                
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                processShared(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -716,6 +717,7 @@ int SubSampleCommand::getSubSampleShared() {
                                lookup = input->getSharedRAbundVectors(lastLabel);
                                m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                                
+                               if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                                processShared(lookup, out);
                                
                                processedLabels.insert(lookup[0]->getLabel());
@@ -756,6 +758,7 @@ int SubSampleCommand::getSubSampleShared() {
                        
                        m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                        
+                       if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
                        processShared(lookup, out);
                        
                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  }
index 7855ddedd11f05b8e8c628e2d5c49c82be646a9b..3e1f3498ca0be8f0f010bd038273f3ea70f89d3c 100644 (file)
@@ -221,6 +221,10 @@ string ValidParameters::validFile(map<string, string>& container, string paramet
                if(it != container.end()){ //no parameter given
 
                        if(isFile == true) {
+                               
+                               int pos = (it->second).find(".tx.");
+                               if (pos != string::npos) { m->sharedHeaderMode = "tax"; }
+                               else { m->sharedHeaderMode = "otu"; }
                        
                        #ifdef USE_MPI  
                                int pid, processors;