X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=venn.cpp;h=66dbb8eac3ee13c069b85374503dd87cc0ae538f;hp=32ebb3c9c8b4f96b0ad556450e9505f08dc2546d;hb=1a20e24ee786195ab0e1cccd4f5aede7a88f3f4e;hpb=0718c426add1df69adcc24444ef45550fb262ca7 diff --git a/venn.cpp b/venn.cpp index 32ebb3c..66dbb8e 100644 --- a/venn.cpp +++ b/venn.cpp @@ -17,7 +17,7 @@ //********************************************************************************************************************** -Venn::Venn(string o, bool n, string f, int fs) : outputDir(o), nseqs(n), inputfile(f), fontSize(fs) { +Venn::Venn(string o, bool n, string f, int fs, bool so) : outputDir(o), nseqs(n), inputfile(f), fontSize(fs), sharedOtus(so) { try { m = MothurOut::getInstance(); } @@ -155,16 +155,30 @@ vector Venn::getPic(vector lookup, vectorcontrol_pressed) { outsvg.close(); return outputNames; } //get estimates for sharedAB - vector shared = vCalcs[i]->getValues(subset); + vector labels; + vector shared = vCalcs[i]->getValues(subset, labels); //in essence you want to run it like a single if (vCalcs[i]->getName() == "sharedsobs") { singleCalc = new Sobs(); + if (sharedOtus && (labels.size() != 0)) { + string filenameShared = outputDir + m->getRootName(m->getSimpleName(inputfile)) + lookup[0]->getLabel() + "." + vCalcs[i]->getName() + ".sharedotus"; + + outputNames.push_back(filenameShared); + ofstream outShared; + m->openOutputFile(filenameShared, outShared); + outShared << "Groups\tNumShared\tOTULabels\n"; + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup() << '\t' << labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + outShared.close(); + } }else if (vCalcs[i]->getName() == "sharedchao") { singleCalc = new Chao1(); - }//else if (vCalcs[i]->getName() == "sharedace") { - //singleCalc = new Ace(10); - //} + } int sharedVal, numSeqsA, numSeqsB, uniqSeqsToA, uniqSeqsToB; if (nseqs) { @@ -439,6 +453,15 @@ vector Venn::getPic(vector lookup, vectorgetName() == "sharedsobs")) { + string filenameShared = outputDir + m->getRootName(m->getSimpleName(inputfile)) + lookup[0]->getLabel() + "." + vCalcs[i]->getName() + ".sharedotus"; + + outputNames.push_back(filenameShared); + + m->openOutputFile(filenameShared, outShared); + outShared << "Groups\tNumShared\tOTULabels\n"; + } vector subset; //get estimates for numA @@ -457,19 +480,54 @@ vector Venn::getPic(vector lookup, vector sharedab = vCalcs[i]->getValues(subset); + vector labels; + vector sharedab = vCalcs[i]->getValues(subset, labels); + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup() << '\t' << labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[2]); - vector sharedac = vCalcs[i]->getValues(subset); + vector sharedac = vCalcs[i]->getValues(subset, labels); + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[2]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } subset.clear(); subset.push_back(lookup[1]); subset.push_back(lookup[2]); - vector sharedbc = vCalcs[i]->getValues(subset); + vector sharedbc = vCalcs[i]->getValues(subset, labels); + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[1]->getGroup() + "-" + lookup[2]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } + subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[1]); subset.push_back(lookup[2]); - vector sharedabc = vCalcs[i]->getValues(subset); + vector sharedabc = vCalcs[i]->getValues(subset, labels); + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup() + "-" + lookup[2]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + outShared.close(); + } //image window outsvg << "\n"; @@ -599,63 +657,163 @@ vector Venn::getPic(vector lookup, vectorgetValues(sabundD); numD = data[0]; //cout << "num d = " << numD << endl; + + ofstream outShared; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs")) { + string filenameShared = outputDir + m->getRootName(m->getSimpleName(inputfile)) + lookup[0]->getLabel() + "." + vCalcs[i]->getName() + ".sharedotus"; + + outputNames.push_back(filenameShared); + + m->openOutputFile(filenameShared, outShared); + outShared << "Groups\tNumShared\tOTULabels\n"; + } //get estimates for pairs subset.clear(); + vector labels; subset.push_back(lookup[0]); subset.push_back(lookup[1]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedAB = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num ab = " << sharedAB << endl; subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[2]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedAC = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[2]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num ac = " << sharedAC << endl; subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedAD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[3]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num ad = " << sharedAD << endl; subset.clear(); subset.push_back(lookup[1]); subset.push_back(lookup[2]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedBC = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[1]->getGroup() + "-" + lookup[2]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num bc = " << sharedBC << endl; subset.clear(); subset.push_back(lookup[1]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedBD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[1]->getGroup() + "-" + lookup[3]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num bd = " << sharedBD << endl; subset.clear(); subset.push_back(lookup[2]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedCD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[2]->getGroup() + "-" + lookup[3]->getGroup() << '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num cd = " << sharedCD << endl; //get estimates for combos of 3 subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[1]); subset.push_back(lookup[2]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedABC = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup()+ "-" + lookup[2]->getGroup()<< '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num abc = " << sharedABC << endl; subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[2]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedACD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[2]->getGroup()+ "-" + lookup[3]->getGroup()<< '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + } //cout << "num acd = " << sharedACD << endl; subset.clear(); subset.push_back(lookup[1]); subset.push_back(lookup[2]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset,labels); sharedBCD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[1]->getGroup() + "-" + lookup[2]->getGroup()+ "-" + lookup[3]->getGroup()<< '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + outShared << labels[labels.size()-1]; + outShared << endl; + } //cout << "num bcd = " << sharedBCD << endl; subset.clear(); subset.push_back(lookup[0]); subset.push_back(lookup[1]); subset.push_back(lookup[3]); - data = vCalcs[i]->getValues(subset); + data = vCalcs[i]->getValues(subset, labels); sharedABD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup()+ "-" + lookup[3]->getGroup()<< '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + outShared << labels[labels.size()-1]; + outShared << endl; + } //cout << "num abd = " << sharedABD << endl; //get estimate for all four - data = vCalcs[i]->getValues(lookup); + data = vCalcs[i]->getValues(lookup, labels); sharedABCD = data[0]; + if (sharedOtus && (vCalcs[i]->getName() == "sharedsobs") && (labels.size() != 0)) { + outShared << lookup[0]->getGroup() + "-" + lookup[1]->getGroup() + "-" + lookup[2]->getGroup()+ "-" + lookup[3]->getGroup()<< '\t'<< labels.size() << '\t'; + for (int k = 0; k < labels.size()-1; k++) { + outShared << labels[k] << ","; + } + if (labels.size() != 0) { outShared << labels[labels.size()-1]; } + outShared << endl; + outShared.close(); + } //cout << "num abcd = " << sharedABCD << endl << endl; int sharedVal, sharedABCVal, sharedABDVal, sharedACDVal, sharedBCDVal, sharedABVal, sharedACVal, sharedADVal, sharedBCVal, sharedBDVal, sharedCDVal, numSeqsA, numSeqsB, numSeqsC, numSeqsD;