+void UnifracUnweightedCommand::createPhylipFile(int i) {
+ try {
+ string phylipFileName;
+ if ((outputForm == "lt") || (outputForm == "square")) {
+ phylipFileName = outputDir + m->getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted.phylip.dist";
+ outputNames.push_back(phylipFileName); outputTypes["phylip"].push_back(phylipFileName);
+ }else { //column
+ phylipFileName = outputDir + m->getSimpleName(globaldata->getTreeFile()) + toString(i+1) + ".unweighted.column.dist";
+ outputNames.push_back(phylipFileName); outputTypes["column"].push_back(phylipFileName);
+ }
+
+ ofstream out;
+ m->openOutputFile(phylipFileName, out);
+
+ if ((outputForm == "lt") || (outputForm == "square")) {
+ //output numSeqs
+ out << globaldata->Groups.size() << endl;
+ }
+
+ //make matrix with scores in it
+ vector< vector<float> > dists; dists.resize(globaldata->Groups.size());
+ for (int i = 0; i < globaldata->Groups.size(); i++) {
+ dists[i].resize(globaldata->Groups.size(), 0.0);
+ }
+
+ //flip it so you can print it
+ int count = 0;
+ for (int r=0; r<globaldata->Groups.size(); r++) {
+ for (int l = 0; l < r; l++) {
+ dists[r][l] = utreeScores[count][0];
+ dists[l][r] = utreeScores[count][0];
+ count++;
+ }
+ }
+
+ //output to file
+ for (int r=0; r<globaldata->Groups.size(); r++) {
+ //output name
+ string name = globaldata->Groups[r];
+ if (name.length() < 10) { //pad with spaces to make compatible
+ while (name.length() < 10) { name += " "; }
+ }
+
+ if (outputForm == "lt") {
+ out << name << '\t';
+
+ //output distances
+ for (int l = 0; l < r; l++) { out << dists[r][l] << '\t'; }
+ out << endl;
+ }else if (outputForm == "square") {
+ out << name << '\t';
+
+ //output distances
+ for (int l = 0; l < globaldata->Groups.size(); l++) { out << dists[r][l] << '\t'; }
+ out << endl;
+ }else{
+ //output distances
+ for (int l = 0; l < r; l++) {
+ string otherName = globaldata->Groups[l];
+ if (otherName.length() < 10) { //pad with spaces to make compatible
+ while (otherName.length() < 10) { otherName += " "; }
+ }
+
+ out << name << '\t' << otherName << dists[r][l] << endl;
+ }
+ }
+ }
+ out.close();
+ }
+ catch(exception& e) {
+ m->errorOut(e, "UnifracUnweightedCommand", "createPhylipFile");
+ exit(1);
+ }
+}
+/***********************************************************/
+