From 0c764f30117bc3ae41413e12071070330c3d6a3d Mon Sep 17 00:00:00 2001 From: westcott Date: Fri, 27 Aug 2010 14:18:38 +0000 Subject: [PATCH] fixed phylo.diversity --- phylodiversitycommand.cpp | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/phylodiversitycommand.cpp b/phylodiversitycommand.cpp index 98002e7..6be1fdd 100644 --- a/phylodiversitycommand.cpp +++ b/phylodiversitycommand.cpp @@ -250,34 +250,22 @@ int PhyloDiversityCommand::execute(){ void PhyloDiversityCommand::printSumData(map< string, vector >& div, ofstream& out, int numIters){ try { - out << "numSampled\t"; - for (int i = 0; i < globaldata->Groups.size(); i++) { out << globaldata->Groups[i] << '\t'; } - out << endl; + out << "Groups\tnumSampled\tphyloDiversity" << endl; out.setf(ios::fixed, ios::floatfield); out.setf(ios::showpoint); - - set num; - //find end points to output - for (map >::iterator itEnds = div.begin(); itEnds != div.end(); itEnds++) { num.insert(itEnds->second.size()-1); } - - for (set::iterator it = num.begin(); it != num.end(); it++) { - int numSampled = *it; - - out << numSampled << '\t'; - for (int j = 0; j < globaldata->Groups.size(); j++) { - if (numSampled < div[globaldata->Groups[j]].size()) { - float score; - if (scale) { score = (div[globaldata->Groups[j]][numSampled] / (float)numIters) / (float)numSampled; } - else { score = div[globaldata->Groups[j]][numSampled] / (float)numIters; } - - out << setprecision(4) << score << '\t'; - - }else { out << "NA" << '\t'; } - } - out << endl; - } + for (int j = 0; j < globaldata->Groups.size(); j++) { + int numSampled = (div[globaldata->Groups[j]].size()-1); + out << globaldata->Groups[j] << '\t' << numSampled << '\t'; + + float score; + if (scale) { score = (div[globaldata->Groups[j]][numSampled] / (float)numIters) / (float)numSampled; } + else { score = div[globaldata->Groups[j]][numSampled] / (float)numIters; } + + out << setprecision(4) << score << endl; + } + out.close(); } -- 2.39.2