From: westcott Date: Tue, 1 Jun 2010 13:52:48 +0000 (+0000) Subject: latest version X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=commitdiff_plain;h=1f78a8c454a636f19b4711bd52782ea1e3e81d3d latest version --- diff --git a/bayesian.cpp b/bayesian.cpp index 57b8e20..b46f770 100644 --- a/bayesian.cpp +++ b/bayesian.cpp @@ -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; diff --git a/chimera.cpp b/chimera.cpp index 483e553..3ab9589 100644 --- a/chimera.cpp +++ b/chimera.cpp @@ -31,6 +31,8 @@ string Chimera::createFilter(vector 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 diff --git a/classifyseqscommand.cpp b/classifyseqscommand.cpp index eee3160..7d015a8 100644 --- a/classifyseqscommand.cpp +++ b/classifyseqscommand.cpp @@ -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 } diff --git a/engine.cpp b/engine.cpp index 90103ea..acd417c 100644 --- a/engine.cpp +++ b/engine.cpp @@ -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) { diff --git a/fullmatrix.cpp b/fullmatrix.cpp index 43c6f2e..8091554 100644 --- a/fullmatrix.cpp +++ b/fullmatrix.cpp @@ -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); diff --git a/getoturepcommand.cpp b/getoturepcommand.cpp index 9199081..a73fdf6 100644 --- a/getoturepcommand.cpp +++ b/getoturepcommand.cpp @@ -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 processedLabels; set 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::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 {