#include "cluster.hpp"
-#include "mothur.h"
/***********************************************************************/
-CompleteLinkage::CompleteLinkage(RAbundVector* rav, ListVector* lv, SparseMatrix* dm) :
-Cluster(rav, lv, dm)
+CompleteLinkage::CompleteLinkage(RAbundVector* rav, ListVector* lv, SparseMatrix* dm, float c, string s) :
+ Cluster(rav, lv, dm, c, s)
{}
/***********************************************************************/
-//This function clusters based on the furthest neighbor method.
-void CompleteLinkage::update(){
+//This function returns the tag of the method.
+string CompleteLinkage::getTag() {
+ return("fn");
+}
+
+
+/***********************************************************************/
+//This function updates the distance based on the furthest neighbor method.
+bool CompleteLinkage::updateDistance(MatData& colCell, MatData& rowCell) {
try {
- getRowColCells();
-
- vector<int> found(nColCells, 0);
-
- for(int i=1;i<nRowCells;i++){
-
- int search;
-
- if(rowCells[i]->row == smallRow){
- search = rowCells[i]->column;
- }
- else{
- search = rowCells[i]->row;
- }
-
- for(int j=1;j<nColCells;j++){
-
- if(colCells[j]->row == search || colCells[j]->column == search){
-
- if(colCells[j]->dist < rowCells[i]->dist){
- colCells[j]->dist = rowCells[i]->dist;
-
- if(colCells[j]->vectorMap != NULL){
- *(colCells[j]->vectorMap) = NULL;
- colCells[j]->vectorMap = NULL;
- }
-
- }
-
- found[j] = 1;
- break;
- }
- }
- dMatrix->rmCell(rowCells[i]);
-
+ bool changed = false;
+ if (colCell->dist < rowCell->dist) {
+ colCell->dist = rowCell->dist;
+ changed = true;
}
- clusterBins();
- clusterNames();
-
- for(int i=0;i<nColCells;i++){
- if(found[i] == 0){
- dMatrix->rmCell(colCells[i]);
- }
- }
+ return(changed);
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the CompleteLinkage class Function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "CompleteLinkage", "updateDistance");
exit(1);
}
- catch(...) {
- cout << "An unknown error has occurred in the CompleteLinkage class function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-
}
/***********************************************************************/