]> git.donarmstrong.com Git - mothur.git/blobdiff - engine.cpp
changed the daughterLevels in classifiers summary file to reflect the classifications...
[mothur.git] / engine.cpp
index 90103eae920da6cd225e03606fcb2bf3d6198e2e..2ed819f9661fe728526c5e9ba59ba661f58027e9 100644 (file)
@@ -67,29 +67,27 @@ bool InteractEngine::getInput(){
                        options = parser.getOptionString();
                        
                        if (commandName != "") {
-                               mout->executing = true;
-                               
-                               #ifdef USE_MPI
-                                       int pid;
-                                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
-                                       
-                                       MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case
-                               
-                                       if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
-                               #endif
-                               //executes valid command
-                               Command* command = cFactory->getCommand(commandName, options);
-                               quitCommandCalled = command->execute();
-                               mout->control_pressed = 0;
-                               mout->executing = false;
-                               
-                               #ifdef USE_MPI
-                                       }
-                               #endif
-                       }else {
-                               mout->mothurOut("Your input contains errors. Please try again."); 
-                               mout->mothurOutEndLine();
-                       }
+                                       mout->executing = true;
+                                       #ifdef USE_MPI
+                                               int pid;
+                                               MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+cout << pid << " is here " << commandName << endl;
+                                               if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
+                                       #endif
+                                       //executes valid command
+                                       Command* command = cFactory->getCommand(commandName, options);
+                                       quitCommandCalled = command->execute();
+                                       mout->control_pressed = 0;
+                                       mout->executing = false;
+                                                                               
+                                       #ifdef USE_MPI
+                                               }
+                                       #endif
+                               }else {         
+                                       mout->mothurOut("Invalid."); 
+                                       mout->mothurOutEndLine();
+                               }
                }       
                return 1;
        }
@@ -101,6 +99,10 @@ bool InteractEngine::getInput(){
 /***********************************************************************/
 string Engine::getCommand()  {
        try {
+               #ifdef USE_MPI
+                       MPI_Barrier(MPI_COMM_WORLD);
+               #endif
+       
                #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
                        #ifdef USE_READLINE
                                char* nextCommand = NULL;
@@ -176,11 +178,11 @@ bool BatchEngine::getInput(){
                
                //CommandFactory cFactory;
                int quitCommandCalled = 0;
-       
+           int count = 0;
                while(quitCommandCalled == 0){
        
-                       if (inputBatchFile.eof()) { input = "quit()"; }
-                       else { input = getline(inputBatchFile); }
+                       input = getNextCommand(inputBatchFile);
+                       count++;
                        
                        if (input[0] != '#') {
                                
@@ -202,9 +204,8 @@ bool BatchEngine::getInput(){
                                        #ifdef USE_MPI
                                                int pid;
                                                MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
-cout << pid << " is waiting " << commandName << endl;                                          
-                                               MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case
-cout << pid << " is here " << commandName << endl;
+                                               
+cout << pid << " is here " << commandName << '\t' << count << endl;
                                                if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
                                        #endif
                                        //executes valid command
@@ -212,7 +213,7 @@ cout << pid << " is here " << commandName << endl;
                                        quitCommandCalled = command->execute();
                                        mout->control_pressed = 0;
                                        mout->executing = false;
-                               
+                                                                               
                                        #ifdef USE_MPI
                                                }
                                        #endif
@@ -233,7 +234,27 @@ cout << pid << " is here " << commandName << endl;
                exit(1);
        }
 }
-
+/***********************************************************************/
+string BatchEngine::getNextCommand(ifstream& inputBatchFile) {
+       try {
+               
+               #ifdef USE_MPI
+                       int err = MPI_Barrier(MPI_COMM_WORLD);
+//cout << "barrier = " << err << '\t' << MPI_SUCCESS << endl;
+               #endif
+               
+               string nextcommand = "";
+               
+               if (inputBatchFile.eof()) { nextcommand = "quit()"; }
+               else { nextcommand = getline(inputBatchFile); }
+               
+               return nextcommand;
+       }
+       catch(exception& e) {
+               mout->errorOut(e, "BatchEngine", "getNextCommand");
+               exit(1);
+       }
+}
 
 /***********************************************************************/
 /***********************************************************************/
@@ -291,28 +312,33 @@ bool ScriptEngine::getInput(){
                        options = parser.getOptionString();
                                                                                
                        if (commandName != "") {
-                               mout->executing = true;
-                               #ifdef USE_MPI
-                                       int pid;
-                                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
-                                       
-                                       MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case
+                                       mout->executing = true;
+                                       #ifdef USE_MPI
+                                               int pid, numProcesses;
+                                               MPI_Status status; 
+                                               
+                                               MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                               MPI_Comm_size(MPI_COMM_WORLD, &numProcesses); 
                                        
-                                       if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
-                               #endif
-                               //executes valid command
-                               Command* command = cFactory->getCommand(commandName, options);
-                               quitCommandCalled = command->execute();
-                               mout->control_pressed = 0;
-                               mout->executing = false;
-                               
-                               #ifdef USE_MPI
-                                       }
-                               #endif
-                       }else {         
-                               mout->mothurOut("Invalid."); 
-                               mout->mothurOutEndLine();
-                       }
+cout << pid << " is here " << commandName  << endl;
+                                               if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
+                                                       cout << pid << " is in execute" << endl;        
+                                       #endif
+                                       //executes valid command
+                                       Command* command = cFactory->getCommand(commandName, options);
+                                       quitCommandCalled = command->execute();
+                                       mout->control_pressed = 0;
+                                       mout->executing = false;
+                                                                       
+                                       #ifdef USE_MPI
+                                       cout << pid << " is done in execute" << endl;
+                                               }
+                                       #endif
+                               }else {         
+                                       mout->mothurOut("Invalid."); 
+                                       mout->mothurOutEndLine();
+                               }
+
                        
                }
                
@@ -326,6 +352,11 @@ bool ScriptEngine::getInput(){
 /***********************************************************************/
 string ScriptEngine::getNextCommand(string& commandString) {
        try {
+               
+               #ifdef USE_MPI
+                       MPI_Barrier(MPI_COMM_WORLD);
+               #endif
+               
                string nextcommand = "";
                int count = 0;
                
@@ -350,7 +381,7 @@ string ScriptEngine::getNextCommand(string& commandString) {
                                if (commandString.length() == 0) {  break;  }
                        }
                }
-                                       
+               
                return nextcommand;
        }
        catch(exception& e) {