X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=chao1.cpp;h=d7ec7ea7015da078452562bd526d56944d590560;hp=24521f570e4124a0efa56d1d55c75ed510770728;hb=b206f634aae1b4ce13978d203247fb64757d5482;hpb=3abb236c602eb168ee112f080b563ebe2c705029 diff --git a/chao1.cpp b/chao1.cpp index 24521f5..d7ec7ea 100644 --- a/chao1.cpp +++ b/chao1.cpp @@ -15,11 +15,21 @@ EstOutput Chao1::getValues(SAbundVector* rank){ data.resize(3,0); double sobs = (double)rank->getNumBins(); - - double singles = (double)rank->get(1); - double doubles = (double)rank->get(2); + + //this is a modification do to a vector fill error that occurs when an empty sharedRabund creates a sabund + //in that case there is no 1 0r 2. + double singles; + if (rank->size() > 1) { + singles = (double)rank->get(1); + }else{ singles = 0.0; } + + double doubles; + if (rank->size() > 2) { + doubles = (double)rank->get(2); + }else{ doubles = 0.0; } + double chaovar = 0.0000; -//cout << "singles = " << singles << " doubles = " << doubles << " sobs = " << sobs << endl; +//cout << "singles = " << singles << " doubles = " << doubles << " sobs = " << sobs << endl; double chao = sobs + singles*(singles-1)/(2*(doubles+1)); if(singles > 0 && doubles > 0){ @@ -60,7 +70,7 @@ EstOutput Chao1::getValues(SAbundVector* rank){ return data; } catch(exception& e) { - errorOut(e, "Chao1", "getValues"); + m->errorOut(e, "Chao1", "getValues"); exit(1); } }