]> git.donarmstrong.com Git - mothur.git/blob - fullmatrix.h
working on libshuff
[mothur.git] / fullmatrix.h
1 #ifndef FULLMATRIX_H
2 #define FULLMATRIX_H
3 /*
4  *  fullmatrix.h
5  *  Mothur
6  *
7  *  Created by Sarah Westcott on 3/6/09.
8  *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
9  *
10  */
11
12 #include "mothur.h"
13 #include "groupmap.h"
14 #include "globaldata.hpp"
15 #include "progress.hpp"
16
17 using namespace std;
18
19 struct Names {
20         string          groupname;
21         string          seqName;
22 };
23
24
25 class FullMatrix {
26         
27         public:
28                 FullMatrix(){};
29                 FullMatrix(ifstream&);
30                 ~FullMatrix(){};
31         
32                 int getNumSeqs();
33                 void printMatrix(ostream&);
34                 void getMinsForRowsVectors();  //requires globaldata->Groups to be filled
35         
36         private:
37                 void sortGroups(int, int);  //this function sorts the sequences within the matrix.
38                 void getBounds(int&, string);
39                 void readSquareMatrix(ifstream&);  
40                 void readLTMatrix(ifstream&);
41                 vector< vector<float> > matrix;  //a 2D distance matrix of all the sequences and their distances to eachother.
42                 vector< vector<float> > minsForRows;  //vector< minimum distance for that subrow> -one for each comparison.
43                 map<int, Names> index; // row in vector, sequence group.  need to know this so when we sort it can be updated.
44                 map<int, Names>::iterator it;
45                 GroupMap* groupmap;  //maps sequences to groups they belong to.
46                 GlobalData* globaldata;
47                 int numSeqs, numGroups, numUserGroups;
48                 bool square;
49
50 };
51
52 #endif