6 #include "sparsematrix.hpp"
11 typedef vector<MatData> MatVec;
16 Cluster(RAbundVector*, ListVector*, SparseMatrix*);
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;
40 map<string, int> seq2Bin;
42 vector<MatVec> seqVec; // contains vectors of cells related to a certain sequence
49 /***********************************************************************/
51 class CompleteLinkage : public Cluster {
53 CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*);
54 bool updateDistance(MatData& colCell, MatData& rowCell);
61 /***********************************************************************/
63 class SingleLinkage : public Cluster {
65 SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*);
67 bool updateDistance(MatData& colCell, MatData& rowCell);
74 /***********************************************************************/
76 class AverageLinkage : public Cluster {
78 AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*);
79 bool updateDistance(MatData& colCell, MatData& rowCell);
91 /***********************************************************************/