#include "progress.hpp"
/***********************************************************************/
-ClusterClassic::ClusterClassic(float c, string f) : method(f), smallDist(1e6), nseqs(0) {
+ClusterClassic::ClusterClassic(float c, string f, bool s) : method(f), smallDist(1e6), nseqs(0), sim(s) {
try {
mapWanted = false; //set to true by mgcluster to speed up overlap merge
cutoff = c;
aboveCutoff = cutoff + 10000.0;
m = MothurOut::getInstance();
- globaldata = GlobalData::getInstance();
+ if(method == "furthest") { tag = "fn"; }
+ else if (method == "average") { tag = "an"; }
+ else if (method == "weighted") { tag = "wn"; }
+ else if (method == "nearest") { tag = "nn"; }
}
catch(exception& e) {
m->errorOut(e, "ClusterClassic", "ClusterClassic");
ifstream fileHandle;
m->openInputFile(filename, fileHandle);
- fileHandle >> nseqs >> name;
+ string numTest;
+ fileHandle >> numTest >> name;
+
+ if (!m->isContainingOnlyDigits(numTest)) { m->mothurOut("[ERROR]: expected a number and got " + numTest + ", quitting."); m->mothurOutEndLine(); exit(1); }
+ else { convert(numTest, nseqs); }
+
matrixNames.push_back(name);
fileHandle >> distance;
if (distance == -1) { distance = 1000000; }
- else if (globaldata->sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
+ else if (sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
//if(distance < cutoff){
dMatrix[i][j] = distance;
if (m->control_pressed) { delete reading; fileHandle.close(); return 0; }
if (distance == -1) { distance = 1000000; }
- else if (globaldata->sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
+ else if (sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
//if(distance < cutoff){
if (distance < smallDist) { smallDist = distance; }
if (m->control_pressed) { fileHandle.close(); delete reading; return 0; }
if (distance == -1) { distance = 1000000; }
- else if (globaldata->sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
+ else if (sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
if(j < i){
if (distance < smallDist) { smallDist = distance; }
if (m->control_pressed) { fileHandle.close(); delete reading; return 0; }
if (distance == -1) { distance = 1000000; }
- else if (globaldata->sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
+ else if (sim) { distance = 1.0 - distance; } //user has entered a sim matrix that we need to convert.
if(j < i){
if (distance < smallDist) { smallDist = distance; }
try {
//update location of seqs in smallRow since they move to smallCol now
for (int i = 0; i < dMatrix.size(); i++) {
- cout << "row = " << i << '\t';
+ m->mothurOut("row = " + toString(i) + "\t");
for (int j = 0; j < dMatrix[i].size(); j++) {
- cout << dMatrix[i][j] << '\t';
+ m->mothurOut(toString(dMatrix[i][j]) + "\t");
}
- cout << endl;
+ m->mothurOutEndLine();
}
}
catch(exception& e) {