X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=logsd.cpp;h=62faf8eab68c726f9499451ec3207fc66ae2cbd2;hb=30b3ffcd1cfd08e7144ae721bb53e27eb3f7a5d1;hp=14d2e442fa2bea0a6e153dc310b59d687b51b642;hpb=e4827e0945cbda536064e5a345996b2a7dfcbb81;p=mothur.git diff --git a/logsd.cpp b/logsd.cpp index 14d2e44..62faf8e 100644 --- a/logsd.cpp +++ b/logsd.cpp @@ -35,8 +35,7 @@ EstOutput LogSD::getValues(SAbundVector* rank){ double x = .5; double step = .4999999999; - while(fabs(snRatio - logS(x)) > .00001) //This uses a binary search to find the value of x. - { + while(fabs(snRatio - logS(x)) > .00001) { //This uses a binary search to find the value of x. if(logS(x) > snRatio) x += step; else @@ -51,15 +50,12 @@ EstOutput LogSD::getValues(SAbundVector* rank){ double octSumExp = 0; double sumExp = 0; double maxDiff = 0; - for(int y = 1; y < rank->size(); y++) - { - if(y - .5 < pow(2.0, oct)) - { + for(int y = 1; y < rank->size(); y++) { + if(y - .5 < pow(2.0, oct)) { octSumObs += rank->get(y); octSumExp += alpha*pow(x,y)/(y); } - else - { + else { sumObs += octSumObs; octSumObs = rank->get(y); @@ -68,8 +64,7 @@ EstOutput LogSD::getValues(SAbundVector* rank){ oct++; } - if(y == rank->size()-1) - { + if(y == rank->size()-1) { sumObs += octSumObs; sumExp += octSumExp; } @@ -78,27 +73,21 @@ EstOutput LogSD::getValues(SAbundVector* rank){ if(diff > maxDiff) maxDiff = diff; } + + data[0] = (maxDiff + .5)/numSpec; + data[1] = 0.886/sqrt(numSpec); + data[2] = 1.031/sqrt(numSpec); - double DStatistic = (maxDiff + .5)/numSpec; - /*cout << "LogSD:\n"; - cout << "D Test Statistic = " << DStatistic << "\n"; - cout << ".05 confidence value = " << .89196/sqrt(numSpec) << "\n"; - cout << "If D Test Statistic is greater than the critical value then the data fits the Log Series Distribution model w/ 95% confidence.\n\n";*/ - - data[0] = DStatistic; - data[1] = .89196/sqrt(numSpec); if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; } if (isnan(data[1]) || isinf(data[1])) { data[1] = 0; } + if (isnan(data[2]) || isinf(data[2])) { data[2] = 0; } + return data; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the NPShannon class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "LogSD", "getValues"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the NPShannon class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } } /***********************************************************************/