X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=unifracunweightedcommand.cpp;h=19a2ece3bb4253e6da6199515d9c203d2d656400;hb=20071b183e619c122bf9f63b4bb42722507c4e4a;hp=5f3cffc2b1ab807b279ba3185444dc96a0a3b863;hpb=8159f34321e2c771638059b59a986caca9f3ab60;p=mothur.git diff --git a/unifracunweightedcommand.cpp b/unifracunweightedcommand.cpp index 5f3cffc..19a2ece 100644 --- a/unifracunweightedcommand.cpp +++ b/unifracunweightedcommand.cpp @@ -481,20 +481,29 @@ int UnifracUnweightedCommand::execute() { int UnifracUnweightedCommand::getAverageSTDMatrices(vector< vector >& dists, int treeNum) { try { //we need to find the average distance and standard deviation for each groups distance - //finds sum - vector averages; averages.resize(numComp, 0); + vector averages; //averages.resize(numComp, 0.0); + for (int i = 0; i < numComp; i++) { averages.push_back(0.0); } + + if (m->debug) { m->mothurOut("[DEBUG]: numcomparisons = " + toString(numComp) + ", subsampleIters = " + toString(subsampleIters) + "\n"); } + for (int thisIter = 0; thisIter < subsampleIters; thisIter++) { for (int i = 0; i < dists[thisIter].size(); i++) { averages[i] += dists[thisIter][i]; } } + if (m->debug) { m->mothurOut("[DEBUG]: numcomparisons = " + toString(numComp) + ", subsampleIters = " + toString(subsampleIters) + "\n"); } + //finds average. - for (int i = 0; i < averages.size(); i++) { averages[i] /= (float) subsampleIters; } + for (int i = 0; i < averages.size(); i++) { + averages[i] /= (float) subsampleIters; + if (m->debug) { m->mothurOut("[DEBUG]: i = " + toString(i) + ", averages[i] = " + toString(averages[i]) + "\n"); } + } //find standard deviation - vector stdDev; stdDev.resize(numComp, 0); + vector stdDev; //stdDev.resize(numComp, 0.0); + for (int i = 0; i < numComp; i++) { stdDev.push_back(0.0); } for (int thisIter = 0; thisIter < subsampleIters; thisIter++) { //compute the difference of each dist from the mean, and square the result of each for (int j = 0; j < dists[thisIter].size(); j++) { @@ -504,20 +513,28 @@ int UnifracUnweightedCommand::getAverageSTDMatrices(vector< vector >& di for (int i = 0; i < stdDev.size(); i++) { stdDev[i] /= (float) subsampleIters; stdDev[i] = sqrt(stdDev[i]); + if (m->debug) { m->mothurOut("[DEBUG]: i = " + toString(i) + ", stdDev[i] = " + toString(stdDev[i]) + "\n"); } } //make matrix with scores in it - vector< vector > avedists; avedists.resize(m->getNumGroups()); + vector< vector > avedists; //avedists.resize(m->getNumGroups()); for (int i = 0; i < m->getNumGroups(); i++) { - avedists[i].resize(m->getNumGroups(), 0.0); + vector temp; + for (int j = 0; j < m->getNumGroups(); j++) { temp.push_back(0.0); } + avedists.push_back(temp); } //make matrix with scores in it - vector< vector > stddists; stddists.resize(m->getNumGroups()); + vector< vector > stddists; //stddists.resize(m->getNumGroups()); for (int i = 0; i < m->getNumGroups(); i++) { - stddists[i].resize(m->getNumGroups(), 0.0); + vector temp; + for (int j = 0; j < m->getNumGroups(); j++) { temp.push_back(0.0); } + //stddists[i].resize(m->getNumGroups(), 0.0); + stddists.push_back(temp); } + if (m->debug) { m->mothurOut("[DEBUG]: about to fill matrix.\n"); } + //flip it so you can print it int count = 0; for (int r=0; rgetNumGroups(); r++) { @@ -530,6 +547,8 @@ int UnifracUnweightedCommand::getAverageSTDMatrices(vector< vector >& di } } + if (m->debug) { m->mothurOut("[DEBUG]: done filling matrix.\n"); } + map variables; variables["[filename]"] = outputDir + m->getRootName(m->getSimpleName(treefile)); variables["[tag]"] = toString(treeNum+1);