X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=completelinkage.cpp;h=0a3c7b3e42f68347d0315299d5ed050b89ebb796;hp=f69753b34a3ecdfb74fbd9e5fe068954c1cd493f;hb=b206f634aae1b4ce13978d203247fb64757d5482;hpb=510b1cfc25cd79391d6973ca20c5ec25fb1bb3b2 diff --git a/completelinkage.cpp b/completelinkage.cpp index f69753b..0a3c7b3 100644 --- a/completelinkage.cpp +++ b/completelinkage.cpp @@ -1,64 +1,32 @@ #include "cluster.hpp" -#include "mothur.h" /***********************************************************************/ -CompleteLinkage::CompleteLinkage(RAbundVector* rav, ListVector* lv, SparseMatrix* dm) : -Cluster(rav, lv, dm) +CompleteLinkage::CompleteLinkage(RAbundVector* rav, ListVector* lv, SparseDistanceMatrix* dm, float c, string s, float a) : + Cluster(rav, lv, dm, c, s, a) {} /***********************************************************************/ -//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(PDistCell& colCell, PDistCell& rowCell) { try { - getRowColCells(); - - vector found(nColCells, 0); - - for(int i=1;irow == smallRow){ - search = rowCells[i]->column; - } - else{ - search = rowCells[i]->row; - } - - for(int j=1;jrow == 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;irmCell(colCells[i]); - } - } + return(changed); } catch(exception& e) { - errorOut(e, "CompleteLinkage", "update"); + m->errorOut(e, "CompleteLinkage", "updateDistance"); exit(1); } }