X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=getgroupcommand.cpp;h=817331f8ce06a531c447896707951b2e6ffb7b9d;hb=13193e6688c91b6a25e39d357caa7f4b4bf5de5f;hp=4d439592127e53ff8b61fc465ef5e27db238e49e;hpb=825512fb96e5bb00e08665396d9fa6a8c4da5a68;p=mothur.git diff --git a/getgroupcommand.cpp b/getgroupcommand.cpp index 4d43959..817331f 100644 --- a/getgroupcommand.cpp +++ b/getgroupcommand.cpp @@ -9,28 +9,68 @@ #include "getgroupcommand.h" - -GetgroupCommand::GetgroupCommand(){ +//********************************************************************************************************************** +GetgroupCommand::GetgroupCommand(string option) { try { globaldata = GlobalData::getInstance(); + abort = false; - //open shared file - sharedfile = globaldata->getSharedFile(); - openInputFile(sharedfile, in); + //allow user to run help + if(option == "help") { help(); abort = true; } - //open output file - outputFile = getRootName(globaldata->inputFileName) + "bootGroups"; - openOutputFile(outputFile, out); + else { + //valid paramters for this command + string Array[] = {"outputdir","inputdir"}; + vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); + + OptionParser parser(option); + map parameters = parser.getParameters(); + + ValidParameters validParameter; + //check to make sure all parameters are valid for command + for (map::iterator it = parameters.begin(); it != parameters.end(); it++) { + if (validParameter.isValidParameter(it->first, myArray, it->second) != true) { abort = true; } + } + + //if the user changes the output directory command factory will send this info to us in the output parameter + string outputDir = validParameter.validFile(parameters, "outputdir", false); if (outputDir == "not found"){ outputDir = ""; } + + if ((globaldata->getSharedFile() == "")) { m->mothurOut("You must use the read.otu command to read a groupfile or a sharedfile before you can use the get.group command."); m->mothurOutEndLine(); abort = true; } + + if (abort == false) { + //open shared file + sharedfile = globaldata->getSharedFile(); + openInputFile(sharedfile, in); + + //open output file + if (outputDir == "") { outputDir += hasPath(sharedfile); } + outputFile = outputDir + getRootName(getSimpleName(sharedfile)) + "bootGroups"; + openOutputFile(outputFile, out); + + } + } } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the GetgroupCommand class Function GetgroupCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "GetgroupCommand", "GetgroupCommand"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the GetgroupCommand class function GetgroupCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; +} +//********************************************************************************************************************** + +void GetgroupCommand::help(){ + try { + m->mothurOut("The get.group command can only be executed after a successful read.otu command.\n"); + //m->mothurOut("The get.group command outputs a .bootGroups file to you can use in addition to the tree file generated by the bootstrap.shared command to run the consensus command.\n"); + m->mothurOut("You may not use any parameters with the get.group command.\n"); + m->mothurOut("The get.group command should be in the following format: \n"); + m->mothurOut("get.group()\n"); + m->mothurOut("Example get.group().\n"); + + } + catch(exception& e) { + m->errorOut(e, "GetgroupCommand", "help"); exit(1); - } - + } } //********************************************************************************************************************** @@ -42,6 +82,9 @@ GetgroupCommand::~GetgroupCommand(){ int GetgroupCommand::execute(){ try { + + if (abort == true) { return 0; } + int num, inputData, count; count = 0; string holdLabel, nextLabel, groupN, label; @@ -51,7 +94,7 @@ int GetgroupCommand::execute(){ holdLabel = label; //output first group - cout << groupN << endl; + m->mothurOut(groupN); m->mothurOutEndLine(); out << groupN << '\t' << groupN << endl; //get rest of line @@ -59,15 +102,19 @@ int GetgroupCommand::execute(){ in >> inputData; } + if (m->control_pressed) { in.close(); out.close(); remove(outputFile.c_str()); return 0; } + if (in.eof() != true) { in >> nextLabel; } //read the rest of the groups info in while ((nextLabel == holdLabel) && (in.eof() != true)) { + if (m->control_pressed) { in.close(); out.close(); remove(outputFile.c_str()); return 0; } + in >> groupN >> num; count++; //output next group - cout << groupN << endl; + m->mothurOut(groupN); m->mothurOutEndLine(); out << groupN << '\t' << groupN << endl; //fill vector. @@ -78,18 +125,23 @@ int GetgroupCommand::execute(){ if (in.eof() != true) { in >> nextLabel; } } + in.close(); out.close(); + + if (m->control_pressed) { remove(outputFile.c_str()); return 0; } + + m->mothurOutEndLine(); + m->mothurOut("Output File Name: "); m->mothurOutEndLine(); + m->mothurOut(outputFile); m->mothurOutEndLine(); + m->mothurOutEndLine(); + return 0; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the GetgroupCommand class Function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "GetgroupCommand", "execute"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the GetgroupCommand class function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } }