X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=efron.cpp;h=7e1cba8ce055b9c47042806839ea80236f10b3d4;hp=e84364160e2a48dd6e87927ade301c942565088d;hb=050a3ff02473a3d4c0980964e1a9ebe52e55d6b8;hpb=37a2c0b7dc68bfa53c8f38a713259929c4c46a9f diff --git a/efron.cpp b/efron.cpp index e843641..7e1cba8 100644 --- a/efron.cpp +++ b/efron.cpp @@ -3,12 +3,11 @@ * Mothur * * Created by Thomas Ryabin on 5/13/09. - * Copyright 2009 __MyCompanyName__. All rights reserved. + * Copyright 2009Schloss Lab UMASS Amherst. All rights reserved. * */ #include "efron.h" -#include /***********************************************************************/ EstOutput Efron::getValues(SAbundVector* rank){ @@ -16,29 +15,22 @@ EstOutput Efron::getValues(SAbundVector* rank){ try { data.resize(1,0); - if(m > rank->size()-1) { - cout << "Error in the 'efron' calculator. 'size' must be less than the length of the smalled sabund vector.\n"; - data[0] = 0; - return data; - } + double n = (double)rank->getNumSeqs(); + if(f > n || f == 0) { f = n; } double sum = 0; - for(int i = 1; i < rank->size(); i++) - sum += pow(-1, (double)(i+1)) * pow(((double)m / (double)(rank->size()-1)), i) * (double)(rank->get(i)); - + for(int i = 1; i < rank->size(); i++){ + sum += pow(-1., i+1) * pow(((double)f / n), i) * (double)(rank->get(i)); + } data[0] = sum; return data; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the Coverage class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "Efron", "getValues"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the Coverage class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } -}; +} /***********************************************************************/