X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=fullmatrix.h;h=078cdb7699f53192b526ab3979036d5144b968e1;hb=29351fe29c017d2225366418973ed0e000ce5293;hp=0ab1d7175dce3b9bdef4758b83dffc26ace8079b;hpb=3659285c05daa94306a7b61dd97ec945b23d472b;p=mothur.git diff --git a/fullmatrix.h b/fullmatrix.h index 0ab1d71..078cdb7 100644 --- a/fullmatrix.h +++ b/fullmatrix.h @@ -17,10 +17,15 @@ using namespace std; struct Names { - string groupname; + string groupname; string seqName; }; +struct Swap { + int a; + int b; +}; + class FullMatrix { @@ -31,16 +36,31 @@ class FullMatrix { int getNumSeqs(); void printMatrix(ostream&); + void setBounds(); //requires globaldata->Groups to be filled + vector getMins(int); //returns vector of mins for "box" requested ie. groups A, B, 0 = AA, 1 = AB, 2 = BA, 3 = BB; + void getDist(vector&); //fills a vector with the valid distances for the integral form. + void shuffle(string, string); //shuffles the sequences in the groups passed in. + void restore(); //unshuffles the matrix. 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 > matrix; //a 2D distance matrix of all the sequences and their distances to eachother. + void printMinsForRows(ostream&); + map index; // row in vector, sequence group. need to know this so when we sort it can be updated. + map restoreIndex; //a map of the swaps made so you can undo them in restore. + map::iterator it; + map::reverse_iterator it2; + + vector< vector > matrix; //a 2D distance matrix of all the sequences and their distances to eachother. + vector minsForRows; //vector< minimum distance for that subrow> - one for each comparison. + vector 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; + int numSeqs, numGroups, numUserGroups; bool square; };