X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=unifracunweightedcommand.cpp;h=a404f79222ac83cf41d42c04ceb614df1e01dceb;hb=8dd3c225255d7084e3aff8740aa4f1f1cabb367a;hp=eef37bd93b4dcc98fbf2bcadee93231be66b52ab;hpb=d4429ccc354708f3c9a13c809ba9b57c22908d2b;p=mothur.git diff --git a/unifracunweightedcommand.cpp b/unifracunweightedcommand.cpp index eef37bd..a404f79 100644 --- a/unifracunweightedcommand.cpp +++ b/unifracunweightedcommand.cpp @@ -80,6 +80,7 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { //allow user to run help if(option == "help") { help(); abort = true; calledHelp = true; } + else if(option == "citation") { citation(); abort = true; calledHelp = true;} else { vector myArray = setParameters(); @@ -133,6 +134,10 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { } m->runParse = true; + m->clearGroups(); + m->clearAllGroups(); + m->Treenames.clear(); + m->names.clear(); //check for required parameters treefile = validParameter.validFile(parameters, "tree", true); @@ -141,16 +146,18 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { treefile = m->getTreeFile(); if (treefile != "") { m->mothurOut("Using " + treefile + " as input file for the tree parameter."); m->mothurOutEndLine(); } else { m->mothurOut("You have no current tree file and the tree parameter is required."); m->mothurOutEndLine(); abort = true; } - } + }else { m->setTreeFile(treefile); } //check for required parameters groupfile = validParameter.validFile(parameters, "group", true); if (groupfile == "not open") { abort = true; } else if (groupfile == "not found") { groupfile = ""; } + else { m->setGroupFile(groupfile); } namefile = validParameter.validFile(parameters, "name", true); - if (namefile == "not open") { abort = true; } + if (namefile == "not open") { namefile = ""; abort = true; } else if (namefile == "not found") { namefile = ""; } + else { m->setNameFile(namefile); } outputDir = validParameter.validFile(parameters, "outputdir", false); if (outputDir == "not found"){ outputDir = ""; } @@ -160,11 +167,11 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { if (groups == "not found") { groups = ""; } else { m->splitAtDash(groups, Groups); - m->Groups = Groups; + m->setGroups(Groups); } itersString = validParameter.validFile(parameters, "iters", false); if (itersString == "not found") { itersString = "1000"; } - convert(itersString, iters); + m->mothurConvert(itersString, iters); string temp = validParameter.validFile(parameters, "distance", false); if (temp == "not found") { phylip = false; outputForm = ""; } @@ -181,7 +188,7 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { temp = validParameter.validFile(parameters, "processors", false); if (temp == "not found"){ temp = m->getProcessors(); } m->setProcessors(temp); - convert(temp, processors); + m->mothurConvert(temp, processors); if (!random) { iters = 0; } //turn off random calcs @@ -189,7 +196,12 @@ UnifracUnweightedCommand::UnifracUnweightedCommand(string option) { if ((phylip) && (Groups.size() == 0)) { groups = "all"; m->splitAtDash(groups, Groups); - m->Groups = Groups; + m->setGroups(Groups); + } + + if (namefile == "") { + vector files; files.push_back(treefile); + parser.getNameFile(files); } } @@ -206,6 +218,8 @@ int UnifracUnweightedCommand::execute() { if (abort == true) { if (calledHelp) { return 0; } return 2; } + m->setTreeFile(treefile); + if (groupfile != "") { //read in group map info. tmap = new TreeMap(groupfile); @@ -249,8 +263,8 @@ int UnifracUnweightedCommand::execute() { if (m->control_pressed) { delete tmap; for (int i = 0; i < T.size(); i++) { delete T[i]; } - for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } outputTypes.clear(); - m->Groups.clear(); + for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } outputTypes.clear(); + m->clearGroups(); return 0; } @@ -273,8 +287,11 @@ int UnifracUnweightedCommand::execute() { m->openOutputFile(sumFile, outSum); util = new SharedUtil(); - util->setGroups(m->Groups, tmap->namesOfGroups, allGroups, numGroups, "unweighted"); //sets the groups the user wants to analyze - util->getCombos(groupComb, m->Groups, numComp); + Groups = m->getGroups(); + vector namesGroups = tmap->getNamesOfGroups(); + util->setGroups(Groups, namesGroups, allGroups, numGroups, "unweighted"); //sets the groups the user wants to analyze + util->getCombos(groupComb, Groups, numComp); + m->setGroups(Groups); delete util; if (numGroups == 1) { numComp++; groupComb.push_back(allGroups); } @@ -289,8 +306,10 @@ int UnifracUnweightedCommand::execute() { if (numComp < processors) { processors = numComp; } - outSum << "Tree#" << '\t' << "Groups" << '\t' << "UWScore" <<'\t' << "UWSig" << endl; - m->mothurOut("Tree#\tGroups\tUWScore\tUWSig"); m->mothurOutEndLine(); + outSum << "Tree#" << '\t' << "Groups" << '\t' << "UWScore" <<'\t'; + m->mothurOut("Tree#\tGroups\tUWScore\t"); + if (random) { outSum << "UWSig"; m->mothurOut("UWSig"); } + outSum << endl; m->mothurOutEndLine(); //get pscores for users trees for (int i = 0; i < T.size(); i++) { @@ -298,7 +317,7 @@ int UnifracUnweightedCommand::execute() { delete tmap; delete unweighted; for (int i = 0; i < T.size(); i++) { delete T[i]; } outSum.close(); - for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } + for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } return 0; } @@ -320,7 +339,7 @@ int UnifracUnweightedCommand::execute() { userData = unweighted->getValues(T[i], processors, outputDir); //userData[0] = unweightedscore if (m->control_pressed) { delete tmap; delete unweighted; - for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }return 0; } + for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); }return 0; } //output scores for each combination for(int k = 0; k < numComp; k++) { @@ -338,7 +357,7 @@ int UnifracUnweightedCommand::execute() { randomData = unweighted->getValues(T[i], "", "", processors, outputDir); if (m->control_pressed) { delete tmap; delete unweighted; - for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; } + for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } return 0; } for(int k = 0; k < numComp; k++) { //add trees unweighted score to map of scores @@ -376,7 +395,7 @@ int UnifracUnweightedCommand::execute() { } if (m->control_pressed) { delete tmap; delete unweighted; - for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; } + for (int i = 0; i < T.size(); i++) { delete T[i]; }if (random) { delete output; } outSum.close(); for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } return 0; } //print output files printUWSummaryFile(i); @@ -392,11 +411,11 @@ int UnifracUnweightedCommand::execute() { outSum.close(); - m->Groups.clear(); + m->clearGroups(); delete tmap; delete unweighted; for (int i = 0; i < T.size(); i++) { delete T[i]; } - if (m->control_pressed) { for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; } + if (m->control_pressed) { for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } return 0; } m->mothurOut("It took " + toString(time(NULL) - start) + " secs to run unifrac.unweighted."); m->mothurOutEndLine(); @@ -476,9 +495,9 @@ void UnifracUnweightedCommand::printUWSummaryFile(int i) { m->mothurOutJustToLog(groupComb[a] + "\t" + toString(utreeScores[a][0]) + "\t<" + toString((1/float(iters))) + "\n"); } }else{ - outSum << setprecision(6) << groupComb[a] << '\t' << utreeScores[a][0] << '\t' << "0.00" << endl; - cout << setprecision(6) << groupComb[a] << '\t' << utreeScores[a][0] << '\t' << "0.00" << endl; - m->mothurOutJustToLog(groupComb[a] + "\t" + toString(utreeScores[a][0]) + "\t0.00\n"); + outSum << setprecision(6) << groupComb[a] << '\t' << utreeScores[a][0] << endl; + cout << setprecision(6) << groupComb[a] << '\t' << utreeScores[a][0] << endl; + m->mothurOutJustToLog(groupComb[a] + "\t" + toString(utreeScores[a][0]) + "\n"); } } @@ -505,18 +524,18 @@ void UnifracUnweightedCommand::createPhylipFile(int i) { if ((outputForm == "lt") || (outputForm == "square")) { //output numSeqs - out << m->Groups.size() << endl; + out << m->getNumGroups() << endl; } //make matrix with scores in it - vector< vector > dists; dists.resize(m->Groups.size()); - for (int i = 0; i < m->Groups.size(); i++) { - dists[i].resize(m->Groups.size(), 0.0); + vector< vector > dists; dists.resize(m->getNumGroups()); + for (int i = 0; i < m->getNumGroups(); i++) { + dists[i].resize(m->getNumGroups(), 0.0); } //flip it so you can print it int count = 0; - for (int r=0; rGroups.size(); r++) { + for (int r=0; rgetNumGroups(); r++) { for (int l = 0; l < r; l++) { dists[r][l] = utreeScores[count][0]; dists[l][r] = utreeScores[count][0]; @@ -525,9 +544,9 @@ void UnifracUnweightedCommand::createPhylipFile(int i) { } //output to file - for (int r=0; rGroups.size(); r++) { + for (int r=0; rgetNumGroups(); r++) { //output name - string name = m->Groups[r]; + string name = (m->getGroups())[r]; if (name.length() < 10) { //pad with spaces to make compatible while (name.length() < 10) { name += " "; } } @@ -542,12 +561,12 @@ void UnifracUnweightedCommand::createPhylipFile(int i) { out << name << '\t'; //output distances - for (int l = 0; l < m->Groups.size(); l++) { out << dists[r][l] << '\t'; } + for (int l = 0; l < m->getNumGroups(); l++) { out << dists[r][l] << '\t'; } out << endl; }else{ //output distances for (int l = 0; l < r; l++) { - string otherName = m->Groups[l]; + string otherName = (m->getGroups())[l]; if (otherName.length() < 10) { //pad with spaces to make compatible while (otherName.length() < 10) { otherName += " "; } }