]> git.donarmstrong.com Git - mothur.git/blobdiff - mothurout.h
added pcr.seqs command. fixed bug in rarefacftion.single that caused parsing error...
[mothur.git] / mothurout.h
index 9446bf9bd5c2b3c150b02944c7d8f87aeef95dca..e1c8222ae1938e8b63422cc9ee6567d309b668f5 100644 (file)
 
 #include "mothur.h"
 
-
+/***********************************************/
+struct logger {
+    
+    logger() {}
+    ~logger() {}
+    
+    template< class T >
+    logger& operator <<( const T& o ) {
+        cout << o; return *this;
+    }
+    
+    logger& operator<<(ostream& (*m)(ostream&) ) {
+        cout << m; return *this;
+    }
+    
+}; 
 /***********************************************/
 
 class MothurOut {
@@ -21,8 +36,10 @@ class MothurOut {
                static MothurOut* getInstance();
                void setFileName(string);
                
-               void mothurOut(string);
-               void mothurOutEndLine();
+               void mothurOut(string); //writes to cout and the logfile
+               void mothurOutEndLine(); //writes to cout and the logfile
+               void mothurOut(string, ofstream&); //writes to the ofstream, cout and the logfile
+               void mothurOutEndLine(ofstream&); //writes to the ofstream, cout and the logfile
                void mothurOutJustToLog(string);
                void errorOut(exception&, string, string);
                void closeLog();
@@ -35,19 +52,33 @@ class MothurOut {
                void setReleaseDate(string r) { releaseDate = r; }
                string getVersion() { return version; }
                void setVersion(string r) { version = r; }
-               vector<string> Groups;
+       
+               void addGroup(string g) { Groups.push_back(g); }
+               void setGroups(vector<string>& g) { sort(g.begin(), g.end()); Groups = g; }
+               void clearGroups() { Groups.clear(); }
+           int getNumGroups() { return Groups.size(); }
+               vector<string> getGroups() { sort(Groups.begin(), Groups.end()); return Groups; }
+               void addAllGroup(string g) { namesOfGroups.push_back(g); }
+               void setAllGroups(vector<string>& g) { sort(g.begin(), g.end()); namesOfGroups = g; }
+               void clearAllGroups() { namesOfGroups.clear(); }
+               int getNumAllGroups() { return namesOfGroups.size(); }
+       
+               vector<string> getAllGroups() { sort(namesOfGroups.begin(), namesOfGroups.end()); return namesOfGroups; }
                vector<string> Treenames;
                map<string, string> names;
-               vector<string> namesOfGroups;
-               string saveNextLabel, argv;
+               vector<string> binLabelsInFile;
+               vector<string> currentBinLabels;
+               string saveNextLabel, argv, sharedHeaderMode;
+               bool printedHeaders, commandInputsConvertError;
                
                //functions from mothur.h
                //file operations
-               vector<unsigned long int> divideFile(string, int&);
-               vector<unsigned long int> setFilePosEachLine(string, int&);
-               vector<unsigned long int> setFilePosFasta(string, int&);
+               vector<unsigned long long> divideFile(string, int&);
+               int divideFile(string, int&, vector<string>&);
+               vector<unsigned long long> setFilePosEachLine(string, int&);
+               vector<unsigned long long> setFilePosFasta(string, int&);
                string sortFile(string, string);
-               void appendFiles(string, string);
+               int appendFiles(string, string);
                int renameFile(string, string); //oldname, newname
                string getFullPathName(string);
                string hasPath(string);
@@ -65,7 +96,14 @@ class MothurOut {
                void gobble(istream&);
                void gobble(istringstream&);
                map<string, int> readNames(string);
+               int readNames(string, map<string, string>&);
+               int readNames(string, map<string, vector<string> >&);
                int readNames(string, vector<seqPriorityNode>&, map<string, string>&);
+               int mothurRemove(string);
+               bool mothurConvert(string, int&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
+               bool mothurConvert(string, float&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
+               bool mothurConvert(string, double&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
+       
                
                //searchs and checks
                bool checkReleaseVersion(ifstream&, string);
@@ -75,8 +113,10 @@ class MothurOut {
                void getNumSeqs(ifstream&, int&);
                int getNumSeqs(ifstream&);
                int getNumNames(string);
+               int getNumChar(string, char);
                bool isTrue(string);
                bool isContainingOnlyDigits(string);
+               bool isNumeric1(string);
        
                
                //string manipulation
@@ -87,6 +127,7 @@ class MothurOut {
                void splitAtDash(string&, set<string>&);
                void splitAtDash(string&, vector<string>&);
                void splitAtChar(string&, vector<string>&, char);
+               int removeConfidences(string&);
                
                //math operation
                int factorial(int num);
@@ -94,9 +135,10 @@ class MothurOut {
                float ceilDist(float, int);
                float roundDist(float, int);
                unsigned int fromBase36(string);
+               int getRandomIndex(int); //highest
 
                int control_pressed;
-               bool executing, runParse, jumble, gui;
+               bool executing, runParse, jumble, gui, mothurCalling;
                
                //current files - if you add a new type you must edit optionParser->getParameters, get.current command and mothurOut->printCurrentFiles/clearCurrentFiles.
                string getPhylipFile()          { return phylipfile;            }
@@ -118,6 +160,7 @@ class MothurOut {
                string getOligosFile()          { return oligosfile;            }
                string getAccnosFile()          { return accnosfile;            }
                string getTaxonomyFile()        { return taxonomyfile;          }
+               string getFlowFile()            { return flowfile;                      }
                string getProcessors()          { return processors;            }
                
                void setListFile(string f)                      { listfile = getFullPathName(f);                        }
@@ -139,6 +182,7 @@ class MothurOut {
                void setOligosFile(string f)            { oligosfile = getFullPathName(f);                      }
                void setAccnosFile(string f)            { accnosfile = getFullPathName(f);                      }
                void setTaxonomyFile(string f)          { taxonomyfile = getFullPathName(f);            }
+               void setFlowFile(string f)                      { flowfile = getFullPathName(f);                        }
                void setProcessors(string p)            { processors = p;                                                       }
                
                void printCurrentFiles();
@@ -171,8 +215,13 @@ class MothurOut {
                        accnosfile = "";
                        taxonomyfile = "";
                        processors = "1";
+                       flowfile = "";
                        gui = false;
-               };
+                       printedHeaders = false;
+                       commandInputsConvertError = false;
+            mothurCalling = false;
+                       sharedHeaderMode = "";
+               }
                ~MothurOut();
 
                string logFileName;
@@ -180,9 +229,10 @@ class MothurOut {
                string releaseDate, version;
        
                string accnosfile, phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, designfile, taxonomyfile;
-               string orderfile, treefile, sharedfile, ordergroupfile, relabundfile, fastafile, qualfile, sfffile, oligosfile, processors;
+               string orderfile, treefile, sharedfile, ordergroupfile, relabundfile, fastafile, qualfile, sfffile, oligosfile, processors, flowfile;
 
-       
+               vector<string> Groups;
+               vector<string> namesOfGroups;
                ofstream out;
                
                int mem_usage(double&, double&);