5 // Created by SarahsWork on 1/3/14.
6 // Copyright (c) 2014 Schloss Lab. All rights reserved.
9 #include "shannonrange.h"
11 /***********************************************************************/
13 EstOutput RangeShannon::getValues(SAbundVector* rank){
17 double commSize = 1e20;
18 double sampleSize = rank->getNumSeqs();
20 double aux = ceil(pow(sampleSize+1, (1/(double)3)));
21 double est0 = rank->get(1)+1;
22 if (aux > est0) { est0 = aux; } //est0 = max(rank->get(1)+1, aux)
26 for (int i = 1; i < rank->getNumBins()-1; i++) {
28 if (m->control_pressed) { break; }
30 int abund = rank->get(i);
34 int abundNext = rank->get(i+1);
35 if (abundNext == 0) { numr = aux; }
37 if (abundNext+1 > aux) { numr = abundNext+1; } //numr = max(abundNext+1, aux)
41 if (abund > aux) { denr = abund; } //denr = max(abund, aux)
42 ests.push_back((abund+1)*numr/denr);
48 if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; }
53 m->errorOut(e, "RangeShannon", "getValues");
57 /***********************************************************************/