From: westcott Date: Wed, 18 Feb 2009 17:09:09 +0000 (+0000) Subject: changed unweighted and weighted score cumulatives to be that score or higher instead... X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=commitdiff_plain;h=fb5a52d8d7896ba00c9ccc6add22ed89c5fb2ad7 changed unweighted and weighted score cumulatives to be that score or higher instead of lower. --- diff --git a/unifracunweightedcommand.cpp b/unifracunweightedcommand.cpp index 7706944..3eedb2e 100644 --- a/unifracunweightedcommand.cpp +++ b/unifracunweightedcommand.cpp @@ -113,12 +113,13 @@ int UnifracUnweightedCommand::execute() { saveRandomScores(); //save all random scores for unweighted file //find the signifigance of the score - float rcumul = 0.0000; + float rcumul = 1.0000; for (it = rscoreFreq.begin(); it != rscoreFreq.end(); it++) { + rCumul[it->first] = rcumul; //get percentage of random trees with that info rscoreFreq[it->first] /= iters; - rcumul+= it->second; - rCumul[it->first] = rcumul; + rcumul-= it->second; + } //save the signifigance of the users score for printing later @@ -130,31 +131,29 @@ int UnifracUnweightedCommand::execute() { rCumul.clear(); } - float ucumul = 0.0000; - float rcumul = 0.0000; + float ucumul = 1.0000; + float rcumul = 1.0000; //this loop fills the cumulative maps and put 0.0000 in the score freq map to make it easier to print. for (it = validScores.begin(); it != validScores.end(); it++) { it2 = uscoreFreq.find(it->first); - //user data has that score - if (it2 != uscoreFreq.end()) { uscoreFreq[it->first] /= T.size(); ucumul+= it2->second; } - else { uscoreFreq[it->first] = 0.0000; } //no user trees with that score //make uCumul map uCumul[it->first] = ucumul; - + //user data has that score + if (it2 != uscoreFreq.end()) { uscoreFreq[it->first] /= T.size(); ucumul-= it2->second; } + else { uscoreFreq[it->first] = 0.0000; } //no user trees with that score + //make rscoreFreq map and rCumul it2 = totalrscoreFreq.find(it->first); + rCumul[it->first] = rcumul; //get percentage of random trees with that info - if (it2 != totalrscoreFreq.end()) { totalrscoreFreq[it->first] /= (iters*T.size()); rcumul+= it2->second; } + if (it2 != totalrscoreFreq.end()) { totalrscoreFreq[it->first] /= (iters*T.size()); rcumul-= it2->second; } else { totalrscoreFreq[it->first] = 0.0000; } //no random trees with that score - rCumul[it->first] = rcumul; + } printUnweightedFile(); printUWSummaryFile(); - //reset randomTree parameter to 0 - globaldata->setRandomTree("0"); - delete randT; return 0; diff --git a/unifracunweightedcommand.h b/unifracunweightedcommand.h index cc01aab..ecf78f5 100644 --- a/unifracunweightedcommand.h +++ b/unifracunweightedcommand.h @@ -46,8 +46,8 @@ class UnifracUnweightedCommand : public Command { map rscoreFreq; //unweighted score, number of random trees with that score. map uscoreFreq; //unweighted, number of user trees with that score. map totalrscoreFreq; //unweighted score, number of random trees with that score. - map rCumul; //unweighted score, cumulative percentage of number of random trees with that score or lower. - map uCumul; //unweighted, cumulative percentage of number of user trees with that score or lower . + map rCumul; //unweighted score, cumulative percentage of number of random trees with that score or higher. + map uCumul; //unweighted, cumulative percentage of number of user trees with that score or higher . map::iterator it; map::iterator it2; diff --git a/unifracweightedcommand.cpp b/unifracweightedcommand.cpp index 3b3abf8..47b23d6 100644 --- a/unifracweightedcommand.cpp +++ b/unifracweightedcommand.cpp @@ -151,14 +151,14 @@ int UnifracWeightedCommand::execute() { //find the signifigance of the score for summary file for (int t = 0; t < numComp; t++) { - float rcumul = 0.0000; + float rcumul = 1.0000; for (it = validScores[t].begin(); it != validScores[t].end(); it++) { //make rscoreFreq map and rCumul it2 = rscoreFreq[t].find(it->first); + rCumul[t][it->first] = rcumul; //get percentage of random trees with that info - if (it2 != rscoreFreq[t].end()) { rscoreFreq[t][it->first] /= iters; rcumul+= it2->second; } + if (it2 != rscoreFreq[t].end()) { rscoreFreq[t][it->first] /= iters; rcumul-= it2->second; } else { rscoreFreq[t][it->first] = 0.0000; } //no random trees with that score - rCumul[t][it->first] = rcumul; } } @@ -175,24 +175,24 @@ int UnifracWeightedCommand::execute() { rCumul.resize(numComp); for (int b = 0; b < numComp; b++) { - float ucumul = 0.0000; - float rcumul = 0.0000; + float ucumul = 1.0000; + float rcumul = 1.0000; //this loop fills the cumulative maps and put 0.0000 in the score freq map to make it easier to print. - for (it = validScores[b].end(); it == validScores[b].begin(); it--) { + for (it = validScores[b].begin(); it != validScores[b].end(); it++) { it2 = uscoreFreq[b].find(it->first); - //user data has that score - if (it2 != uscoreFreq[b].end()) { uscoreFreq[b][it->first] /= T.size(); ucumul+= it2->second; } - else { uscoreFreq[b][it->first] = 0.0000; } //no user trees with that score //make uCumul map uCumul[b][it->first] = ucumul; + //user data has that score + if (it2 != uscoreFreq[b].end()) { uscoreFreq[b][it->first] /= T.size(); ucumul-= it2->second; } + else { uscoreFreq[b][it->first] = 0.0000; } //no user trees with that score //make rscoreFreq map and rCumul it2 = totalrscoreFreq[b].find(it->first); + rCumul[b][it->first] = rcumul; //get percentage of random trees with that info - if (it2 != totalrscoreFreq[b].end()) { totalrscoreFreq[b][it->first] /= (iters * T.size()); rcumul+= it2->second; } + if (it2 != totalrscoreFreq[b].end()) { totalrscoreFreq[b][it->first] /= (iters * T.size()); rcumul-= it2->second; } else { totalrscoreFreq[b][it->first] = 0.0000; } //no random trees with that score - rCumul[b][it->first] = rcumul; - } + } } printWeightedFile(); diff --git a/unifracweightedcommand.h b/unifracweightedcommand.h index 047c92b..45d3c7c 100644 --- a/unifracweightedcommand.h +++ b/unifracweightedcommand.h @@ -47,8 +47,8 @@ class UnifracWeightedCommand : public Command { vector< map > rscoreFreq; //vector each group comb has an entry vector< map > uscoreFreq; //vector each group comb has an entry vector< map > totalrscoreFreq; //vector each group comb has an entry - vector< map > rCumul; //vector each group comb has an entry - vector< map > uCumul; //vector each group comb has an entry + vector< map > rCumul; //vector each group comb has an entry + vector< map > uCumul; //vector each group comb has an entry map::iterator it; map::iterator it2;