X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=mothurout.h;h=1747b1480c732ae42f361940ff57dcbe151bbc7b;hp=57d3f7647dabf43dd30f2caeefa9ae2bd09a0d30;hb=cf9987b67aa49777a4c91c2d21f96e58bf17aa82;hpb=65f2be9d8f9b4cf72b4aafd800fdd11ad26435fd diff --git a/mothurout.h b/mothurout.h index 57d3f76..1747b14 100644 --- a/mothurout.h +++ b/mothurout.h @@ -12,7 +12,22 @@ #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 Groups; + + void addGroup(string g) { Groups.push_back(g); } + void setGroups(vector& g) { sort(g.begin(), g.end()); Groups = g; } + void clearGroups() { Groups.clear(); } + int getNumGroups() { return Groups.size(); } + vector getGroups() { sort(Groups.begin(), Groups.end()); return Groups; } + void addAllGroup(string g) { namesOfGroups.push_back(g); } + void setAllGroups(vector& g) { sort(g.begin(), g.end()); namesOfGroups = g; } + void clearAllGroups() { namesOfGroups.clear(); } + int getNumAllGroups() { return namesOfGroups.size(); } + + vector getAllGroups() { sort(namesOfGroups.begin(), namesOfGroups.end()); return namesOfGroups; } vector Treenames; - map names; - vector namesOfGroups; - string saveNextLabel, argv; + vector sharedBinLabelsInFile; + vector currentSharedBinLabels; + vector listBinLabelsInFile; + string saveNextLabel, argv, sharedHeaderMode, groupMode; + bool printedSharedHeaders, printedListHeaders, commandInputsConvertError, changedSeqNames, modifyNames; //functions from mothur.h //file operations - vector divideFile(string, int&); - vector setFilePosEachLine(string, int&); - vector setFilePosFasta(string, int&); + bool dirCheck(string&); //completes path, appends appropriate / or \, makes sure dir is writable. + vector divideFile(string, int&); //divides splitting unevenness by sequence + vector divideFilePerLine(string, int&); //divides splitting unevenness at line breaks + int divideFile(string, int&, vector&); + vector setFilePosEachLine(string, int&); + vector 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,25 +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 readNames(string); + vector splitWhiteSpace(string& rest, char[], int); + vector splitWhiteSpace(string); + set readAccnos(string); + int readAccnos(string, vector&); + map readNames(string); + map readNames(string, unsigned long int&); + int readTax(string, map&); + vector readConsTax(string); + int readConsTax(string, map&); + int readNames(string, map&, map&); + int readNames(string, map&); + int readNames(string, map&, bool); + int readNames(string, map&, int); + int readNames(string, map >&); + int readNames(string, vector&, map&); + 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); bool inUsersGroups(vector, vector); + bool inUsersGroups(vector, vector< vector >); bool inUsersGroups(string, vector); + bool inUsersGroups(int, vector); 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 @@ -86,18 +156,39 @@ class MothurOut { void splitAtDash(string&, set&); void splitAtDash(string&, vector&); void splitAtChar(string&, vector&, char); + void splitAtChar(string&, string&, char); + vector splitWhiteSpaceWithQuotes(string); + int removeConfidences(string&); + string removeQuotes(string); + string makeList(vector&); + bool isSubset(vector, vector); //bigSet, subset + int checkName(string&); + map > parseClasses(string); //math operation + double max(vector&); //returns largest value in vector + double min(vector&); //returns smallest value in vector int factorial(int num); vector > binomial(int); float ceilDist(float, int); float roundDist(float, int); unsigned int fromBase36(string); + double median(vector); + int getRandomIndex(int); //highest + double getStandardDeviation(vector&); + vector getStandardDeviation(vector< vector >&); + vector getStandardDeviation(vector< vector >&, vector&); + vector getAverages(vector< vector >&); + double getAverage(vector); + vector< vector > getStandardDeviation(vector< vector< vector > >&); + vector< vector > getStandardDeviation(vector< vector< vector > >&, vector< vector >&); + vector< vector > getAverages(vector< vector< vector > >&, string); + vector< vector > getAverages(vector< vector< vector > >&); 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; } @@ -117,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); } @@ -138,10 +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 getCurrentTypes(); private: static MothurOut* _uniqueInstance; @@ -169,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 Groups; + vector namesOfGroups; ofstream out; int mem_usage(double&, double&);