//if the user changes the output directory command factory will send this info to us in the output parameter
outputDir = validParameter.validFile(parameters, "outputdir", false); if (outputDir == "not found"){
outputDir = "";
- outputDir += hasPath(globaldata->inputFileName); //if user entered a file with a path then preserve it
+ outputDir += m->hasPath(globaldata->inputFileName); //if user entered a file with a path then preserve it
}
//check for optional parameter and set defaults
groups = validParameter.validFile(parameters, "groups", false);
if (groups == "not found") { groups = ""; }
else {
- splitAtDash(groups, Groups);
+ m->splitAtDash(groups, Groups);
globaldata->Groups = Groups;
}
convert(itersString, iters);
string temp = validParameter.validFile(parameters, "distance", false); if (temp == "not found") { temp = "false"; }
- phylip = isTrue(temp);
+ phylip = m->isTrue(temp);
temp = validParameter.validFile(parameters, "random", false); if (temp == "not found") { temp = "true"; }
- random = isTrue(temp);
+ random = m->isTrue(temp);
if (!random) { iters = 0; } //turn off random calcs
//if user selects distance = true and no groups it won't calc the pairwise
if ((phylip) && (Groups.size() == 0)) {
groups = "all";
- splitAtDash(groups, Groups);
+ m->splitAtDash(groups, Groups);
globaldata->Groups = Groups;
}
if (abort == false) {
T = globaldata->gTree;
tmap = globaldata->gTreemap;
- sumFile = outputDir + getSimpleName(globaldata->getTreeFile()) + ".uwsummary";
+ sumFile = outputDir + m->getSimpleName(globaldata->getTreeFile()) + ".uwsummary";
outputNames.push_back(sumFile);
- openOutputFile(sumFile, outSum);
+ m->openOutputFile(sumFile, outSum);
util = new SharedUtil();
util->setGroups(globaldata->Groups, tmap->namesOfGroups, allGroups, numGroups, "unweighted"); //sets the groups the user wants to analyze
if (abort == true) { return 0; }
+ int start = time(NULL);
+
userData.resize(numComp,0); //data[0] = unweightedscore
randomData.resize(numComp,0); //data[0] = unweightedscore
//create new tree with same num nodes and leaves as users
//get pscores for users trees
for (int i = 0; i < T.size(); i++) {
+ if (m->control_pressed) {
+ outSum.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
counter = 0;
if (random) {
- output = new ColumnFile(outputDir + getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted", itersString);
- outputNames.push_back(outputDir + getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted");
+ output = new ColumnFile(outputDir + m->getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted", itersString);
+ outputNames.push_back(outputDir + m->getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted");
}
+
//get unweighted for users tree
rscoreFreq.resize(numComp);
rCumul.resize(numComp);
userData = unweighted->getValues(T[i]); //userData[0] = unweightedscore
+ if (m->control_pressed) {
+ if (random) { delete output; }
+ outSum.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
//output scores for each combination
for(int k = 0; k < numComp; k++) {
//saves users score
validScores[userData[k]] = userData[k];
}
- //get unweighted scores for random trees
+ //get unweighted scores for random trees - if random is false iters = 0
for (int j = 0; j < iters; j++) {
//we need a different getValues because when we swap the labels we only want to swap those in each pairwise comparison
randomData = unweighted->getValues(T[i], "", "");
+
+ if (m->control_pressed) {
+ if (random) { delete output; }
+ outSum.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
for(int k = 0; k < numComp; k++) {
//add trees unweighted score to map of scores
if (random) { UWScoreSig[a].push_back(rCumul[a][userData[a]]); }
else { UWScoreSig[a].push_back(0.0); }
}
-
+
+
+ if (m->control_pressed) {
+ if (random) { delete output; }
+ outSum.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
//print output files
printUWSummaryFile(i);
if (random) { printUnweightedFile(); delete output; }
UWScoreSig.clear();
}
- //reset groups parameter
- globaldata->Groups.clear();
+
outSum.close();
+ if (m->control_pressed) { for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
+ m->mothurOut("It took " + toString(time(NULL) - start) + " secs to run unifrac.unweighted."); m->mothurOutEndLine();
+
m->mothurOutEndLine();
m->mothurOut("Output File Names: "); m->mothurOutEndLine();
for (int i = 0; i < outputNames.size(); i++) { m->mothurOut(outputNames[i]); m->mothurOutEndLine(); }
/***********************************************************/
void UnifracUnweightedCommand::createPhylipFile(int i) {
try {
- string phylipFileName = outputDir + getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted.dist";
+ string phylipFileName = outputDir + m->getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted.dist";
outputNames.push_back(phylipFileName);
ofstream out;
- openOutputFile(phylipFileName, out);
+ m->openOutputFile(phylipFileName, out);
//output numSeqs
out << globaldata->Groups.size() << endl;
int count = 0;
for (int r=0; r<globaldata->Groups.size(); r++) {
for (int l = r+1; l < globaldata->Groups.size(); l++) {
- dists[r][l] = (1.0 - utreeScores[count][0]);
- dists[l][r] = (1.0 - utreeScores[count][0]);
+ dists[r][l] = utreeScores[count][0];
+ dists[l][r] = utreeScores[count][0];
count++;
}
}