]> git.donarmstrong.com Git - mothur.git/blobdiff - mothurout.h
working on pam
[mothur.git] / mothurout.h
index 9446bf9bd5c2b3c150b02944c7d8f87aeef95dca..1747b1480c732ae42f361940ff57dcbe151bbc7b 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,11 @@ 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 mothurOutJustToScreen(string); //writes to cout
                void mothurOutJustToLog(string);
                void errorOut(exception&, string, string);
                void closeLog();
@@ -35,21 +53,40 @@ 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> sharedBinLabelsInFile;
+               vector<string> currentSharedBinLabels;
+        vector<string> listBinLabelsInFile;
+               string saveNextLabel, argv, sharedHeaderMode, groupMode;
+               bool printedSharedHeaders, printedListHeaders, commandInputsConvertError, changedSeqNames, modifyNames;
                
                //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&);
+        bool dirCheck(string&); //completes path, appends appropriate / or \, makes sure dir is writable.
+               vector<unsigned long long> divideFile(string, int&); //divides splitting unevenness by sequence
+        vector<unsigned long long> divideFilePerLine(string, int&); //divides splitting unevenness at line breaks
+               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 appendBinaryFiles(string, string);
+        int appendFilesWithoutHeaders(string, string);
                int renameFile(string, string); //oldname, newname
                string getFullPathName(string);
+        string findProgramPath(string programName);
                string hasPath(string);
                string getExtension(string);
                string getPathName(string);
@@ -57,26 +94,58 @@ class MothurOut {
                string getRootName(string);
                bool isBlank(string);
                int openOutputFile(string, ofstream&);
+        int openOutputFileBinary(string, ofstream&);
                int openOutputFileAppend(string, ofstream&);
+        int openOutputFileBinaryAppend(string, ofstream&);
                int openInputFile(string, ifstream&);
-               int openInputFile(string, ifstream&, string); //no error given 
+        int openInputFileBinary(string, ifstream&);
+        int openInputFileBinary(string, ifstream&, string);
+               int openInputFile(string, ifstream&, string); //no error given
+    
+        bool checkLocations(string&, string);  //filename, inputDir. checks for file in ./, inputdir, default and mothur's exe location.  Returns false if cant be found. If found completes name with location
                string getline(ifstream&);
                string getline(istringstream&);
                void gobble(istream&);
                void gobble(istringstream&);
-               map<string, int> readNames(string);
+        vector<string> splitWhiteSpace(string& rest, char[], int);
+        vector<string> splitWhiteSpace(string);
+        set<string> readAccnos(string);
+        int readAccnos(string, vector<string>&);
+        map<string, int> readNames(string);
+        map<string, int> readNames(string, unsigned long int&);
+        int readTax(string, map<string, string>&);
+        vector<consTax> readConsTax(string);
+        int readConsTax(string, map<string, consTax2>&);
+        int readNames(string, map<string, string>&, map<string, int>&);
+               int readNames(string, map<string, string>&);
+        int readNames(string, map<string, string>&, bool);
+        int readNames(string, map<string, string>&, int);
+               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, intDist&); //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);
                bool anyLabelsToProcess(string, set<string>&, string);
                bool inUsersGroups(vector<string>, vector<string>);
+        bool inUsersGroups(vector<int>, vector< vector<int> >);
                bool inUsersGroups(string, vector<string>);
+        bool inUsersGroups(int, vector<int>);
                void getNumSeqs(ifstream&, int&);
                int getNumSeqs(ifstream&);
                int getNumNames(string);
+               int getNumChar(string, char);
                bool isTrue(string);
                bool isContainingOnlyDigits(string);
+               bool isNumeric1(string);
+        bool isLabelEquivalent(string, string);
+        string getSimpleLabel(string);
+        string findEdianness();
        
                
                //string manipulation
@@ -87,18 +156,39 @@ class MothurOut {
                void splitAtDash(string&, set<string>&);
                void splitAtDash(string&, vector<string>&);
                void splitAtChar(string&, vector<string>&, char);
+        void splitAtChar(string&, string&, char);
+        vector<string> splitWhiteSpaceWithQuotes(string);
+               int removeConfidences(string&);
+        string removeQuotes(string);
+        string makeList(vector<string>&);
+        bool isSubset(vector<string>, vector<string>); //bigSet, subset
+        int checkName(string&);
+        map<string, vector<string> > parseClasses(string);
                
                //math operation
+        double max(vector<double>&); //returns largest value in vector
+        double min(vector<double>&); //returns smallest value in vector
                int factorial(int num);
                vector<vector<double> > binomial(int);
                float ceilDist(float, int);
                float roundDist(float, int);
                unsigned int fromBase36(string);
+        double median(vector<double>);
+               int getRandomIndex(int); //highest
+        double getStandardDeviation(vector<int>&);
+        vector<double> getStandardDeviation(vector< vector<double> >&);
+        vector<double> getStandardDeviation(vector< vector<double> >&, vector<double>&);
+        vector<double> getAverages(vector< vector<double> >&);
+        double getAverage(vector<double>);
+        vector< vector<seqDist> > getStandardDeviation(vector< vector< vector<seqDist> > >&);
+        vector< vector<seqDist> > getStandardDeviation(vector< vector< vector<seqDist> > >&, vector< vector<seqDist> >&);
+        vector< vector<seqDist> > getAverages(vector< vector< vector<seqDist> > >&, string);
+        vector< vector<seqDist> > getAverages(vector< vector< vector<seqDist> > >&);
 
                int control_pressed;
-               bool executing, runParse, jumble, gui;
+               bool executing, runParse, jumble, gui, mothurCalling, debug;
                
-               //current files - if you add a new type you must edit optionParser->getParameters, get.current command and mothurOut->printCurrentFiles/clearCurrentFiles.
+               //current files - if you add a new type you must edit optionParser->getParameters, get.current and set.current commands and mothurOut->printCurrentFiles/clearCurrentFiles/getCurrentTypes. add a get and set function.
                string getPhylipFile()          { return phylipfile;            }
                string getColumnFile()          { return columnfile;            }
                string getListFile()            { return listfile;                      }
@@ -118,11 +208,15 @@ class MothurOut {
                string getOligosFile()          { return oligosfile;            }
                string getAccnosFile()          { return accnosfile;            }
                string getTaxonomyFile()        { return taxonomyfile;          }
+               string getFlowFile()            { return flowfile;                      }
+        string getBiomFile()           { return biomfile;                      }
+        string getCountTableFile()     { return counttablefile;        }
+        string getSummaryFile()     { return summaryfile;       }
                string getProcessors()          { return processors;            }
                
                void setListFile(string f)                      { listfile = getFullPathName(f);                        }
                void setTreeFile(string f)                      { treefile = getFullPathName(f);                        }
-               void setGroupFile(string f)                     { groupfile = getFullPathName(f);                       }               
+               void setGroupFile(string f)                     { groupfile = getFullPathName(f);       groupMode = "group";            }               
                void setPhylipFile(string f)            { phylipfile = getFullPathName(f);                      }
                void setColumnFile(string f)            { columnfile = getFullPathName(f);                      }
                void setNameFile(string f)                      { namefile = getFullPathName(f);                        }       
@@ -139,11 +233,16 @@ class MothurOut {
                void setOligosFile(string f)            { oligosfile = getFullPathName(f);                      }
                void setAccnosFile(string f)            { accnosfile = getFullPathName(f);                      }
                void setTaxonomyFile(string f)          { taxonomyfile = getFullPathName(f);            }
-               void setProcessors(string p)            { processors = p;                                                       }
+               void setFlowFile(string f)                      { flowfile = getFullPathName(f);                        }
+        void setBiomFile(string f)                     { biomfile = getFullPathName(f);                        }
+        void setSummaryFile(string f)          { summaryfile = getFullPathName(f);                     }
+        void setCountTableFile(string f)       { counttablefile = getFullPathName(f);  groupMode = "count";    }
+        void setProcessors(string p)           { processors = p; mothurOut("\nUsing " + toString(p) + " processors.\n");       }
                
                void printCurrentFiles();
                bool hasCurrentFiles();
                void clearCurrentFiles();
+        set<string> getCurrentTypes(); 
                
        private:
                static MothurOut* _uniqueInstance;
@@ -171,18 +270,32 @@ class MothurOut {
                        accnosfile = "";
                        taxonomyfile = "";
                        processors = "1";
+                       flowfile = "";
+            biomfile = "";
+            counttablefile = "";
+            summaryfile = "";
                        gui = false;
-               };
+                       printedSharedHeaders = false;
+            printedListHeaders = false;
+                       commandInputsConvertError = false;
+            mothurCalling = false;
+            debug = false;
+                       sharedHeaderMode = "";
+            groupMode = "group";
+            changedSeqNames = false;
+            modifyNames = true;
+               }
                ~MothurOut();
 
                string logFileName;
                string defaultPath, outputDir;
                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 accnosfile, phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, designfile, taxonomyfile, biomfile;
+               string orderfile, treefile, sharedfile, ordergroupfile, relabundfile, fastafile, qualfile, sfffile, oligosfile, processors, flowfile, counttablefile, summaryfile;
 
-       
+               vector<string> Groups;
+               vector<string> namesOfGroups;
                ofstream out;
                
                int mem_usage(double&, double&);