X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=hcluster.cpp;fp=hcluster.cpp;h=88cba6ecce59b98c874a119c84c494aa1e152156;hb=26b30b0881a37665b18746d2851607c494e8ccc0;hp=597aac889f9842fa87508dcde5cc319c5ff1b0f6;hpb=b8afdb9d29fa919d43c7eb0b387fbfbeb9227385;p=mothur.git diff --git a/hcluster.cpp b/hcluster.cpp index 597aac8..88cba6e 100644 --- a/hcluster.cpp +++ b/hcluster.cpp @@ -26,7 +26,7 @@ HCluster::HCluster(RAbundVector* rav, ListVector* lv, string ms, string d, NameA clusterArray.push_back(temp); } - if (method != "average") { + if ((method == "furthest") || (method == "nearest")) { m->openInputFile(distfile, filehandle); }else{ processFile(); @@ -273,7 +273,7 @@ bool HCluster::update(int row, int col, float distance){ //you don't want to cluster with yourself if (smallRow != smallCol) { - if (method != "average") { + if ((method == "furthest") || (method == "nearest")) { //can we cluster??? if (method == "nearest") { cluster = true; } else{ //assume furthest @@ -358,7 +358,7 @@ vector HCluster::getSeqs(){ try { vector sameSeqs; - if(method != "average") { + if ((method == "furthest") || (method == "nearest")) { sameSeqs = getSeqsFNNN(); }else{ sameSeqs = getSeqsAN(); @@ -638,9 +638,14 @@ int HCluster::combineFile() { float average; if (it2Merge != smallRowColValues[1].end()) { //if yes, then average - //weighted average - int total = clusterArray[smallRow].numSeq + clusterArray[smallCol].numSeq; - average = ((clusterArray[smallRow].numSeq * itMerge->second) + (clusterArray[smallCol].numSeq * it2Merge->second)) / (float) total; + //average + if (method == "average") { + int total = clusterArray[smallRow].numSeq + clusterArray[smallCol].numSeq; + average = ((clusterArray[smallRow].numSeq * itMerge->second) + (clusterArray[smallCol].numSeq * it2Merge->second)) / (float) total; + }else { //weighted + average = ((itMerge->second * 1.0) + (it2Merge->second * 1.0)) / (float) 2.0; + } + smallRowColValues[1].erase(it2Merge); seqDist temp(clusterArray[smallRow].parent, itMerge->first, average);