]> git.donarmstrong.com Git - mothur.git/commitdiff
latest version
authorwestcott <westcott>
Tue, 1 Jun 2010 13:52:48 +0000 (13:52 +0000)
committerwestcott <westcott>
Tue, 1 Jun 2010 13:52:48 +0000 (13:52 +0000)
bayesian.cpp
chimera.cpp
classifyseqscommand.cpp
engine.cpp
fullmatrix.cpp
getoturepcommand.cpp

index 57b8e20def801dffdf90f7e49d061d90d8c7a576..b46f7703a971b8b5141d42faf14e26d45037cba0 100644 (file)
@@ -17,9 +17,11 @@ Classify(), kmerSize(ksize), confidenceThreshold(cutoff), iters(i)  {
        try {
                                        
                /************calculate the probablity that each word will be in a specific taxonomy*************/
-               string phyloTreeName = tfile.substr(0,tfile.find_last_of(".")+1) + "tree.train";
-               string probFileName = tfile.substr(0,tfile.find_last_of(".")+1) + tempFile.substr(0,tempFile.find_last_of(".")+1) + char('0'+ kmerSize) + "mer.prob";
-               string probFileName2 = tfile.substr(0,tfile.find_last_of(".")+1) + tempFile.substr(0,tempFile.find_last_of(".")+1) + char('0'+ kmerSize) + "mer.numNonZero";
+               string tfileroot = tfile.substr(0,tfile.find_last_of(".")+1);
+               string tempfileroot = getRootName(getSimpleName(tempFile));
+               string phyloTreeName = tfileroot + "tree.train";
+               string probFileName = tfileroot + tempfileroot + char('0'+ kmerSize) + "mer.prob";
+               string probFileName2 = tfileroot + tempfileroot + char('0'+ kmerSize) + "mer.numNonZero";
                
                ofstream out;
                ofstream out2;
index 483e5530b094ce011a1e8894a6160a9ea60f2361..3ab95892b9df8d1ad9692c2bca8b413412d3e0e5 100644 (file)
@@ -31,6 +31,8 @@ string Chimera::createFilter(vector<Sequence*> seqs, float t) {
                        if (m->control_pressed) { return filterString; }
                
                        string seqAligned = seqs[i]->getAligned();
+                       
+                       if (seqAligned.length() != filterString.length()) {  m->mothurOut(seqs[i]->getName() + " is not the same length as the template sequences. Aborting!\n");  exit(1); }
                
                        for (int j = 0; j < seqAligned.length(); j++) {
                                //if this spot is a gap
index eee316093d81b9385cac7ff428ed2671cf3aee1e..7d015a85aed7e084926a918888f6e5ee761228cc 100644 (file)
@@ -635,7 +635,7 @@ int ClassifySeqsCommand::execute(){
                        rename(unclass.c_str(), newTaxonomyFile.c_str());
                        
                        m->mothurOutEndLine();
-                       m->mothurOut("It took " + toString(time(NULL) - start) + " secs to create the summary file for  " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine();
+                       m->mothurOut("It took " + toString(time(NULL) - start) + " secs to create the summary file for " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine();
                        
                        #ifdef USE_MPI  
                                }
index 90103eae920da6cd225e03606fcb2bf3d6198e2e..acd417cd8477516f2a670f6a34257964d6c442c3 100644 (file)
@@ -67,29 +67,40 @@ 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); 
+                                               
+                                               if ((pid != 0) && !(cFactory->MPIEnabled(commandName))) {
+cout << pid << " is waiting " << commandName << endl;                                          
+                                                       char buf[4];
+                                                       MPI_Bcast(buf, 4, MPI_CHAR, 0, MPI_COMM_WORLD); //make everyone wait - just in case
+                                               }
+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
+                                                       if (!(cFactory->MPIEnabled(commandName))) {
+                                                               char buf[4];
+                                                               strcpy(buf, "done"); 
+
+                                                               MPI_Bcast(buf, 4, MPI_CHAR, 0, MPI_COMM_WORLD); //make everyone wait - just in case
+                               cout << pid << " is broadcasting " << endl;
+                                                       }
+                                               }
+                                       #endif
+                               }else {         
+                                       mout->mothurOut("Invalid."); 
+                                       mout->mothurOutEndLine();
+                               }
                }       
                return 1;
        }
@@ -202,8 +213,13 @@ bool BatchEngine::getInput(){
                                        #ifdef USE_MPI
                                                int pid;
                                                MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                               
+                                               if ((pid != 0) && !(cFactory->MPIEnabled(commandName))) {
 cout << pid << " is waiting " << commandName << endl;                                          
-                                               MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case
+                                                       char buf[4];
+                                                       MPI_Bcast(buf, 4, MPI_CHAR, 0, MPI_COMM_WORLD); //make everyone wait - just in case
+                                               }
 cout << pid << " is here " << commandName << endl;
                                                if ((cFactory->MPIEnabled(commandName)) || (pid == 0)) {
                                        #endif
@@ -212,8 +228,15 @@ cout << pid << " is here " << commandName << endl;
                                        quitCommandCalled = command->execute();
                                        mout->control_pressed = 0;
                                        mout->executing = false;
-                               
+                                                                               
                                        #ifdef USE_MPI
+                                                       if (!(cFactory->MPIEnabled(commandName))) {
+                                                               char buf[4];
+                                                               strcpy(buf, "done"); 
+
+                                                               MPI_Bcast(buf, 4, MPI_CHAR, 0, MPI_COMM_WORLD); //make everyone wait - just in case
+                               cout << pid << " is broadcasting " << endl;
+                                                       }
                                                }
                                        #endif
                                }else {         
@@ -291,28 +314,55 @@ 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_Request request;
+                                               
+                                               MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                               MPI_Comm_size(MPI_COMM_WORLD, &numProcesses); 
+                                               
+                                               if ((pid != 0) && (!(cFactory->MPIEnabled(commandName)))) {
+cout << pid << " is waiting " << commandName << endl;                                          
+                                                       char buf[12];
+                                                       
+                                                       MPI_Recv(buf, 12, MPI_CHAR, 0, 2001, MPI_COMM_WORLD, &status);  //make everyone wait - just in case
+                                                       //MPI_Wait(&request, &status);
+                                       cout << pid << " received " << buf << 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();
-                       }
+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;
+                                                       if ((pid == 0) && (!(cFactory->MPIEnabled(commandName)))) {
+                                                               char buf[12];
+                                                               strcpy(buf, "command done"); 
+                                                               
+                                                               for(int i = 1; i < numProcesses; i++) { 
+                                                                       MPI_Send(buf, 12, MPI_CHAR, i, 2001, MPI_COMM_WORLD); //make everyone wait - just in case
+                                                                       //MPI_Wait(&request, &status);
+                                               cout << pid << " sent " << buf << endl;
+                                                               }
+                               cout << pid << " is sending " << endl;
+                                                       }
+                                               }
+                                       #endif
+                               }else {         
+                                       mout->mothurOut("Invalid."); 
+                                       mout->mothurOutEndLine();
+                               }
+
                        
                }
                
@@ -326,6 +376,12 @@ bool ScriptEngine::getInput(){
 /***********************************************************************/
 string ScriptEngine::getNextCommand(string& commandString) {
        try {
+               
+               #ifdef USE_MPI
+               int ierr = MPI_Barrier(MPI_COMM_WORLD);
+cout << "barrier = " << ierr << endl;
+               #endif
+               
                string nextcommand = "";
                int count = 0;
                
@@ -350,7 +406,7 @@ string ScriptEngine::getNextCommand(string& commandString) {
                                if (commandString.length() == 0) {  break;  }
                        }
                }
-                                       
+               
                return nextcommand;
        }
        catch(exception& e) {
index 43c6f2e30a6dc04458e5aab7c42a8ada3636dae5..8091554e946668fa47259f8157fb6bd489fb8b38 100644 (file)
@@ -18,8 +18,9 @@ FullMatrix::FullMatrix(ifstream& filehandle) {
                groupmap = globaldata->gGroupmap;
                
                string name, group;
-               filehandle >> numSeqs >> name;
                
+               filehandle >> numSeqs >> name;
+       
                //make the matrix filled with zeros
                matrix.resize(numSeqs); 
                for(int i = 0; i < numSeqs; i++) {
@@ -55,7 +56,7 @@ FullMatrix::FullMatrix(ifstream& filehandle) {
                                break;
                        }
                }
-               
+       cout << "here" << endl; 
                //read rest of matrix
                if (square == true) {  readSquareMatrix(filehandle); }
                else {  readLTMatrix(filehandle); }
@@ -73,7 +74,7 @@ FullMatrix::FullMatrix(ifstream& filehandle) {
 /**************************************************************************/
 int FullMatrix::readSquareMatrix(ifstream& filehandle) {
        try {
-       
+       cout << "square" << endl;
                Progress* reading;
                reading = new Progress("Reading matrix:     ", numSeqs * numSeqs);
                
@@ -116,6 +117,7 @@ int FullMatrix::readSquareMatrix(ifstream& filehandle) {
 /**************************************************************************/
 int FullMatrix::readLTMatrix(ifstream& filehandle) {
        try {
+       cout << "lt" << endl;   
                Progress* reading;
                reading = new Progress("Reading matrix:     ", numSeqs * (numSeqs - 1) / 2);
                
index 91990811173cea55be293e643647ff8a1352db77..a73fdf67bd24baf00d8cda5d3bb1f54ff708bc08 100644 (file)
@@ -324,7 +324,7 @@ int GetOTURepCommand::execute(){
                                
                //set format to list so input can get listvector
                globaldata->setFormat("list");
-
+       
                //read list file
                read = new ReadOTUFile(listfile);
                read->read(&*globaldata); 
@@ -332,7 +332,7 @@ int GetOTURepCommand::execute(){
                input = globaldata->ginput;
                list = globaldata->gListVector;
                string lastLabel = list->getLabel();
-               
+
                //if the users enters label "0.06" and there is no "0.06" in their file use the next lowest label.
                set<string> processedLabels;
                set<string> userLabels = labels;
@@ -382,7 +382,7 @@ int GetOTURepCommand::execute(){
                        }
                        
                        lastLabel = list->getLabel();
-                       
+       
                        delete list;
                        list = input->getListVector();
                }
@@ -390,8 +390,8 @@ int GetOTURepCommand::execute(){
                //output error messages about any remaining user labels
                bool needToRun = false;
                for (set<string>::iterator it = userLabels.begin(); it != userLabels.end(); it++) {  
-                       m->mothurOut("Your file does not include the label " + *it); 
-                       if (processedLabels.count(list->getLabel()) != 1) {
+                       m->mothurOut("Your file does not include the label " + (*it)); 
+                       if (processedLabels.count(lastLabel) != 1) {
                                m->mothurOut(". I will use " + lastLabel + "."); m->mothurOutEndLine();
                                needToRun = true;
                        }else {