X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=cluster.hpp;h=23a3d97f26db6087adcf1dee3c015e581e06321c;hp=d7c2737a05ed1a0198be9713aa4345f288ec3976;hb=615301e57c25e241356a9c2380648d117709458d;hpb=0caf3fbabaa3ece404f8ce77f4c883dc5b1bf1dc diff --git a/cluster.hpp b/cluster.hpp index d7c2737..23a3d97 100644 --- a/cluster.hpp +++ b/cluster.hpp @@ -1,50 +1,44 @@ #ifndef CLUSTER_H #define CLUSTER_H +//test change #include "mothur.h" -#include "sparsematrix.hpp" +#include "sparsedistancematrix.h" #include "mothurout.h" class RAbundVector; class ListVector; -typedef vector MatVec; - class Cluster { public: - Cluster(RAbundVector*, ListVector*, SparseMatrix*, float, string); + Cluster(RAbundVector*, ListVector*, SparseDistanceMatrix*, float, string, float); + virtual ~Cluster() {} virtual void update(double&); virtual string getTag() = 0; virtual void setMapWanted(bool m); virtual map getSeqtoBin() { return seq2Bin; } - -protected: - void getRowColCells(); - void removeCell(const MatData& cell, int vrow, int vcol, bool rmMatrix=true); - - virtual bool updateDistance(MatData& colCell, MatData& rowCell) = 0; - + +protected: + virtual bool updateDistance(PDistCell& colCell, PDistCell& rowCell) = 0; + virtual void clusterBins(); virtual void clusterNames(); virtual void updateMap(); RAbundVector* rabund; ListVector* list; - SparseMatrix* dMatrix; + SparseDistanceMatrix* dMatrix; - int smallRow; - int smallCol; - float smallDist; + ull smallRow; + ull smallCol; + float smallDist, adjust; 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; @@ -54,33 +48,33 @@ protected: class CompleteLinkage : public Cluster { public: - CompleteLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); - bool updateDistance(MatData& colCell, MatData& rowCell); + CompleteLinkage(RAbundVector*, ListVector*, SparseDistanceMatrix*, float, string, float); + bool updateDistance(PDistCell& colCell, PDistCell& rowCell); string getTag(); private: - + }; /***********************************************************************/ class SingleLinkage : public Cluster { public: - SingleLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); + SingleLinkage(RAbundVector*, ListVector*, SparseDistanceMatrix*, float, string, float); void update(double&); - bool updateDistance(MatData& colCell, MatData& rowCell); + bool updateDistance(PDistCell& colCell, PDistCell& rowCell); string getTag(); private: - + }; /***********************************************************************/ class AverageLinkage : public Cluster { public: - AverageLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); - bool updateDistance(MatData& colCell, MatData& rowCell); + AverageLinkage(RAbundVector*, ListVector*, SparseDistanceMatrix*, float, string, float); + bool updateDistance(PDistCell& colCell, PDistCell& rowCell); string getTag(); private: @@ -89,15 +83,15 @@ private: int rowBin; int colBin; int totalBin; - + }; /***********************************************************************/ class WeightedLinkage : public Cluster { public: - WeightedLinkage(RAbundVector*, ListVector*, SparseMatrix*, float, string); - bool updateDistance(MatData& colCell, MatData& rowCell); + WeightedLinkage(RAbundVector*, ListVector*, SparseDistanceMatrix*, float, string, float); + bool updateDistance(PDistCell& colCell, PDistCell& rowCell); string getTag(); private: @@ -107,4 +101,6 @@ private: /***********************************************************************/ + + #endif