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> >) {return 0;} //Calinski-Harabasz
39 virtual vector<double> calcSilhouettes(vector< vector< double> >) { vector<double> s; return s; } //if none provided by child class
45 vector<vector<double> > getHessian();
48 double cheb_eval(const double[], int, double);
52 vector<vector<double> > zMatrix;
53 vector<vector<double> > lambdaMatrix;
54 vector<vector<double> > error;
55 vector<vector<int> > countMatrix;
56 vector<double> weights;
65 double currNLL, aic, bic, logDeterminant, laplace;
70 /**************************************************************************************************/