]> git.donarmstrong.com Git - mothur.git/blobdiff - fullmatrix.h
working on libshuff
[mothur.git] / fullmatrix.h
index 43bde963ca3396241a26771771189cb27c2df617..b744490d760d108df3ef7780cb35bcae918b9dd2 100644 (file)
@@ -21,6 +21,11 @@ struct Names {
        string          seqName;
 };
 
+struct Swap {
+       int             a;
+       int             b;
+};
+
 
 class FullMatrix {
        
@@ -31,17 +36,29 @@ class FullMatrix {
        
                int getNumSeqs();
                void printMatrix(ostream&);
-               void getMinsForRowsVectors();  //requires globaldata->Groups to be filled
-       
+               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&);
-               vector< vector<float> > matrix;  //a 2D distance matrix of all the sequences and their distances to eachother.
-               vector< vector<float> > minsForRows;  //vector< minimum distance for that subrow> -one for each comparison.
+               
                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;