X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=classifyseqscommand.cpp;h=a20a383b6125e135fc1aefeec47e2bc6b892f1e9;hb=80c3fe03a8fd1635d3ad7918ff00beb973449f50;hp=e5c04949905d7edd6ba5ec45f4fd5a8214053471;hpb=8130ff9b30d872c578963f8d6f24af821b1ec33c;p=mothur.git diff --git a/classifyseqscommand.cpp b/classifyseqscommand.cpp index e5c0494..a20a383 100644 --- a/classifyseqscommand.cpp +++ b/classifyseqscommand.cpp @@ -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--; + } } } @@ -470,7 +511,7 @@ int ClassifySeqsCommand::execute(){ if(processors == 1){ ifstream inFASTA; openInputFile(fastaFileNames[s], inFASTA); - numFastaSeqs=count(istreambuf_iterator(inFASTA),istreambuf_iterator(), '>'); + getNumSeqs(inFASTA, numFastaSeqs); inFASTA.close(); lines.push_back(new linePair(0, numFastaSeqs)); @@ -478,7 +519,7 @@ int ClassifySeqsCommand::execute(){ driver(lines[0], newTaxonomyFile, tempTaxonomyFile, fastaFileNames[s]); } else{ - vector positions; + vector positions; processIDS.resize(0); ifstream inFASTA; @@ -488,7 +529,7 @@ int ClassifySeqsCommand::execute(){ while(!inFASTA.eof()){ input = getline(inFASTA); if (input.length() != 0) { - if(input[0] == '>'){ 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(); @@ -496,9 +537,9 @@ int ClassifySeqsCommand::execute(){ numFastaSeqs = positions.size(); int numSeqsPerProcessor = numFastaSeqs / processors; - + for (int i = 0; i < processors; i++) { - int startPos = positions[ i * numSeqsPerProcessor ]; + unsigned long int startPos = positions[ i * numSeqsPerProcessor ]; if(i == processors - 1){ numSeqsPerProcessor = numFastaSeqs - i * numSeqsPerProcessor; } @@ -520,7 +561,7 @@ int ClassifySeqsCommand::execute(){ #else ifstream inFASTA; openInputFile(fastaFileNames[s], inFASTA); - numFastaSeqs=count(istreambuf_iterator(inFASTA),istreambuf_iterator(), '>'); + getNumSeqs(inFASTA, numFastaSeqs); inFASTA.close(); lines.push_back(new linePair(0, numFastaSeqs)); @@ -761,9 +802,9 @@ int ClassifySeqsCommand::driver(linePair* line, string taxFName, string tempTFNa for(int i=0;inumSeqs;i++){ if (m->control_pressed) { return 0; } - - Sequence* candidateSeq = new Sequence(inFASTA); - + + Sequence* candidateSeq = new Sequence(inFASTA); gobble(inFASTA); + if (candidateSeq->getName() != "") { taxonomy = classify->getTaxonomy(candidateSeq);