X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=canberra.cpp;fp=canberra.cpp;h=9ab6234ae3119c4f3b103f314e97e9c69d793780;hb=0caf3fbabaa3ece404f8ce77f4c883dc5b1bf1dc;hp=0000000000000000000000000000000000000000;hpb=1b73ff67c83892a025e597dabd9df6fe7b58206a;p=mothur.git diff --git a/canberra.cpp b/canberra.cpp new file mode 100644 index 0000000..9ab6234 --- /dev/null +++ b/canberra.cpp @@ -0,0 +1,47 @@ +/* + * canberra.cpp + * Mothur + * + * Created by westcott on 12/14/10. + * Copyright 2010 Schloss Lab. All rights reserved. + * + */ + +#include "canberra.h" + +/***********************************************************************/ + +EstOutput Canberra::getValues(vector shared) { + try { + data.resize(1,0); + + int numSharedOTUS = 0; + + double sum = 0.0; + + for (int i = 0; i < shared[0]->getNumBins(); i++) { + + int Aij = shared[0]->getAbundance(i); + int Bij = shared[1]->getAbundance(i); + + //is this otu shared + if ((Aij != 0) && (Bij != 0)) { numSharedOTUS++; } + + if ((Aij + Bij) != 0) { + sum += ((abs(Aij - Bij)) / (float) (Aij + Bij)); + } + } + + data[0] = (1 / (float) shared[0]->getNumBins()) * sum; + + if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; } + + return data; + } + catch(exception& e) { + m->errorOut(e, "Canberra", "getValues"); + exit(1); + } +} + +/***********************************************************************/