]> git.donarmstrong.com Git - mothur.git/commitdiff
added compile time default path
authorwestcott <westcott>
Mon, 19 Jul 2010 14:39:18 +0000 (14:39 +0000)
committerwestcott <westcott>
Mon, 19 Jul 2010 14:39:18 +0000 (14:39 +0000)
17 files changed:
aligncommand.cpp
chimerabellerophoncommand.cpp
chimeraccodecommand.cpp
chimeracheckcommand.cpp
chimerapintailcommand.cpp
chimeraslayercommand.cpp
classifyseqscommand.cpp
degapseqscommand.cpp
filterseqscommand.cpp
makefile
makegroupcommand.cpp
mothur.cpp
mothurout.cpp
mothurout.h
sffinfocommand.cpp
validparameter.cpp
validparameter.h

index 8d1b40f37cd7eb9edfc708e3b9e856092de5eb5a..ee27776c11912bd9fe346f300ffc867f5164223f 100644 (file)
@@ -107,9 +107,18 @@ AlignCommand::AlignCommand(string option)  {
                                                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); 
@@ -122,7 +131,7 @@ AlignCommand::AlignCommand(string option)  {
                                        #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--;
index 2a38438fdfb4e71b68ac007dde4221a152acd6cf..fd768a753c1798d7f26012f0c8d3f065db7c6252 100644 (file)
@@ -63,7 +63,17 @@ ChimeraBellerophonCommand::ChimeraBellerophonCommand(string option)  {
                                                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  
@@ -78,7 +88,7 @@ ChimeraBellerophonCommand::ChimeraBellerophonCommand(string option)  {
                                        #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--;
index 578c7d69880f0e163685e6e4fe5782477e3a158e..69c34016e1c091b2f0a792b6ed990c82a0509fd7 100644 (file)
@@ -74,7 +74,17 @@ ChimeraCcodeCommand::ChimeraCcodeCommand(string option)  {
                                                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  
@@ -89,7 +99,7 @@ ChimeraCcodeCommand::ChimeraCcodeCommand(string option)  {
                                        #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--;
index 098896ef6d0ce514c394d677090ba2e38888de84..f002a026d55d3787d045477e40c1ba8125ea04f8 100644 (file)
@@ -73,7 +73,17 @@ ChimeraCheckCommand::ChimeraCheckCommand(string option)  {
                                                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  
@@ -88,7 +98,7 @@ ChimeraCheckCommand::ChimeraCheckCommand(string option)  {
                                        #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--;
@@ -130,7 +140,17 @@ ChimeraCheckCommand::ChimeraCheckCommand(string option)  {
                                                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  
@@ -145,7 +165,7 @@ ChimeraCheckCommand::ChimeraCheckCommand(string option)  {
                                        #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--;
index 8dffd3a222565f39f6b029e96ce65afd6c47a4e4..fa7fd170fb15cd4f224df0094b139dd24c93c88d 100644 (file)
@@ -91,7 +91,17 @@ ChimeraPintailCommand::ChimeraPintailCommand(string option)  {
                                                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  
@@ -106,7 +116,7 @@ ChimeraPintailCommand::ChimeraPintailCommand(string option)  {
                                        #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--;
index 74fd3aa7cc2be4707146df3452415eb192a7de79..89d89e38447e620dbdc12ec8aa33da955c40c012 100644 (file)
@@ -77,7 +77,17 @@ ChimeraSlayerCommand::ChimeraSlayerCommand(string option)  {
                                                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  
@@ -92,7 +102,7 @@ ChimeraSlayerCommand::ChimeraSlayerCommand(string option)  {
                                        #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--;
index 2a210b01ad3a8fb0812c1877595028a851bdbee7..a20a383b6125e135fc1aefeec47e2bc6b892f1e9 100644 (file)
@@ -107,7 +107,17 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                        #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  
@@ -122,7 +132,7 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                        #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--;
@@ -168,7 +178,17 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                        #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  
@@ -181,8 +201,14 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                                }
                                                
                                        #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--;
+                                       }
+
                                }
                        }
 
@@ -213,7 +239,17 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                        #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  
@@ -226,8 +262,13 @@ ClassifySeqsCommand::ClassifySeqsCommand(string option)  {
                                                }
                                                
                                        #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--;
+                                       }
                                }
                        }
 
index c6c4b5521fe35fa1984ecb56229a33c6c58c8163..8f8a5c3901d845b27cdbeb5a3f0c34df0b587ce2 100644 (file)
@@ -54,11 +54,21 @@ DegapSeqsCommand::DegapSeqsCommand(string option)  {
                                        }
        
                                        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--;
index fada19aeba83054f7d41b42d2827147e86215414..3784c3deab49a0c4302101372247f48f5ec3e89b 100644 (file)
@@ -72,11 +72,22 @@ FilterSeqsCommand::FilterSeqsCommand(string option)  {
                                                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--;
index 8ea410e02545278774c6b5f922c8ac40f68f946e..3f0893c5ad82d811fb4c5cf05f86f0326b4561c8 100644 (file)
--- a/makefile
+++ b/makefile
@@ -1,78 +1,84 @@
-###################################################\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)
+
index 57028c957397f8ead2e38cd326020391a61ef7a2..455826a3a8ab61ec1cf7a5af44e91ba791907583 100644 (file)
@@ -60,18 +60,26 @@ MakeGroupCommand::MakeGroupCommand(string option)  {
                                                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";
index 1e5b41bd7ca20879113e604dac03e9ffd7e6ab36..cb8d1e8715e518ed0d307fc2d50ab46961e21f92 100644 (file)
-/*\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);
+       }
+}
+
+/**************************************************************************************************/
+
index 5e0f3d8aaa85842693ef0ad709a1f761cd33ca7d..d3f8e7af788563fa1dd89a401c027175377a98dc 100644 (file)
@@ -40,6 +40,26 @@ void MothurOut::setFileName(string filename)  {
        }\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
index bf356ae285fba010f41f2bbc51b9ce093ead1b1b..1b89caf933ea4c436743ac992206904e36b51d9e 100644 (file)
@@ -25,18 +25,22 @@ class MothurOut {
                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&);
index 885aadc9c05eb34ba16d0dca6e48322dc452e5af..37ab0ba8fe01887c026311b7f03838b67dba563f 100644 (file)
@@ -54,11 +54,21 @@ SffInfoCommand::SffInfoCommand(string option)  {
                                        }
        
                                        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--;
@@ -84,11 +94,21 @@ SffInfoCommand::SffInfoCommand(string option)  {
                                        }
        
                                        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--;
index 163423b79dddc49d99ab38aa197291d0b1b254e7..e82a9e8d4446430d125c168d66e0ababc8651655 100644 (file)
@@ -197,7 +197,7 @@ bool ValidParameters::isValidParameter(string parameter, vector<string> cParams,
 
 /******************************************************/
 
-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;
@@ -217,7 +217,18 @@ string ValidParameters::validFile(map<string, string> container, string paramete
                                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  
@@ -231,7 +242,10 @@ string ValidParameters::validFile(map<string, string> container, string paramete
                                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"; }
                
index 9aeafa23a6b03f619393cc502e2c1fade566ee2a..782931f7a6ae998b896d89720116891acb080518 100644 (file)
@@ -27,7 +27,7 @@ class ValidParameters {
                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;