1 // 2 // diversityutils.hpp 3 // Mothur 4 // 5 // Created by Sarah Westcott on 4/11/19. 6 // Copyright © 2019 Schloss Lab. All rights reserved. 7 // 8 9 #ifndef diversityutils_hpp 10 #define diversityutils_hpp 11 12 #define HI_PRECISION 1.0e-12 13 #define LO_PRECISION 1.0e-7 14 15 #define V_MULT 25.0 16 #define PENALTY 1.0e20 17 #define SLICE 10 18 19 20 #include "diversitycalc.h" 21 22 23 /***********************************************************************/ 24 25 class DiversityUtils { 26 27 public: DiversityUtils(string met)28 DiversityUtils(string met){ m = MothurOut::getInstance(); method = met; } 29 30 #ifdef USE_GSL 31 32 double logLikelihood(int n, double dAlpha, double dBeta); 33 double logLikelihood(int n, double dAlpha, double dBeta, double); 34 bool bessel(double* pdResult, int n, double dAlpha, double dBeta); 35 double sd(int n, double dAlpha, double dBeta); 36 bool bessel(double* pdResult, int n, double dAlpha, double dBeta, double); 37 double sd(int n, double dAlpha, double dBeta, double); 38 int minimiseSimplex(gsl_vector* ptX, size_t nP, void* pvData, double (*f)(const gsl_vector*, void* params), double, double, double); 39 vector<double> mcmc(t_Params *ptParams, t_Data *ptData, gsl_vector* ptX, void* f (void * pvInitMetro)); 40 vector<double> outputResults(gsl_vector *ptX, t_Data *ptData, double (*f)(const gsl_vector*, void* params)); 41 void getProposal(gsl_rng *ptGSLRNG, gsl_vector *ptXDash, gsl_vector *ptX, int* pnSDash, int nS, t_Params *ptParams); 42 int solveF(double x_lo, double x_hi, void* params, double tol, double *xsolve); 43 int solveF(double x_lo, double x_hi, double (*f)(double, void*), void* params, double tol, double *xsolve); 44 double logLikelihoodRampal(int n, double dMDash, double dV); 45 double logLikelihoodQuad(int n, double dMDash, double dV); 46 double logLikelihoodRampal(int n, double dMDash, double dV, double dNu); 47 double logLikelihoodQuad(int n, double dMDash, double dV, double dNu); 48 double calcMu(void *ptLNParams); 49 int fitSigma(vector<double>, vector<double>, int fi, t_Params *ptParams, t_Data *ptData, gsl_vector* ptX, void* f (void * pvInitMetro)); 50 51 #endif 52 53 double f2X(double x, double dA, double dB, double dNDash); 54 double fX(double x, double dA, double dB, double dNDash); 55 double chao(t_Data *ptData); 56 double logStirlingsGamma(double dZ); 57 58 void loadAbundance(t_Data *ptData, SAbundVector* rank); 59 void freeAbundance(t_Data *ptData); 60 61 62 63 64 MothurOut* m; 65 66 private: 67 68 Utils util; 69 70 string method; 71 72 acceptRatioPos findBest(vector<double> accept); 73 74 75 76 }; 77 78 /***********************************************************************/ 79 80 81 82 #endif /* diversityutils_hpp */ 83