X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=summarycommand.cpp;h=e67659f50db215490313062d442336afbd2f25e1;hb=1916dd65829d6bb5b8bef74eddc61ea38fccf63a;hp=70470b015684b386947056686789da5077000565;hpb=260ae19c36cb11a53ddc5a75b5e507f8dd8b31d6;p=mothur.git diff --git a/summarycommand.cpp b/summarycommand.cpp index 70470b0..e67659f 100644 --- a/summarycommand.cpp +++ b/summarycommand.cpp @@ -34,6 +34,54 @@ #include "solow.h" #include "shen.h" +//********************************************************************************************************************** +vector SummaryCommand::getValidParameters(){ + try { + string Array[] = {"label","calc","abund","size","outputdir","groupmode","inputdir"}; + vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); + return myArray; + } + catch(exception& e) { + m->errorOut(e, "SummaryCommand", "getValidParameters"); + exit(1); + } +} +//********************************************************************************************************************** +SummaryCommand::SummaryCommand(){ + try { + abort = true; + //initialize outputTypes + vector tempOutNames; + outputTypes["summary"] = tempOutNames; + } + catch(exception& e) { + m->errorOut(e, "SummaryCommand", "SummaryCommand"); + exit(1); + } +} +//********************************************************************************************************************** +vector SummaryCommand::getRequiredParameters(){ + try { + vector myArray; + return myArray; + } + catch(exception& e) { + m->errorOut(e, "SummaryCommand", "getRequiredParameters"); + exit(1); + } +} +//********************************************************************************************************************** +vector SummaryCommand::getRequiredFiles(){ + try { + string AlignArray[] = {"shared","list","rabund","sabund","or"}; + vector myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string))); + return myArray; + } + catch(exception& e) { + m->errorOut(e, "SummaryCommand", "getRequiredFiles"); + exit(1); + } +} //********************************************************************************************************************** SummaryCommand::SummaryCommand(string option) { @@ -62,6 +110,10 @@ SummaryCommand::SummaryCommand(string option) { if (validParameter.isValidParameter(it->first, myArray, it->second) != true) { abort = true; } } + //initialize outputTypes + vector tempOutNames; + outputTypes["summary"] = tempOutNames; + //make sure the user has already run the read.otu command if ((globaldata->getSharedFile() == "") && (globaldata->getListFile() == "") && (globaldata->getRabundFile() == "") && (globaldata->getSabundFile() == "")) { m->mothurOut("You must read a list, sabund, rabund or shared file before you can use the summary.single command."); m->mothurOutEndLine(); abort = true; } @@ -100,7 +152,7 @@ SummaryCommand::SummaryCommand(string option) { temp = validParameter.validFile(parameters, "size", false); if (temp == "not found") { temp = "0"; } convert(temp, size); - temp = validParameter.validFile(parameters, "groupmode", false); if (temp == "not found") { temp = "F"; } + temp = validParameter.validFile(parameters, "groupmode", false); if (temp == "not found") { temp = "T"; } groupMode = m->isTrue(temp); @@ -123,7 +175,7 @@ void SummaryCommand::help(){ m->mothurOut("Example summary.single(label=unique-.01-.03, calc=sobs-chao-ace-jack-bootstrap-shannon-npshannon-simpson).\n"); validCalculator->printCalc("summary", cout); m->mothurOut("The default value calc is sobs-chao-ace-jack-shannon-npshannon-simpson\n"); - m->mothurOut("If you are running summary.single with a shared file and would like your summary results collated in one file, set groupmode=t. (Default=False).\n"); + m->mothurOut("If you are running summary.single with a shared file and would like your summary results collated in one file, set groupmode=t. (Default=true).\n"); m->mothurOut("The label parameter is used to analyze specific labels in your input.\n"); m->mothurOut("Note: No spaces between parameter labels (i.e. label), '=' and parameters (i.e.yourLabels).\n\n"); } @@ -144,8 +196,6 @@ int SummaryCommand::execute(){ if (abort == true) { return 0; } - vector outputNames; - string hadShared = ""; if ((globaldata->getFormat() != "sharedfile")) { inputFileNames.push_back(globaldata->inputFileName); } else { hadShared = globaldata->getSharedFile(); inputFileNames = parseSharedFile(globaldata->getSharedFile()); globaldata->setFormat("rabund"); } @@ -162,7 +212,7 @@ int SummaryCommand::execute(){ string fileNameRoot = outputDir + m->getRootName(m->getSimpleName(inputFileNames[p])) + "summary"; globaldata->inputFileName = inputFileNames[p]; - outputNames.push_back(fileNameRoot); + outputNames.push_back(fileNameRoot); outputTypes["summary"].push_back(fileNameRoot); if (inputFileNames.size() > 1) { m->mothurOutEndLine(); m->mothurOut("Processing group " + groups[p]); m->mothurOutEndLine(); m->mothurOutEndLine(); @@ -445,7 +495,7 @@ vector SummaryCommand::parseSharedFile(string filename) { } } //********************************************************************************************************************** -string SummaryCommand::createGroupSummaryFile(int numLines, int numCols, vector outputNames) { +string SummaryCommand::createGroupSummaryFile(int numLines, int numCols, vector& outputNames) { try { ofstream out; @@ -456,52 +506,67 @@ string SummaryCommand::createGroupSummaryFile(int numLines, int numCols, vector< //open each groups summary file string newLabel = ""; - ifstream* temp; - map filehandles; + map > files; for (int i=0; iopenInputFile(outputNames[i], *(temp)); + vector thisFilesLines; + + ifstream temp; + m->openInputFile(outputNames[i], temp); //read through first line - labels string tempLabel; if (i == 0) { //we want to save the labels to output below for (int j = 0; j < numCols+1; j++) { - *(temp) >> tempLabel; + temp >> tempLabel; if (j == 1) { newLabel += "group\t" + tempLabel + '\t'; }else{ newLabel += tempLabel + '\t'; } } - }else{ for (int j = 0; j < numCols+1; j++) { *(temp) >> tempLabel; } } + }else{ for (int j = 0; j < numCols+1; j++) { temp >> tempLabel; } } + + m->gobble(temp); + + //for each label + for (int k = 0; k < numLines; k++) { + + string thisLine = ""; + string tempLabel; + + for (int j = 0; j < numCols+1; j++) { + temp >> tempLabel; + + //save for later + if (j == 1) { thisLine += groups[i] + "\t" + tempLabel + "\t"; } + else{ thisLine += tempLabel + "\t"; } + } + + thisLine += "\n"; + + thisFilesLines.push_back(thisLine); + + m->gobble(temp); + } + + files[outputNames[i]] = thisFilesLines; - m->gobble(*(temp)); + temp.close(); + remove(outputNames[i].c_str()); } //output label line to new file out << newLabel << endl; //for each label - for (int i = 0; i < numLines; i++) { + for (int k = 0; k < numLines; k++) { //grab summary data for each group for (int i=0; i> tempLabel; - - //print to combined file - if (j == 1) { out << groups[i] << '\t' << tempLabel << '\t'; } - else{ out << tempLabel << '\t'; } - } - - out << endl; - m->gobble(*(filehandles[outputNames[i]])); + out << files[outputNames[i]][k]; } } - //close each groups summary file - for (int i=0; i