X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=filterseqscommand.cpp;h=7ab00a7822f7a7fc7ddd1ef0de00d2d24b8c51de;hb=9013e13ecfb2fda3c2664a76f76cc99b8c7fa74c;hp=33790fe97632525cbb6c155ab953da531f770078;hpb=2bb20fb79f19b8bda48492d89f8e8b7389431413;p=mothur.git diff --git a/filterseqscommand.cpp b/filterseqscommand.cpp index 33790fe..7ab00a7 100644 --- a/filterseqscommand.cpp +++ b/filterseqscommand.cpp @@ -28,7 +28,7 @@ FilterSeqsCommand::FilterSeqsCommand(string option) { OptionParser parser(option); map parameters = parser.getParameters(); - ValidParameters validParameter; + ValidParameters validParameter("filter.seqs"); map::iterator it; //check to make sure all parameters are valid for command @@ -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--; @@ -247,12 +258,12 @@ int FilterSeqsCommand::filterSequences() { #ifdef USE_MPI int pid, start, end, numSeqsPerProcessor, num; int tag = 2001; - vectorMPIPos; + vectorMPIPos; MPI_Status status; MPI_Comm_size(MPI_COMM_WORLD, &processors); //set processors to the number of mpi processes running MPI_Comm_rank(MPI_COMM_WORLD, &pid); //find out who we are - + cout << pid << "is in create filter " << endl; MPI_File outMPI; MPI_File tempMPI; MPI_File inMPI; @@ -382,7 +393,7 @@ int FilterSeqsCommand::filterSequences() { } #ifdef USE_MPI /**************************************************************************************/ -int FilterSeqsCommand::driverMPIRun(int start, int num, MPI_File& inMPI, MPI_File& outMPI, vector& MPIPos) { +int FilterSeqsCommand::driverMPIRun(int start, int num, MPI_File& inMPI, MPI_File& outMPI, vector& MPIPos) { try { string outputString = ""; int count = 0; @@ -558,7 +569,7 @@ string FilterSeqsCommand::createFilter() { #ifdef USE_MPI int pid, numSeqsPerProcessor, num; int tag = 2001; - vector MPIPos; + vector MPIPos; MPI_Status status; MPI_File inMPI; @@ -786,7 +797,7 @@ int FilterSeqsCommand::driverCreateFilter(Filters& F, string filename, linePair* } #ifdef USE_MPI /**************************************************************************************/ -int FilterSeqsCommand::MPICreateFilter(int start, int num, Filters& F, MPI_File& inMPI, vector& MPIPos) { +int FilterSeqsCommand::MPICreateFilter(int start, int num, Filters& F, MPI_File& inMPI, vector& MPIPos) { try { MPI_Status status; @@ -872,7 +883,7 @@ int FilterSeqsCommand::createProcessesCreateFilter(Filters& F, string filename) int FilterSeqsCommand::setLines(string filename) { try { - vector positions; + vector positions; bufferSizes.clear(); ifstream inFASTA; @@ -883,7 +894,7 @@ int FilterSeqsCommand::setLines(string filename) { input = getline(inFASTA); if (input.length() != 0) { - if(input[0] == '>'){ long int pos = inFASTA.tellg(); positions.push_back(pos - input.length() - 1); } + if(input[0] == '>'){ unsigned long int pos = inFASTA.tellg(); positions.push_back(pos - input.length() - 1); } } } inFASTA.close(); @@ -891,7 +902,7 @@ int FilterSeqsCommand::setLines(string filename) { int numFastaSeqs = positions.size(); FILE * pFile; - long size; + unsigned long int size; //get num bytes in file pFile = fopen (filename.c_str(),"rb"); @@ -908,12 +919,12 @@ int FilterSeqsCommand::setLines(string filename) { for (int i = 0; i < processors; i++) { - long int startPos = positions[ i * numSeqsPerProcessor ]; + unsigned long int startPos = positions[ i * numSeqsPerProcessor ]; if(i == processors - 1){ numSeqsPerProcessor = numFastaSeqs - i * numSeqsPerProcessor; bufferSizes.push_back(size - startPos); }else{ - long int myEnd = positions[ (i+1) * numSeqsPerProcessor ]; + unsigned long int myEnd = positions[ (i+1) * numSeqsPerProcessor ]; bufferSizes.push_back(myEnd-startPos); } lines.push_back(new linePair(startPos, numSeqsPerProcessor));