X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=deconvolutecommand.cpp;h=96682af26b8bcb1b62c17987c82355856cfaf919;hp=51362e55a0780ced0cfc9833a51ed8d71870edf2;hb=0470f6d037aacb3563c3f7010708120a4a67d4e6;hpb=bede5752eaeedb5a7e339439b6ba2f6670bca2b9 diff --git a/deconvolutecommand.cpp b/deconvolutecommand.cpp index 51362e5..96682af 100644 --- a/deconvolutecommand.cpp +++ b/deconvolutecommand.cpp @@ -10,19 +10,83 @@ #include "deconvolutecommand.h" /**************************************************************************************/ -int DeconvoluteCommand::execute() { +DeconvoluteCommand::DeconvoluteCommand(string option) { try { globaldata = GlobalData::getInstance(); + abort = false; + + //allow user to run help + if(option == "help") { help(); abort = true; } + + else { + //valid paramters for this command + string Array[] = {"fasta"}; + vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); + + parser = new OptionParser(); + parser->parse(option, parameters); delete parser; + + ValidParameters* validParameter = new ValidParameters(); + + //check to make sure all parameters are valid for command + for (it = parameters.begin(); it != parameters.end(); it++) { + if (validParameter->isValidParameter(it->first, myArray, it->second) != true) { abort = true; } + } + + //check for required parameters + filename = validParameter->validFile(parameters, "fasta", true); + if (filename == "not open") { abort = true; } + else if (filename == "not found") { filename = ""; cout << "fasta is a required parameter for the unique.seqs command." << endl; abort = true; } + else { globaldata->setFastaFile(filename); globaldata->setFormat("fasta"); } + + delete validParameter; + } + + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the DeconvoluteCommand class Function DeconvoluteCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the DeconvoluteCommand class function DeconvoluteCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } +} +//********************************************************************************************************************** + +void DeconvoluteCommand::help(){ + try { + cout << "The unique.seqs command reads a fastafile and creates a namesfile." << "\n"; + cout << "It creates a file where the first column is the groupname and the second column is a list of sequence names who have the same sequence. " << "\n"; + cout << "If the sequence is unique the second column will just contain its name. " << "\n"; + cout << "The unique.seqs command parameter is fasta and it is required." << "\n"; + cout << "The unique.seqs command should be in the following format: " << "\n"; + cout << "unique.seqs(fasta=yourFastaFile) " << "\n"; + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the DeconvoluteCommand class Function help. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the DeconvoluteCommand class function help. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } +} + +/**************************************************************************************/ +int DeconvoluteCommand::execute() { + try { + + if (abort == true) { return 0; } //prepare filenames and open files - filename = globaldata->getFastaFile(); outputFileName = (getRootName(filename) + "names"); outFastafile = (getRootName(filename) + "unique.fasta"); openInputFile(filename, in); openOutputFile(outputFileName, out); openOutputFile(outFastafile, outFasta); - + //constructor reads in file and store internally fastamap = new FastaMap();