6 #include "sparsematrix.hpp"
11 typedef vector<MatData> MatVec;
16 Cluster(RAbundVector*, ListVector*, SparseMatrix*, float);
17 virtual void update();
18 virtual string getTag() = 0;
19 virtual void setMapWanted(bool m);
20 virtual map<string, int> getSeqtoBin() { return seq2Bin; }
23 void getRowColCells();
24 void removeCell(const MatData& cell, int vrow, int vcol, bool rmMatrix=true);
26 virtual bool updateDistance(MatData& colCell, MatData& rowCell) = 0;
28 virtual void clusterBins();
29 virtual void clusterNames();
30 virtual void updateMap();
34 SparseMatrix* dMatrix;
41 map<string, int> seq2Bin;
43 vector<MatVec> seqVec; // contains vectors of cells related to a certain sequence
50 /***********************************************************************/
52 class CompleteLinkage : public Cluster {
54 CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*, float);
55 bool updateDistance(MatData& colCell, MatData& rowCell);
62 /***********************************************************************/
64 class SingleLinkage : public Cluster {
66 SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*, float);
68 bool updateDistance(MatData& colCell, MatData& rowCell);
75 /***********************************************************************/
77 class AverageLinkage : public Cluster {
79 AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*, float);
80 bool updateDistance(MatData& colCell, MatData& rowCell);
92 /***********************************************************************/