]> git.donarmstrong.com Git - mothur.git/blobdiff - cluster.hpp
Merge remote-tracking branch 'origin/master'
[mothur.git] / cluster.hpp
index a6024e79d45a52274040a53cca4f8b32d9d2e998..d7c2737a05ed1a0198be9713aa4345f288ec3976 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "mothur.h"
 #include "sparsematrix.hpp"
+#include "mothurout.h"
 
 class RAbundVector;
 class ListVector;
@@ -13,8 +14,8 @@ typedef vector<MatData> MatVec;
 class Cluster {
        
 public:
-       Cluster(RAbundVector*, ListVector*, SparseMatrix*);
-    virtual void update();                             
+       Cluster(RAbundVector*, ListVector*, SparseMatrix*, float, string);
+    virtual void update(double&);                              
        virtual string getTag() = 0;
        virtual void setMapWanted(bool m);  
        virtual map<string, int> getSeqtoBin()  {  return seq2Bin;      }
@@ -37,20 +38,23 @@ protected:
        int smallCol;
        float smallDist;
        bool mapWanted;
+       float cutoff;
        map<string, int> seq2Bin;
+       string method;
        
        vector<MatVec> seqVec;          // contains vectors of cells related to a certain sequence
        MatVec rowCells;
        MatVec colCells;
        ull nRowCells;
        ull nColCells;
+       MothurOut* m;
 };
 
 /***********************************************************************/
 
 class CompleteLinkage : public Cluster {
 public:
-       CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*);
+       CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string);
        bool updateDistance(MatData& colCell, MatData& rowCell);
        string getTag();
        
@@ -62,8 +66,8 @@ private:
 
 class SingleLinkage : public Cluster {
 public:
-       SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*);
-    void update();
+       SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string);
+    void update(double&);
        bool updateDistance(MatData& colCell, MatData& rowCell);
        string getTag();
        
@@ -75,7 +79,7 @@ private:
 
 class AverageLinkage : public Cluster {
 public:
-       AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*);
+       AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string);
        bool updateDistance(MatData& colCell, MatData& rowCell);
        string getTag();
        
@@ -90,4 +94,17 @@ private:
 
 /***********************************************************************/
 
+class WeightedLinkage : public Cluster {
+public:
+       WeightedLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string);
+       bool updateDistance(MatData& colCell, MatData& rowCell);
+       string getTag();
+       
+private:
+       int saveRow;
+       int saveCol;    
+};
+
+/***********************************************************************/
+
 #endif