5 * Created by Sarah Westcott on 1/7/09.
6 * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
12 /***********************************************************************/
13 EstOutput Chao1::getValues(SAbundVector* rank){
17 double sobs = (double)rank->getNumBins();
19 double singles = (double)rank->get(1);
20 double doubles = (double)rank->get(2);
21 double chaovar = 0.0000;
23 double chao = sobs + pow(singles,2)/(2*(doubles+1)) - (singles*doubles/(2*pow(doubles+1,2)));
25 if(doubles==0){chaovar=0;}
27 double g=singles/doubles;
28 chaovar = doubles*(0.25*pow(g,4)+pow(g,3)+0.5*pow(g,2));
32 double chaohci, chaolci;
35 double ci = 1.96*pow(chaovar,0.5);
36 chaolci = chao-ci;//chao lci
37 chaohci = chao+ci;//chao hci
40 double denom = pow(chao-sobs,2);
41 double c = exp(1.96*pow((log(1+chaovar/denom)),0.5));
42 chaolci = sobs+(chao-sobs)/c;//chao lci
43 chaohci = sobs+(chao-sobs)*c;//chao hci
50 if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; }
51 if (isnan(data[1]) || isinf(data[1])) { data[1] = 0; }
52 if (isnan(data[2]) || isinf(data[2])) { data[2] = 0; }
57 cout << "Standard Error: " << e.what() << " has occurred in the Chao1 class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
61 cout << "An unknown error has occurred in the Chao1 class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
66 /***********************************************************************/