]> git.donarmstrong.com Git - mothur.git/blobdiff - fullmatrix.h
fixes while testing 1.33.0
[mothur.git] / fullmatrix.h
index b744490d760d108df3ef7780cb35bcae918b9dd2..9de7ead566d4d5446b5ea405b5e3c7eb24991cc0 100644 (file)
 
 #include "mothur.h"
 #include "groupmap.h"
-#include "globaldata.hpp"
 #include "progress.hpp"
 
-using namespace std;
 
 struct Names {
-       string          groupname;
        string          seqName;
+       string          groupName;
 };
 
-struct Swap {
-       int             a;
-       int             b;
-};
-
-
 class FullMatrix {
        
-       public:
-               FullMatrix(){};
-               FullMatrix(ifstream&);
-               ~FullMatrix(){};
+public:
+       //FullMatrix(){ m = MothurOut::getInstance(); }
+       FullMatrix(ifstream&, GroupMap*, bool);
+       ~FullMatrix(){};
        
-               int getNumSeqs();
-               void printMatrix(ostream&);
-               void setBounds();  //requires globaldata->Groups to be filled
-               vector<float> getMins(int); //returns vector of mins for "box" requested ie. groups A, B, 0 = AA, 1 = AB, 2 = BA, 3 = BB;
-               void getDist(vector<float>&);  //fills a vector with the valid distances for the integral form.
-               void shuffle(int);  //shuffles the sequences in the box passed in.
-               void restore();  //unshuffles the matrix.
-                               
-               
-       void printMinsForRows(ostream&);
-       private:
-               void sortGroups(int, int);  //this function sorts the sequences within the matrix.
-               void getBounds(int&, string);
-               void readSquareMatrix(ifstream&);  
-               void readLTMatrix(ifstream&);
-               
-               map<int, Names> index; // row in vector, sequence group.  need to know this so when we sort it can be updated.
-               map<int, Swap> restoreIndex; //a map of the swaps made so you can undo them in restore.
-               map<int, Names>::iterator it;
-               map<int, Swap>::reverse_iterator it2;
-                       
-               vector< vector<float> > matrix;  //a 2D distance matrix of all the sequences and their distances to eachother.
-               vector<float> minsForRows;  //vector< minimum distance for that subrow> - one for each comparison.
-               vector<int> bounds;  //bounds[1] = starting row in matrix from group B, bounds[2] = starting row in matrix from group C, bounds[3] = no need to find upper bound of C because its numSeqs.
-                                                               
-               GroupMap* groupmap;  //maps sequences to groups they belong to.
-               GlobalData* globaldata;
-               int numSeqs, numGroups, numUserGroups;
-               bool square;
-
+       int getNumSeqs();
+       vector<int> getSizes();
+       vector<string> getGroups();
+       void setGroups(vector<string> names) { groups = names;  }
+       void setSizes(vector<int> s)             { sizes = s;           }
+       int getNumGroups();
+       void printMatrix(ostream&);
+       float get(int, int);
+       Names getRowInfo(int row)  {  return index[row];  }
+       
+private:
+       vector< vector<float> > matrix;  //a 2D distance matrix of all the sequences and their distances to eachother.
+       int readSquareMatrix(ifstream&);  
+       int readLTMatrix(ifstream&);
+       vector<Names> index; // row in vector, sequence group.  need to know this so when we sort it can be updated.
+       vector<int> sizes;
+       vector<string> groups;
+       
+       void sortGroups(int, int);  //this function sorts the sequences within the matrix.
+       void swapRows(int, int);
+       
+       GroupMap* groupmap;  //maps sequences to groups they belong to.
+       int numSeqs;
+       int numGroups;
+       int numUserGroups;
+       bool sim;
+       MothurOut* m;
 };
 
-#endif
\ No newline at end of file
+#endif