8 * Created by westcott on 2/25/10.
9 * Copyright 2010 Schloss Lab. All rights reserved.
15 /***********************************************/
22 logger& operator <<( const T& o ) {
23 cout << o; return *this;
26 logger& operator<<(ostream& (*m)(ostream&) ) {
27 cout << m; return *this;
31 /***********************************************/
36 static MothurOut* getInstance();
37 void setFileName(string);
39 void mothurOut(string); //writes to cout and the logfile
40 void mothurOutEndLine(); //writes to cout and the logfile
41 void mothurOut(string, ofstream&); //writes to the ofstream, cout and the logfile
42 void mothurOutEndLine(ofstream&); //writes to the ofstream, cout and the logfile
43 void mothurOutJustToLog(string);
44 void errorOut(exception&, string, string);
46 string getDefaultPath() { return defaultPath; }
47 void setDefaultPath(string);
48 string getOutputDir() { return outputDir; }
49 void setOutputDir(string);
51 string getReleaseDate() { return releaseDate; }
52 void setReleaseDate(string r) { releaseDate = r; }
53 string getVersion() { return version; }
54 void setVersion(string r) { version = r; }
56 void addGroup(string g) { Groups.push_back(g); }
57 void setGroups(vector<string>& g) { sort(g.begin(), g.end()); Groups = g; }
58 void clearGroups() { Groups.clear(); }
59 int getNumGroups() { return Groups.size(); }
60 vector<string> getGroups() { sort(Groups.begin(), Groups.end()); return Groups; }
61 void addAllGroup(string g) { namesOfGroups.push_back(g); }
62 void setAllGroups(vector<string>& g) { sort(g.begin(), g.end()); namesOfGroups = g; }
63 void clearAllGroups() { namesOfGroups.clear(); }
64 int getNumAllGroups() { return namesOfGroups.size(); }
66 vector<string> getAllGroups() { sort(namesOfGroups.begin(), namesOfGroups.end()); return namesOfGroups; }
67 vector<string> Treenames;
68 //map<string, string> names;
69 vector<string> binLabelsInFile;
70 vector<string> currentBinLabels;
71 string saveNextLabel, argv, sharedHeaderMode;
72 bool printedHeaders, commandInputsConvertError;
74 //functions from mothur.h
76 bool dirCheck(string&); //completes path, appends appropriate / or \, makes sure dir is writable.
77 vector<unsigned long long> divideFile(string, int&);
78 int divideFile(string, int&, vector<string>&);
79 vector<unsigned long long> setFilePosEachLine(string, int&);
80 vector<unsigned long long> setFilePosFasta(string, int&);
81 string sortFile(string, string);
82 int appendFiles(string, string);
83 int renameFile(string, string); //oldname, newname
84 string getFullPathName(string);
85 string hasPath(string);
86 string getExtension(string);
87 string getPathName(string);
88 string getSimpleName(string);
89 string getRootName(string);
91 int openOutputFile(string, ofstream&);
92 int openOutputFileAppend(string, ofstream&);
93 int openInputFile(string, ifstream&);
94 int openInputFile(string, ifstream&, string); //no error given
95 string getline(ifstream&);
96 string getline(istringstream&);
97 void gobble(istream&);
98 void gobble(istringstream&);
99 map<string, int> readNames(string);
100 int readNames(string, map<string, string>&);
101 int readNames(string, map<string, vector<string> >&);
102 int readNames(string, vector<seqPriorityNode>&, map<string, string>&);
103 int mothurRemove(string);
104 bool mothurConvert(string, int&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
105 bool mothurConvert(string, float&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
106 bool mothurConvert(string, double&); //use for converting user inputs. Sets commandInputsConvertError to true if error occurs. Engines check this.
110 bool checkReleaseVersion(ifstream&, string);
111 bool anyLabelsToProcess(string, set<string>&, string);
112 bool inUsersGroups(vector<string>, vector<string>);
113 bool inUsersGroups(string, vector<string>);
114 void getNumSeqs(ifstream&, int&);
115 int getNumSeqs(ifstream&);
116 int getNumNames(string);
117 int getNumChar(string, char);
119 bool isContainingOnlyDigits(string);
120 bool isNumeric1(string);
123 //string manipulation
124 void splitAtEquals(string&, string&);
125 void splitAtComma(string&, string&);
126 void splitAtComma(string&, vector<string>&);
127 void splitAtDash(string&, set<int>&);
128 void splitAtDash(string&, set<string>&);
129 void splitAtDash(string&, vector<string>&);
130 void splitAtChar(string&, vector<string>&, char);
131 void splitAtChar(string&, string&, char);
132 int removeConfidences(string&);
133 string makeList(vector<string>&);
136 int factorial(int num);
137 vector<vector<double> > binomial(int);
138 float ceilDist(float, int);
139 float roundDist(float, int);
140 unsigned int fromBase36(string);
141 int getRandomIndex(int); //highest
144 bool executing, runParse, jumble, gui, mothurCalling, debug;
146 //current files - if you add a new type you must edit optionParser->getParameters, get.current command and mothurOut->printCurrentFiles/clearCurrentFiles.
147 string getPhylipFile() { return phylipfile; }
148 string getColumnFile() { return columnfile; }
149 string getListFile() { return listfile; }
150 string getRabundFile() { return rabundfile; }
151 string getSabundFile() { return sabundfile; }
152 string getNameFile() { return namefile; }
153 string getGroupFile() { return groupfile; }
154 string getOrderFile() { return orderfile; }
155 string getOrderGroupFile() { return ordergroupfile; }
156 string getTreeFile() { return treefile; }
157 string getSharedFile() { return sharedfile; }
158 string getRelAbundFile() { return relabundfile; }
159 string getDesignFile() { return designfile; }
160 string getFastaFile() { return fastafile; }
161 string getSFFFile() { return sfffile; }
162 string getQualFile() { return qualfile; }
163 string getOligosFile() { return oligosfile; }
164 string getAccnosFile() { return accnosfile; }
165 string getTaxonomyFile() { return taxonomyfile; }
166 string getFlowFile() { return flowfile; }
167 string getBiomFile() { return biomfile; }
168 string getProcessors() { return processors; }
170 void setListFile(string f) { listfile = getFullPathName(f); }
171 void setTreeFile(string f) { treefile = getFullPathName(f); }
172 void setGroupFile(string f) { groupfile = getFullPathName(f); }
173 void setPhylipFile(string f) { phylipfile = getFullPathName(f); }
174 void setColumnFile(string f) { columnfile = getFullPathName(f); }
175 void setNameFile(string f) { namefile = getFullPathName(f); }
176 void setRabundFile(string f) { rabundfile = getFullPathName(f); }
177 void setSabundFile(string f) { sabundfile = getFullPathName(f); }
178 void setSharedFile(string f) { sharedfile = getFullPathName(f); }
179 void setRelAbundFile(string f) { relabundfile = getFullPathName(f); }
180 void setOrderFile(string f) { orderfile = getFullPathName(f); }
181 void setOrderGroupFile(string f) { ordergroupfile = getFullPathName(f); }
182 void setDesignFile(string f) { designfile = getFullPathName(f); }
183 void setFastaFile(string f) { fastafile = getFullPathName(f); }
184 void setSFFFile(string f) { sfffile = getFullPathName(f); }
185 void setQualFile(string f) { qualfile = getFullPathName(f); }
186 void setOligosFile(string f) { oligosfile = getFullPathName(f); }
187 void setAccnosFile(string f) { accnosfile = getFullPathName(f); }
188 void setTaxonomyFile(string f) { taxonomyfile = getFullPathName(f); }
189 void setFlowFile(string f) { flowfile = getFullPathName(f); }
190 void setBiomFile(string f) { biomfile = getFullPathName(f); }
191 void setProcessors(string p) { processors = p; }
193 void printCurrentFiles();
194 bool hasCurrentFiles();
195 void clearCurrentFiles();
198 static MothurOut* _uniqueInstance;
199 MothurOut( const MothurOut& ); // Disable copy constructor
200 void operator=( const MothurOut& ); // Disable assignment operator
202 control_pressed = false; defaultPath="";
226 printedHeaders = false;
227 commandInputsConvertError = false;
228 mothurCalling = false;
230 sharedHeaderMode = "";
235 string defaultPath, outputDir;
236 string releaseDate, version;
238 string accnosfile, phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, designfile, taxonomyfile, biomfile;
239 string orderfile, treefile, sharedfile, ordergroupfile, relabundfile, fastafile, qualfile, sfffile, oligosfile, processors, flowfile;
241 vector<string> Groups;
242 vector<string> namesOfGroups;
245 int mem_usage(double&, double&);
248 /***********************************************/