X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=linearalgebra.cpp;h=e19861912d9c7fc78f9b2cbbb87ecd76e9388ba9;hb=f0a594f6676ef5a52d1f122b6de70de2fda08c81;hp=9308627d1335920ea49f9b4c5bbd543de629ae85;hpb=5553e33be3a45eee6bed2ac9a5c4ca0aa0e8d5e4;p=mothur.git diff --git a/linearalgebra.cpp b/linearalgebra.cpp index 9308627..e198619 100644 --- a/linearalgebra.cpp +++ b/linearalgebra.cpp @@ -53,6 +53,39 @@ vector > LinearAlgebra::matrix_mult(vector > first /*********************************************************************************************************************************/ +void LinearAlgebra::recenter(double offset, vector > D, vector >& G){ + try { + int rank = D.size(); + + vector > A(rank); + vector > C(rank); + for(int i=0;ierrorOut(e, "LinearAlgebra", "recenter"); + exit(1); + } + +} +/*********************************************************************************************************************************/ + // This function is taken from Numerical Recipes in C++ by Press et al., 2nd edition, pg. 479 int LinearAlgebra::tred2(vector >& a, vector& d, vector& e){ @@ -637,7 +670,7 @@ double LinearAlgebra::calcKendall(vector< vector >& euclidDists, vector< int numWithLowerRank = 0; float thisrank = user[l].score; - for (int u = l; u < scores.size(); u++) { + for (int u = l+1; u < scores.size(); u++) { if (user[u].score > thisrank) { numWithHigherRank++; } else if (user[u].score < thisrank) { numWithLowerRank++; } count++; @@ -647,9 +680,6 @@ double LinearAlgebra::calcKendall(vector< vector >& euclidDists, vector< numDisCoor += numWithLowerRank; } - //comparing to yourself - count -= userDists.size(); - r = (numCoor - numDisCoor) / (float) count; //divide by zero error @@ -666,4 +696,30 @@ double LinearAlgebra::calcKendall(vector< vector >& euclidDists, vector< /*********************************************************************************************************************************/ +vector > LinearAlgebra::getObservedEuclideanDistance(vector >& relAbundData){ + + int numSamples = relAbundData.size(); + int numOTUs = relAbundData[0].size(); + + vector > dMatrix(numSamples); + for(int i=0;i