X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=parsimonycommand.cpp;h=56305e2260d4af19050dfc0832add36c1208d13e;hb=b02ee39bf6c708a98748f8861846cdec7fab58ac;hp=4fa4ec5ed0943614bf4da9d5a1f03b5d8f706a42;hpb=c5c7502f435e1413c19e373dab1dfebcaa67588d;p=mothur.git diff --git a/parsimonycommand.cpp b/parsimonycommand.cpp index 4fa4ec5..56305e2 100644 --- a/parsimonycommand.cpp +++ b/parsimonycommand.cpp @@ -21,15 +21,13 @@ ParsimonyCommand::ParsimonyCommand() { if (randomtree == "") { T = globaldata->gTree; tmap = globaldata->gTreemap; - parsFile = globaldata->getTreeFile() + ".parsimony"; - parsFileout = globaldata->getTreeFile() + "temp" + ".parsimony"; + output = new ColumnFile(globaldata->getTreeFile() + ".parsimony"); sumFile = globaldata->getTreeFile() + ".psummary"; openOutputFile(sumFile, outSum); }else { //user wants random distribution savetmap = globaldata->gTreemap; getUserInput(); - parsFile = randomtree; - parsFileout = globaldata->getTreeFile() + "temp"; + output = new ColumnFile(randomtree); } //set users groups to analyze @@ -38,12 +36,8 @@ ParsimonyCommand::ParsimonyCommand() { util->getCombos(groupComb, globaldata->Groups, numComp); globaldata->setGroups(""); - //ABC - if (numComp != 1) { - groupComb.push_back(allGroups); - numComp++; - } - + if (numGroups == 1) { numComp++; groupComb.push_back(allGroups); } + convert(globaldata->getIters(), iters); //how many random trees to generate pars = new Parsimony(tmap); counter = 0; @@ -223,12 +217,16 @@ int ParsimonyCommand::execute() { void ParsimonyCommand::printParsimonyFile() { try { vector data; + vector tags; - //format output - out.setf(ios::fixed, ios::floatfield); out.setf(ios::showpoint); + if (randomtree == "") { + tags.push_back("Score"); tags.push_back("UserFreq"); tags.push_back("UserCumul"); tags.push_back("RandFreq"); tags.push_back("RandCumul"); + }else { + tags.push_back("Score"); tags.push_back("RandFreq"); tags.push_back("RandCumul"); + } for(int a = 0; a < numComp; a++) { - initFile(groupComb[a]); + output->initFile(groupComb[a], tags); //print each line for (it = validScores.begin(); it != validScores.end(); it++) { if (randomtree == "") { @@ -236,15 +234,11 @@ void ParsimonyCommand::printParsimonyFile() { }else{ data.push_back(it->first); data.push_back(rscoreFreq[a][it->first]); data.push_back(rCumul[a][it->first]); } - output(data); + output->output(data); data.clear(); } - resetFile(); + output->resetFile(); } - - out.close(); - inFile.close(); - remove(parsFileout.c_str()); } catch(exception& e) { cout << "Standard Error: " << e.what() << " has occurred in the ParsimonyCommand class Function printParsimonyFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; @@ -340,102 +334,7 @@ void ParsimonyCommand::getUserInput() { exit(1); } } -/*****************************************************************/ - -void ParsimonyCommand::initFile(string label){ - try { - if(counter != 0){ - openOutputFile(parsFileout, out); - openInputFile(parsFile, inFile); - - string inputBuffer; - getline(inFile, inputBuffer); - - if (randomtree == "") { - out << inputBuffer << '\t' << label + "Score" << '\t' << label + "UserFreq" << '\t' << label + "UserCumul" << '\t' << label + "RandFreq" << '\t' << label + "RandCumul" << endl; - }else { - out << inputBuffer << '\t' << "Score" << '\t' << "RandFreq" << '\t' << "RandCumul" << endl; - } - }else{ - openOutputFile(parsFileout, out); - //column headers - if (randomtree == "") { - out << label + "Score" << '\t' << label + "UserFreq" << '\t' << label + "UserCumul" << '\t' << label + "RandFreq" << '\t' << label + "RandCumul" << endl; - }else { - out << "Score" << '\t' << "RandFreq" << '\t' << "RandCumul" << endl; - } - } - - out.setf(ios::fixed, ios::floatfield); - out.setf(ios::showpoint); - } - catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ParsimonyCommand class Function initFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ParsimonyCommand class function initFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } -} - -/***********************************************************************/ - -void ParsimonyCommand::output(vector data){ - try { - if(counter != 0){ - string inputBuffer; - getline(inFile, inputBuffer); - - if (randomtree == "") { - out << inputBuffer << '\t' << setprecision(6) << data[0] << setprecision(globaldata->getIters().length()) << '\t' << data[1] << '\t' << data[2] << '\t' << data[3] << '\t' << data[4] << endl; - }else{ - out << inputBuffer << '\t' << setprecision(6) << data[0] << setprecision(globaldata->getIters().length()) << '\t' << data[1] << '\t' << data[2] << endl; - } - } - else{ - if (randomtree == "") { - out << setprecision(6) << data[0] << setprecision(globaldata->getIters().length()) << '\t' << data[1] << '\t' << data[2] << '\t' << data[3] << '\t' << data[4] << endl; - }else{ - out << setprecision(6) << data[0] << setprecision(globaldata->getIters().length()) << '\t' << data[1] << '\t' << data[2] << endl; - } - } - - } - catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ParsimonyCommand class Function output. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ParsimonyCommand class function output. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } -} -/***********************************************************************/ - -void ParsimonyCommand::resetFile(){ - try { - if(counter != 0){ - out.close(); - inFile.close(); - } - else{ - out.close(); - } - counter = 1; - - remove(parsFile.c_str()); - rename(parsFileout.c_str(), parsFile.c_str()); - } - catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ParsimonyCommand class Function resetFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ParsimonyCommand class function resetFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } -} +/***********************************************************/