X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cluster.hpp;h=d7c2737a05ed1a0198be9713aa4345f288ec3976;hb=f06b339c5fc4b6d1b9d2a08fe16bf7670bf7aeb4;hp=685c843c0199b73083f7eb3a17693b33fe1a4d36;hpb=9c23307c583d4e8595f75278c13e708788f2f058;p=mothur.git diff --git a/cluster.hpp b/cluster.hpp index 685c843..d7c2737 100644 --- a/cluster.hpp +++ b/cluster.hpp @@ -4,6 +4,7 @@ #include "mothur.h" #include "sparsematrix.hpp" +#include "mothurout.h" class RAbundVector; class ListVector; @@ -13,7 +14,7 @@ typedef vector MatVec; class Cluster { public: - Cluster(RAbundVector*, ListVector*, SparseMatrix*, float); + Cluster(RAbundVector*, ListVector*, SparseMatrix*, float, string); virtual void update(double&); virtual string getTag() = 0; virtual void setMapWanted(bool m); @@ -39,19 +40,21 @@ protected: bool mapWanted; float cutoff; map seq2Bin; + string method; vector 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*, float); + CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); bool updateDistance(MatData& colCell, MatData& rowCell); string getTag(); @@ -63,8 +66,8 @@ private: class SingleLinkage : public Cluster { public: - SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*, float); - void update(); + SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); + void update(double&); bool updateDistance(MatData& colCell, MatData& rowCell); string getTag(); @@ -76,7 +79,7 @@ private: class AverageLinkage : public Cluster { public: - AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*, float); + AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); bool updateDistance(MatData& colCell, MatData& rowCell); string getTag(); @@ -91,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