if (pid == 0) {
#endif
- ableToOpen = openInputFile(candidateFileNames[i], in);
- in.close();
-
+ ableToOpen = openInputFile(candidateFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(candidateFileNames[i]);
+ m->mothurOut("Unable to open " + candidateFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ candidateFileNames[i] = tryPath;
+ }
+ }
+ in.close();
#ifdef USE_MPI
for (int j = 1; j < processors; j++) {
MPI_Send(&ableToOpen, 1, MPI_INT, j, 2001, MPI_COMM_WORLD);
#endif
if (ableToOpen == 1) {
- m->mothurOut(candidateFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + candidateFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
candidateFileNames.erase(candidateFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] +". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(nameFileNames[i], in);
+ ableToOpen = openInputFile(nameFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(nameFileNames[i]);
+ m->mothurOut("Unable to open " + nameFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ nameFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(nameFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + nameFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
nameFileNames.erase(nameFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
#endif
ifstream in;
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
#endif
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
#endif
ifstream in;
- ableToOpen = openInputFile(namefileNames[i], in);
+ ableToOpen = openInputFile(namefileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(namefileNames[i]);
+ m->mothurOut("Unable to open " + namefileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ namefileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
}
#endif
- if (ableToOpen == 1) { m->mothurOut("Unable to match name file with fasta file."); m->mothurOutEndLine(); abort = true; }
+ if (ableToOpen == 1) {
+ m->mothurOut("Unable to open " + namefileNames[i] + ". It will be disregarded."); m->mothurOutEndLine(); abort = true;
+ //erase from file list
+ namefileNames.erase(namefileNames.begin()+i);
+ i--;
+ }
+
}
}
#endif
ifstream in;
- ableToOpen = openInputFile(groupfileNames[i], in);
+ ableToOpen = openInputFile(groupfileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(groupfileNames[i]);
+ m->mothurOut("Unable to open " + groupfileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ groupfileNames[i] = tryPath;
+ }
+ }
in.close();
#ifdef USE_MPI
}
#endif
- if (ableToOpen == 1) { m->mothurOut("Unable to match group file with fasta file, not using " + groupfileNames[i] + "."); m->mothurOutEndLine(); groupfileNames[i] = ""; }
+ if (ableToOpen == 1) {
+ m->mothurOut("Unable to open " + groupfileNames[i] + ". It will be disregarded."); m->mothurOutEndLine(); groupfileNames[i] = "";
+ //erase from file list
+ groupfileNames.erase(groupfileNames.begin()+i);
+ i--;
+ }
}
}
}
ifstream in;
- int ableToOpen = openInputFile(fastaFileNames[i], in);
+ int ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
if (ableToOpen == 1) {
- m->mothurOut(fastaFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
if (path == "") { fastafileNames[i] = inputDir + fastafileNames[i]; }
}
- int ableToOpen;
ifstream in;
- ableToOpen = openInputFile(fastafileNames[i], in);
+ int ableToOpen = openInputFile(fastafileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastafileNames[i]);
+ m->mothurOut("Unable to open " + fastafileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastafileNames[i] = tryPath;
+ }
+ }
+ in.close();
+
if (ableToOpen == 1) {
- m->mothurOut(fastafileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + fastafileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastafileNames.erase(fastafileNames.begin()+i);
i--;
-###################################################\r
-#\r
-# Makefile for mothur\r
-# Created: June 29, 2010\r
-#\r
-###################################################\r
-\r
-#\r
-# Macros\r
-#\r
-\r
-# Optimize to level 3:\r
-\r
-CXXFLAGS += -O3\r
-\r
-CYGWIN_BUILD ?= no\r
-ifeq ($(strip $(CYGWIN_BUILD)),yes)\r
- CXXFLAGS += -mno-cygwin\r
- LDFLAGS += -mno-cygwin \r
-endif\r
-\r
-64BIT_VERSION ?= yes\r
-\r
-ifeq ($(strip $(64BIT_VERSION)),yes)\r
- TARGET_ARCH += -arch x86_64\r
- CXXFLAGS += -DBIT_VERSION\r
- \r
- #if you are using centos uncomment the following lines\r
- #CC = g++44\r
- #CXXFLAGS += -mtune=native -march=native -m64\r
-endif\r
-\r
-# if you do not want to use the readline library, set this to no.\r
-# make sure you have the library installed\r
-\r
-USEREADLINE ?= yes\r
-\r
-ifeq ($(strip $(USEREADLINE)),yes)\r
- CXXFLAGS += -DUSE_READLINE\r
- LDFLAGS += \\r
- -lreadline\\r
- -lncurses\r
-endif\r
-\r
-USEMPI ?= no\r
-\r
-ifeq ($(strip $(USEMPI)),yes)\r
- CXX = mpic++\r
- CXXFLAGS += -DUSE_MPI\r
-endif\r
-\r
-#\r
-# INCLUDE directories for mothur\r
-#\r
-\r
- CXXFLAGS += -I.\r
-\r
-#\r
-# Get the list of all .cpp files, rename to .o files\r
-#\r
-\r
-OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))\r
-\r
-mothur : $(OBJECTS)\r
- $(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS)\r
-\r
-install : mothur\r
- cp mothur ../Release/mothur\r
-\r
-%.o : %.cpp %.h\r
- $(COMPILE.cpp) $(OUTPUT_OPTION) $<\r
-%.o : %.cpp %.hpp\r
- $(COMPILE.cpp) $(OUTPUT_OPTION) $<\r
-\r
-\r
-clean :\r
- @rm -f $(OBJECTS)\r
-\r
+###################################################
+#
+# Makefile for mothur
+# Created: June 29, 2010
+#
+###################################################
+
+#
+# Macros
+#
+
+# Optimize to level 3:
+
+CXXFLAGS += -O3
+
+MOTHUR_FILES = "\"Enter_your_default_path_here\""
+ifeq ($(strip $(MOTHUR_FILES)),"\"Enter_your_default_path_here\"")
+else
+ CXXFLAGS += -DMOTHUR_FILES=${MOTHUR_FILES}
+endif
+
+CYGWIN_BUILD ?= no
+ifeq ($(strip $(CYGWIN_BUILD)),yes)
+ CXXFLAGS += -mno-cygwin
+ LDFLAGS += -mno-cygwin
+endif
+
+64BIT_VERSION ?= yes
+
+ifeq ($(strip $(64BIT_VERSION)),yes)
+ TARGET_ARCH += -arch x86_64
+ CXXFLAGS += -DBIT_VERSION
+
+ #if you are using centos uncomment the following lines
+ #CC = g++44
+ #CXXFLAGS += -mtune=native -march=native -m64
+endif
+
+# if you do not want to use the readline library, set this to no.
+# make sure you have the library installed
+
+USEREADLINE ?= yes
+
+ifeq ($(strip $(USEREADLINE)),yes)
+ CXXFLAGS += -DUSE_READLINE
+ LDFLAGS += \
+ -lreadline\
+ -lncurses
+endif
+
+USEMPI ?= no
+
+ifeq ($(strip $(USEMPI)),yes)
+ CXX = mpic++
+ CXXFLAGS += -DUSE_MPI
+endif
+
+#
+# INCLUDE directories for mothur
+#
+
+ CXXFLAGS += -I.
+
+#
+# Get the list of all .cpp files, rename to .o files
+#
+
+OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
+
+mothur : $(OBJECTS)
+ $(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS)
+
+install : mothur
+ cp mothur ../Release/mothur
+
+%.o : %.cpp %.h
+ $(COMPILE.cpp) $(OUTPUT_OPTION) $<
+%.o : %.cpp %.hpp
+ $(COMPILE.cpp) $(OUTPUT_OPTION) $<
+
+
+clean :
+ @rm -f $(OBJECTS)
+
if (path == "") { fastaFileNames[i] = inputDir + fastaFileNames[i]; }
}
- int ableToOpen;
ifstream in;
-
- ableToOpen = openInputFile(fastaFileNames[i], in);
+ int ableToOpen = openInputFile(fastaFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(fastaFileNames[i]);
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ fastaFileNames[i] = tryPath;
+ }
+ }
in.close();
-
+
if (ableToOpen == 1) {
+ m->mothurOut("Unable to open " + fastaFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
fastaFileNames.erase(fastaFileNames.begin()+i);
i--;
}else{ filename += getRootName(getSimpleName(fastaFileNames[i])); }
-
}
filename += "groups";
-/*\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 "globaldata.hpp"
+#include "mothurout.h"
+
+/**************************************************************************************************/
+
+GlobalData* GlobalData::_uniqueInstance = 0;
+CommandFactory* CommandFactory::_uniqueInstance = 0;
+MothurOut* MothurOut::_uniqueInstance = 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);
+
+
+ //version
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+ system("clear");
+ #if defined (__APPLE__) || (__MACH__)
+ m->mothurOutJustToLog("Mac version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #else
+ m->mothurOutJustToLog("Linux version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #else
+ system("CLS");
+ m->mothurOutJustToLog("Windows version");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #ifdef USE_READLINE
+ m->mothurOutJustToLog("Using ReadLine");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+ #endif
+
+ #ifdef MOTHUR_FILES
+ string temp = MOTHUR_FILES;
+ m->setDefaultPath(temp);
+ 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.1.11.0");
+ m->mothurOutEndLine();
+ m->mothurOut("Last updated: 6/18/2010");
+ 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 ");
+ int version, subversion;
+ MPI_Get_version(&version, &subversion);
+ m->mothurOutJustToLog(toString(version) + "." + toString(subversion) + "\n");
+ #endif
+
+ //srand(54321);
+ srand( (unsigned)time( NULL ) );
+
+ Engine* mothur;
+ bool bail = 0;
+ string input;
+
+ if(argc>1){
+ input = argv[1];
+
+ if (input[0] == '#') {
+ m->mothurOutJustToLog("Script Mode");
+ m->mothurOutEndLine(); m->mothurOutEndLine();
+
+ mothur = new ScriptEngine(argv[0], argv[1]);
+ }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;
+ openOutputFileAppend(newlogFileName, outNewLog);
+ outNewLog << endl << endl << "*********************************************************************************" << endl << endl;
+ outNewLog.close();
+
+ appendFiles(logFileName, newlogFileName);
+ remove(logFileName.c_str());
+ }
+ }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
+ }
+
+
+ delete mothur;
+
+ #ifdef USE_MPI
+ MPI_Finalize();
+ #endif
+
+ return 0;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "mothur", "main");
+ exit(1);
+ }
+}
+
+/**************************************************************************************************/
+
}\r
}\r
/*********************************************************************************************/\r
+void MothurOut::setDefaultPath(string pathname) {\r
+ try {\r
+ \r
+ //add / to name if needed\r
+ string lastChar = pathname.substr(pathname.length()-1);\r
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
+ if (lastChar != "/") { pathname += "/"; }\r
+ #else\r
+ if (lastChar != "\\") { pathname += "\\"; } \r
+ #endif\r
+ \r
+ defaultPath = pathname;\r
+ \r
+ }\r
+ catch(exception& e) {\r
+ errorOut(e, "MothurOut", "setDefaultPath");\r
+ exit(1);\r
+ }\r
+}\r
+/*********************************************************************************************/\r
void MothurOut::closeLog() {\r
try {\r
\r
void mothurOutJustToLog(string);
void errorOut(exception&, string, string);
void closeLog();
+ string getDefaultPath() { return defaultPath; }
+ void setDefaultPath(string);
int control_pressed;
bool executing;
+
private:
static MothurOut* _uniqueInstance;
MothurOut( const MothurOut& ); // Disable copy constructor
void operator=( const MothurOut& ); // Disable assignment operator
- MothurOut() { control_pressed = false; };
+ MothurOut() { control_pressed = false; defaultPath=""; };
~MothurOut();
string logFileName;
+ string defaultPath;
ofstream out;
int mem_usage(double&, double&);
}
ifstream in;
- int ableToOpen = openInputFile(filenames[i], in);
+ int ableToOpen = openInputFile(filenames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(filenames[i]);
+ m->mothurOut("Unable to open " + filenames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ filenames[i] = tryPath;
+ }
+ }
in.close();
if (ableToOpen == 1) {
- m->mothurOut(filenames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + filenames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
filenames.erase(filenames.begin()+i);
i--;
}
ifstream in;
- int ableToOpen = openInputFile(accnosFileNames[i], in);
+ int ableToOpen = openInputFile(accnosFileNames[i], in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(accnosFileNames[i]);
+ m->mothurOut("Unable to open " + accnosFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ accnosFileNames[i] = tryPath;
+ }
+ }
in.close();
if (ableToOpen == 1) {
- m->mothurOut(accnosFileNames[i] + " will be disregarded."); m->mothurOutEndLine();
+ m->mothurOut("Unable to open " + accnosFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();
//erase from file list
accnosFileNames.erase(accnosFileNames.begin()+i);
i--;
/******************************************************/
-string ValidParameters::validFile(map<string, string> container, string parameter, bool isFile) {
+string ValidParameters::validFile(map<string, string>& container, string parameter, bool isFile) {
try {
int ableToOpen;
ifstream in;
if (pid == 0) {
#endif
- ableToOpen = openInputFile(it->second, in);
+ ableToOpen = openInputFile(it->second, in, "noerror");
+
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getDefaultPath() != "") { //default path is set
+ string tryPath = m->getDefaultPath() + getSimpleName(it->second);
+ m->mothurOut("Unable to open " + it->second + ". Trying default " + tryPath); m->mothurOutEndLine();
+ ableToOpen = openInputFile(tryPath, in, "noerror");
+ container[parameter] = tryPath;
+ }
+ }
+
in.close();
#ifdef USE_MPI
MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case
#endif
- if (ableToOpen == 1) { return "not open"; }
+ if (ableToOpen == 1) {
+ m->mothurOut("Unable to open " + container[parameter]); m->mothurOutEndLine();
+ return "not open";
+ }
}
}else { return "not found"; }
bool isValidParameter(string, vector<string>, string);
vector <string> addParameters(string[], int);
void initParameterRanges();
- string validFile(map<string, string>, string, bool); //container, parameter, isFile
+ string validFile(map<string, string>&, string, bool); //container, parameter, isFile
private:
map<string, string>::iterator it;