-/*\r
- * interface.cpp\r
- * \r
- *\r
- * Created by Pat Schloss on 8/14/08.\r
- * Copyright 2008 Patrick D. Schloss. All rights reserved.\r
- *\r
- */\r
- \r
-#include "mothur.h"\r
-#include "engine.hpp"\r
-#include "globaldata.hpp"\r
-#include "mothurout.h"\r
-\r
-\r
-/**************************************************************************************************/\r
-\r
-GlobalData* GlobalData::_uniqueInstance = 0;\r
-CommandFactory* CommandFactory::_uniqueInstance = 0;\r
-MothurOut* MothurOut::_uniqueInstance = 0;\r
-\r
-/***********************************************************************/\r
-volatile int ctrlc_pressed = 0;\r
-void ctrlc_handler ( int sig ) {\r
- MothurOut* m = MothurOut::getInstance();\r
- ctrlc_pressed = 1;\r
- m->control_pressed = ctrlc_pressed;\r
- \r
- if (m->executing) { //if mid command quit execution, else quit mothur\r
- m->mothurOutEndLine(); m->mothurOut("quitting command..."); m->mothurOutEndLine();\r
- }else{\r
- m->mothurOut("quitting mothur"); m->mothurOutEndLine();\r
- exit(1);\r
- }\r
-}\r
-/***********************************************************************/\r
-int main(int argc, char *argv[]){\r
- MothurOut* m = MothurOut::getInstance();\r
- try {\r
- \r
- signal(SIGINT, ctrlc_handler );\r
- \r
- time_t ltime = time(NULL); /* calendar time */ \r
- string logFileName = "mothur." + toString(ltime) + ".logfile";\r
- \r
- #ifdef USE_MPI\r
- MPI_Init(&argc, &argv); \r
- #endif\r
-\r
- m->setFileName(logFileName);\r
- \r
- \r
- //version\r
- #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
- system("clear");\r
- #if defined (__APPLE__) || (__MACH__)\r
- m->mothurOutJustToLog("Mac version");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #else\r
- m->mothurOutJustToLog("Linux version");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #endif\r
-\r
- #else\r
- system("CLS");\r
- m->mothurOutJustToLog("Windows version");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #endif \r
- \r
- #ifdef USE_READLINE\r
- m->mothurOutJustToLog("Using ReadLine");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #endif\r
- \r
- #ifdef BIT_VERSION\r
- m->mothurOutJustToLog("Running 64Bit Version");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #else\r
- m->mothurOutJustToLog("Running 32Bit Version");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- #endif\r
- \r
- //header\r
- m->mothurOut("mothur v.1.11.0");\r
- m->mothurOutEndLine(); \r
- m->mothurOut("Last updated: 6/18/2010");\r
- m->mothurOutEndLine(); \r
- m->mothurOutEndLine(); \r
- m->mothurOut("by");\r
- m->mothurOutEndLine(); \r
- m->mothurOut("Patrick D. Schloss");\r
- m->mothurOutEndLine();\r
- m->mothurOutEndLine(); \r
- m->mothurOut("Department of Microbiology & Immunology");\r
- m->mothurOutEndLine(); \r
- m->mothurOut("University of Michigan");\r
- m->mothurOutEndLine(); \r
- m->mothurOut("pschloss@umich.edu");\r
- m->mothurOutEndLine(); \r
- m->mothurOut("http://www.mothur.org");\r
- m->mothurOutEndLine();\r
- m->mothurOutEndLine();\r
- m->mothurOut("When using, please cite:");\r
- m->mothurOutEndLine();\r
- m->mothurOut("Schloss, P.D., et al., Introducing mothur: Open-source, platform-independent, community-supported software for describing and comparing microbial communities. Appl Environ Microbiol, 2009. 75(23):7537-41.");\r
- m->mothurOutEndLine(); \r
- m->mothurOutEndLine(); \r
- m->mothurOut("Distributed under the GNU General Public License");\r
- m->mothurOutEndLine();\r
- m->mothurOutEndLine(); \r
- m->mothurOut("Type 'help()' for information on the commands that are available");\r
- m->mothurOutEndLine();\r
- m->mothurOutEndLine(); \r
- m->mothurOut("Type 'quit()' to exit program");\r
- m->mothurOutEndLine(); \r
- \r
- #ifdef USE_MPI\r
- m->mothurOutJustToLog("Using MPI\tversion ");\r
- int version, subversion;\r
- MPI_Get_version(&version, &subversion);\r
- m->mothurOutJustToLog(toString(version) + "." + toString(subversion) + "\n");\r
- #endif\r
- \r
- //srand(54321);\r
- srand( (unsigned)time( NULL ) );\r
- \r
- Engine* mothur;\r
- bool bail = 0;\r
- string input;\r
-\r
- if(argc>1){\r
- input = argv[1];\r
-\r
- if (input[0] == '#') {\r
- m->mothurOutJustToLog("Script Mode");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
-\r
- mothur = new ScriptEngine(argv[0], argv[1]);\r
- }else{\r
- m->mothurOutJustToLog("Batch Mode");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- \r
- mothur = new BatchEngine(argv[0], argv[1]);\r
- }\r
- }\r
- else{\r
- m->mothurOutJustToLog("Interactive Mode");\r
- m->mothurOutEndLine(); m->mothurOutEndLine();\r
- \r
- mothur = new InteractEngine(argv[0]); \r
- }\r
- \r
- while(bail == 0) { bail = mothur->getInput(); }\r
- \r
- //closes logfile so we can rename\r
- m->closeLog();\r
- \r
- string outputDir = mothur->getOutputDir();\r
- string tempLog = mothur->getLogFileName();\r
- bool append = mothur->getAppend();\r
- \r
- string newlogFileName;\r
- if (tempLog != "") {\r
- newlogFileName = outputDir + tempLog;\r
- \r
- if (!append) { \r
- //need this because m->mothurOut makes the logfile, but doesn't know where to put it\r
- rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp\r
-\r
- }else {\r
- ofstream outNewLog;\r
- openOutputFileAppend(newlogFileName, outNewLog);\r
- outNewLog << endl << endl << "*********************************************************************************" << endl << endl;\r
- outNewLog.close();\r
- \r
- appendFiles(logFileName, newlogFileName);\r
- remove(logFileName.c_str());\r
- }\r
- }else{ \r
- newlogFileName = outputDir + logFileName;\r
- //need this because m->mothurOut makes the logfile, but doesn't know where to put it\r
- rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp\r
- }\r
- \r
- \r
- delete mothur;\r
- \r
- #ifdef USE_MPI\r
- MPI_Finalize();\r
- #endif\r
- \r
- return 0;\r
- }\r
- catch(exception& e) {\r
- m->errorOut(e, "mothur", "main");\r
- exit(1);\r
- }\r
-}\r
-\r
-/**************************************************************************************************/\r
-\r
+/*
+ * interface.cpp
+ *
+ *
+ * Created by Pat Schloss on 8/14/08.
+ * Copyright 2008 Patrick D. Schloss. All rights reserved.
+ *
+ */
+
+#include "mothur.h"
+#include "engine.hpp"
+#include "mothurout.h"
+#include "referencedb.h"
+
+/**************************************************************************************************/
+
+CommandFactory* CommandFactory::_uniqueInstance = 0;
+MothurOut* MothurOut::_uniqueInstance = 0;
+ReferenceDB* ReferenceDB::myInstance = 0;
+/***********************************************************************/
+volatile int ctrlc_pressed = 0;
+void ctrlc_handler ( int sig ) {
+ MothurOut* m = MothurOut::getInstance();
+ ctrlc_pressed = 1;
+ m->control_pressed = ctrlc_pressed;
+
+ if (m->executing) { //if mid command quit execution, else quit mothur
+ m->mothurOutEndLine(); m->mothurOut("quitting command..."); m->mothurOutEndLine();
+ }else{
+ m->mothurOut("quitting mothur"); m->mothurOutEndLine();
+ exit(1);
+ }
+}
+/***********************************************************************/
+int main(int argc, char *argv[]){
+ MothurOut* m = MothurOut::getInstance();
+ try {
+ signal(SIGINT, ctrlc_handler );
+
+ time_t ltime = time(NULL); /* calendar time */
+ string logFileName = "mothur." + toString(ltime) + ".logfile";
+
+ #ifdef USE_MPI
+ MPI_Init(&argc, &argv);
+ #endif
+
+ m->setFileName(logFileName);
+
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
+ system("clear");
+ #else
+ system("CLS");
+ #endif
+
+ #ifdef MOTHUR_FILES
+ string temp = MOTHUR_FILES;
+
+ //add / to name if needed
+ string lastChar = temp.substr(temp.length()-1);
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
+ if (lastChar != "/") { temp += "/"; }
+ #else
+ if (lastChar != "\\") { temp += "\\"; }
+ #endif
+
+ temp = m->getFullPathName(temp);
+ m->setDefaultPath(temp);
+ #endif
+
+ #ifdef USE_MPI
+ int version, subversion;
+ MPI_Get_version(&version, &subversion);
+ #endif
+
+ //get releaseDate from Make
+ string releaseDate = RELEASE_DATE;
+ string mothurVersion = VERSION;
+ m->setReleaseDate(releaseDate);
+ m->setVersion(mothurVersion);
+
+ //will make the gui output "pretty"
+ bool outputHeader = true;
+ if (argc>1) {
+ string guiInput = argv[1];
+ if (guiInput[0] == '+') { outputHeader = false; }
+ if (guiInput[0] == '-') { outputHeader = false; }
+ }
+
+ if (outputHeader) {
+ //version
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
+ #if defined (__APPLE__) || (__MACH__)
+ m->mothurOutJustToLog("Mac version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #else
+ m->mothurOutJustToLog("Linux version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #else
+ m->mothurOutJustToLog("Windows version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #ifdef USE_READLINE
+ m->mothurOutJustToLog("Using ReadLine");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #ifdef MOTHUR_FILES
+ m->mothurOutJustToLog("Using default file location " + temp);
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #ifdef BIT_VERSION
+ m->mothurOutJustToLog("Running 64Bit Version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #else
+ m->mothurOutJustToLog("Running 32Bit Version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ //header
+ m->mothurOut("mothur v." + mothurVersion);
+ m->mothurOutEndLine();
+ m->mothurOut("Last updated: " + releaseDate);
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("by");
+ m->mothurOutEndLine();
+ m->mothurOut("Patrick D. Schloss");
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("Department of Microbiology & Immunology");
+ m->mothurOutEndLine();
+ m->mothurOut("University of Michigan");
+ m->mothurOutEndLine();
+ m->mothurOut("pschloss@umich.edu");
+ m->mothurOutEndLine();
+ m->mothurOut("http://www.mothur.org");
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("When using, please cite:");
+ m->mothurOutEndLine();
+ m->mothurOut("Schloss, P.D., et al., Introducing mothur: Open-source, platform-independent, community-supported software for describing and comparing microbial communities. Appl Environ Microbiol, 2009. 75(23):7537-41.");
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("Distributed under the GNU General Public License");
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("Type 'help()' for information on the commands that are available");
+ m->mothurOutEndLine();
+ m->mothurOutEndLine();
+ m->mothurOut("Type 'quit()' to exit program");
+ m->mothurOutEndLine();
+
+ #ifdef USE_MPI
+ m->mothurOutJustToLog("Using MPI\tversion ");
+ m->mothurOutJustToLog(toString(version) + "." + toString(subversion) + "\n");
+ #endif
+ }
+
+ //srand(54321);
+ srand( (unsigned)time( NULL ) );
+
+ Engine* mothur = NULL;
+ bool bail = 0;
+ string input;
+
+ if(argc>1){
+ input = argv[1];
+ //m->mothurOut("input = " + input); m->mothurOutEndLine();
+
+ if (input[0] == '#') {
+ m->mothurOutJustToLog("Script Mode");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+
+ mothur = new ScriptEngine(argv[0], argv[1]);
+ }else if (input[0] == '+') {
+ mothur = new ScriptEngine(argv[0], argv[1]);
+ m->gui = true;
+ }else if (input == "-version") {
+ m->mothurOut("Mothur version=" + mothurVersion + "\nRelease Date=" + releaseDate); m->mothurOutEndLine(); m->mothurOutEndLine(); m->closeLog();
+ #ifdef USE_MPI
+ MPI_Finalize();
+ #endif
+ return 0;
+ }else{
+ m->mothurOutJustToLog("Batch Mode");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+
+ mothur = new BatchEngine(argv[0], argv[1]);
+ }
+ }
+ else{
+ m->mothurOutJustToLog("Interactive Mode");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+
+ mothur = new InteractEngine(argv[0]);
+ }
+
+ while(bail == 0) { bail = mothur->getInput(); }
+
+ //closes logfile so we can rename
+ m->closeLog();
+
+ string outputDir = mothur->getOutputDir();
+ string tempLog = mothur->getLogFileName();
+ bool append = mothur->getAppend();
+
+ string newlogFileName;
+ if (tempLog != "") {
+ newlogFileName = outputDir + tempLog;
+
+ if (!append) {
+ //need this because m->mothurOut makes the logfile, but doesn't know where to put it
+ rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp
+
+ }else {
+ ofstream outNewLog;
+ m->openOutputFileAppend(newlogFileName, outNewLog);
+
+ if (!m->gui) {
+ outNewLog << endl << endl << "*********************************************************************************" << endl << endl;
+ }else {
+ outNewLog << endl;
+ }
+ outNewLog.close();
+
+ m->appendFiles(logFileName, newlogFileName);
+ m->mothurRemove(logFileName);
+ }
+ }else{
+ newlogFileName = outputDir + logFileName;
+ //need this because m->mothurOut makes the logfile, but doesn't know where to put it
+ rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp
+ }
+
+
+ if (mothur != NULL) { delete mothur; }
+
+ #ifdef USE_MPI
+ MPI_Finalize();
+ #endif
+
+ return 0;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "mothur", "main");
+ exit(1);
+ }
+}
+
+/**************************************************************************************************/
+