* Mothur
*
* Created by Thomas Ryabin on 2/23/09.
- * Copyright 2009 __MyCompanyName__. All rights reserved.
+ * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
*
*/
SAbundVector rankw = SAbundVector(dvec, mr,nb,ns);
SAbundVector *rank = &rankw;*/
- data.resize(2,0);
+ data.resize(3,0);
int numInd = rank->getNumSeqs();
int numSpec = rank->getNumBins();
double snRatio = (double)numSpec/numInd;
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
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);
oct++;
}
- if(y == rank->size()-1)
- {
+ if(y == rank->size()-1) {
sumObs += octSumObs;
sumExp += octSumExp;
}
if(diff > maxDiff)
maxDiff = diff;
}
-
- 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);
+
+ data[0] = (maxDiff + .5)/numSpec;
+ data[1] = 0.886/sqrt(numSpec);
+ data[2] = 1.031/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";
+ cout << "Standard Error: " << e.what() << " has occurred in the LogSD class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
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";
+ cout << "An unknown error has occurred in the LogSD class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
exit(1);
}
}