5 // Created by SarahsWork on 12/3/13.
6 // Copyright (c) 2013 Schloss Lab. All rights reserved.
9 #ifndef Mothur_communitytype_h
10 #define Mothur_communitytype_h
12 #define EPSILON numeric_limits<double>::epsilon()
15 #include "mothurout.h"
16 #include "linearalgebra.h"
17 /**************************************************************************************************/
19 class CommunityTypeFinder {
22 CommunityTypeFinder(){ m = MothurOut::getInstance(); }
23 virtual ~CommunityTypeFinder(){};
25 virtual void printZMatrix(string, vector<string>);
26 virtual void printRelAbund(string, vector<string>);
27 virtual void printFitData(ofstream&) {}
28 virtual void printFitData(ostream&, double) {}
29 virtual void printSilData(ofstream&, double, vector<double>);
30 virtual void printSilData(ostream&, double, vector<double>);
32 virtual double getNLL() { return currNLL; }
33 virtual double getAIC() { return aic; }
34 virtual double getBIC() { return bic; }
35 virtual double getLogDet() { return logDeterminant; }
36 virtual double getLaplace() { return laplace; }
38 virtual double calcCHIndex(vector< vector< double> >); //Calinski-Harabasz
39 virtual vector<double> calcSilhouettes(vector< vector< double> >);
45 vector<vector<double> > getHessian();
48 double cheb_eval(const double[], int, double);
49 double rMedoid(vector< vector<double> > x, vector< vector<double> > d);
50 vector<vector<double> > calcCenters(vector<vector<double> >&, map<int, int>, vector<vector<double> >&);
54 vector<vector<double> > zMatrix;
55 vector<vector<double> > lambdaMatrix;
56 vector<vector<double> > error;
57 vector<vector<int> > countMatrix;
58 vector<double> weights;
67 double currNLL, aic, bic, logDeterminant, laplace;
72 /**************************************************************************************************/