5 * Created by westcott on 12/15/10.
6 * Copyright 2010 Schloss Lab. All rights reserved.
10 #include "structpearson.h"
12 /***********************************************************************/
13 EstOutput StructPearson::getValues(vector<SharedRAbundVector*> shared) {
17 int numOTUS = shared[0]->getNumBins();
18 double averageA = shared[0]->getNumSeqs() / (float) numOTUS;
19 double averageB = shared[1]->getNumSeqs() / (float) numOTUS;
22 double denomTerm1 = 0.0;
23 double denomTerm2 = 0.0;
25 for (int i = 0; i < shared[0]->getNumBins(); i++) {
26 int Aij = shared[0]->getAbundance(i);
27 int Bij = shared[1]->getAbundance(i);
30 numTerm += ((Aij - averageA) * (Bij - averageB));
31 denomTerm1 += ((Aij - averageA) * (Aij - averageA));
32 denomTerm2 += ((Bij - averageB) * (Bij - averageB));
35 denomTerm1 = sqrt(denomTerm1);
36 denomTerm2 = sqrt(denomTerm2);
38 double denom = denomTerm1 * denomTerm2;
40 data[0] = (numTerm / denom);
42 if (isnan(data[0]) || isinf(data[0])) { data[0] = 0; }
47 m->errorOut(e, "StructPearson", "getValues");
51 /***********************************************************************/