X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=sharedkstest.cpp;h=d91478801678c53ddb87dce7b1474272a2b30275;hp=1da7c90c1e3b4bcda6ae0a0aee70e60995c9c8e8;hb=cf9987b67aa49777a4c91c2d21f96e58bf17aa82;hpb=51cf89e90eef8b300c2786eb1560dd89e6e83445 diff --git a/sharedkstest.cpp b/sharedkstest.cpp index 1da7c90..d914788 100644 --- a/sharedkstest.cpp +++ b/sharedkstest.cpp @@ -11,28 +11,28 @@ /***********************************************************************/ -EstOutput KSTest::getValues(SharedRAbundVector* shared1, SharedRAbundVector* shared2){ +EstOutput KSTest::getValues(vector shared){ try { - data.resize(2,0); - + data.resize(3,0); + //Must return shared1 and shared2 to original order at conclusion of kstest - vector initData1 = shared1->getData(); - vector initData2 = shared2->getData(); - shared1->sortD(); - shared2->sortD(); + vector initData1 = shared[0]->getData(); + vector initData2 = shared[1]->getData(); + shared[0]->sortD(); + shared[1]->sortD(); - int numNZ1 = shared1->numNZ(); - int numNZ2 = shared2->numNZ(); - double numInd1 = (double)shared1->getNumSeqs(); - double numInd2 = (double)shared2->getNumSeqs(); + int numNZ1 = shared[0]->numNZ(); + int numNZ2 = shared[1]->numNZ(); + double numInd1 = (double)shared[0]->getNumSeqs(); + double numInd2 = (double)shared[1]->getNumSeqs(); double maxDiff = -1; double sum1 = 0; double sum2 = 0; - for(int i = 1; i < shared1->getNumBins(); i++) + for(int i = 1; i < shared[0]->getNumBins(); i++) { - sum1 += shared1->get(i).abundance; - sum2 += shared2->get(i).abundance; + sum1 += shared[0]->get(i).abundance; + sum2 += shared[1]->get(i).abundance; double diff = fabs((double)sum1/numInd1 - (double)sum2/numInd2); if(diff > maxDiff) maxDiff = diff; @@ -43,35 +43,22 @@ EstOutput KSTest::getValues(SharedRAbundVector* shared1, SharedRAbundVector* sha //double pVal = exp(-2*pow(maxDiff/a,2)); double critVal = 1.36*a*numNZ1*numNZ2; - /*cout << "Kolmogorov-Smirnov 2-sample test:\n"; - if(numNZ1 > 25 && numNZ2 > 25) //If the sample sizes are both bigger than 25. - cout << "P-Value = " << pVal << "\nP-Value is the probability that the data sets are significantly different.\n"; - else - { - //cout << "90% Confidence Critical Value = " << 1.22*a*numNZ1*numNZ2 << "\n"; - cout << "D-Statistic = " << DStatistic << "\n"; - cout << "95% Confidence Critical Value = " << critVal << "\n"; - cout << "If D-Statistic is greater than the critical value then the data sets are significantly different at the 95% confidence level.\n\n"; - }*/ - - shared1->setData(initData1); - shared2->setData(initData2); + shared[0]->setData(initData1); + shared[1]->setData(initData2); data[0] = DStatistic; data[1] = critVal; + data[2] = 0; + if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; } if (isnan(data[1]) || isinf(data[1])) { data[1] = 0; } return data; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the KSTest class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "KSTest", "getValues"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the KSTest class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } } /***********************************************************************/