double v(double m, double phi, double v_0, double mu, double k, double l_0) { /* Calculates the velocity at a point given the velocity d_phi away from the point we care about. Derivation explained in lab report. */ return sqrt(((2*r*d_phi)/m)*(wt(m,phi)-Fst(phi,k,l_0)-mu*wn(m,phi) -mu*Fsn(phi,k,l_0)+((mu*m*pow(v_0,2))/(r)) +(m*pow(v_0,2)/(2*r*d_phi)))); }
bool UnitTests::SharedSeqs() { std::vector< std::vector<double> > dissMatrix; // unweighted MRCA (= MRCA restricted Soergel) DiversityCalculator uMRCA("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Soergel", 1000, false, false, true, false, false); uMRCA.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][1], 2.0/6.0)) return false; // unweighted Tamas coefficient DiversityCalculator uTC("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Tamas coefficient", 1000, false, false, false, false, false); uTC.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][1], 2.0/13.0)) return false; // unweighted Soergel DiversityCalculator uSoergel("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Soergel", 1000, false, false, false, false, false); uSoergel.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][0], 8.0/13.0)) return false; if(!Compare(dissMatrix[2][1], 2.0/9.0)) return false; // unweighted Canberra DiversityCalculator uCanberra("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Canberra", 1000, false, false, false, false, false); uCanberra.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 8.0)) return false; if(!Compare(dissMatrix[2][0], 8.0)) return false; if(!Compare(dissMatrix[2][1], 2.0)) return false; // weighted Soergel DiversityCalculator Soergel("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Soergel", 1000, true, false, false, false, false); Soergel.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 0.55)) return false; if(!Compare(dissMatrix[2][0], 0.615385)) return false; if(!Compare(dissMatrix[2][1], 0.16981)) return false; // weighted Bray-Curtis DiversityCalculator BC("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Bray-Curtis", 1000, true, false, false, false, false); BC.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 0.37931000)) return false; if(!Compare(dissMatrix[2][0], 0.444440)) return false; if(!Compare(dissMatrix[2][1], 0.092783500)) return false; // weighted Fst DiversityCalculator Fst("../unit-tests/SharedSeqs.env", "../unit-tests/SharedSeqs.tre", "Fst", 1000, true, false, false, false, false); Fst.Dissimilarity("../unit-tests/temp", "UPGMA"); ReadDissMatrix("../unit-tests/temp.diss", dissMatrix); if(!Compare(dissMatrix[1][0], 0.139560)) return false; if(!Compare(dissMatrix[2][0], 0.18378390)) return false; if(!Compare(dissMatrix[2][1], 0.043478190)) return false; return true; }