]> git.donarmstrong.com Git - mothur.git/blob - linearalgebra.h
added get.metacommunity command.
[mothur.git] / linearalgebra.h
1 #ifndef LINEARALGEBRA
2 #define LINEARALGEBRA
3
4 /*
5  *  linearalgebra.h
6  *  mothur
7  *
8  *  Created by westcott on 1/7/11.
9  *  Copyright 2011 Schloss Lab. All rights reserved.
10  *
11  */
12
13 #include "mothurout.h"
14
15
16 class LinearAlgebra {
17         
18 public:
19         LinearAlgebra() { m = MothurOut::getInstance(); }
20         ~LinearAlgebra() {}
21         
22         vector<vector<double> > matrix_mult(vector<vector<double> >, vector<vector<double> >);
23         void recenter(double, vector<vector<double> >, vector<vector<double> >&);
24         int tred2(vector<vector<double> >&, vector<double>&, vector<double>&);
25         int qtli(vector<double>&, vector<double>&, vector<vector<double> >&);
26         vector< vector<double> > calculateEuclidianDistance(vector<vector<double> >&, int); //pass in axes and number of dimensions
27         vector< vector<double> > calculateEuclidianDistance(vector<vector<double> >&); //pass in axes
28         vector<vector<double> > getObservedEuclideanDistance(vector<vector<double> >&);
29         double calcPearson(vector<vector<double> >&, vector<vector<double> >&);
30         double calcSpearman(vector<vector<double> >&, vector<vector<double> >&);
31         double calcKendall(vector<vector<double> >&, vector<vector<double> >&);
32         
33         double calcPearson(vector<double>&, vector<double>&, double&);
34         double calcSpearman(vector<double>&, vector<double>&, double&);
35         double calcKendall(vector<double>&, vector<double>&, double&);
36     
37         double calcSpearmanSig(double, double, double, double); //length, f^3 - f where f is the number of ties in x, f^3 - f where f is the number of ties in y, sum of squared diffs in ranks. - designed to find the sif of one score.
38     double calcPearsonSig(double, double); //length, coeff.
39     double calcKendallSig(double, double); //length, coeff.
40     
41     vector<double> solveEquations(vector<vector<double> >, vector<double>);
42     vector<vector<double> > getInverse(vector<vector<double> >);
43
44     
45 private:
46         MothurOut* m;
47         
48         double pythag(double, double);
49     double betacf(const double, const double, const double);
50     double betai(const double, const double, const double);
51     double gammln(const double);
52     double gammp(const double, const double);
53     double gammq(const double, const double);
54     double gser(double&, const double, const double, double&);
55     double gcf(double&, const double, const double, double&);
56     double erfcc(double);
57     
58     double ran0(int&); //for testing 
59     double ran1(int&); //for testing
60     double ran2(int&); //for testing
61     double ran3(int&); //for testing
62     double ran4(int&); //for testing
63     void psdes(unsigned long &, unsigned long &); //for testing
64     
65     void ludcmp(vector<vector<double> >&, vector<int>&, double&);
66     void lubksb(vector<vector<double> >&, vector<int>&, vector<double>&);
67
68     
69 };
70
71 #endif
72