//**********************************************************************************************************************
HClusterCommand::HClusterCommand(){
try {
- //initialize outputTypes
+ abort = true; calledHelp = true;
vector<string> tempOutNames;
outputTypes["list"] = tempOutNames;
outputTypes["rabund"] = tempOutNames;
HClusterCommand::HClusterCommand(string option) {
try{
globaldata = GlobalData::getInstance();
- abort = false;
+ abort = false; calledHelp = false;
//allow user to run help
- if(option == "help") { help(); abort = true; }
+ if(option == "help") { help(); abort = true; calledHelp = true; }
else {
//valid paramters for this command
method = validParameter.validFile(parameters, "method", false);
if (method == "not found") { method = "furthest"; }
- if ((method == "furthest") || (method == "nearest") || (method == "average")) { }
- else { m->mothurOut("Not a valid clustering method. Valid clustering algorithms are furthest, nearest or average."); m->mothurOutEndLine(); abort = true; }
+ if ((method == "furthest") || (method == "nearest") || (method == "average") || (method == "weighted")) { }
+ else { m->mothurOut("Not a valid clustering method. Valid clustering algorithms are furthest, nearest, average or weighted."); m->mothurOutEndLine(); abort = true; }
showabund = validParameter.validFile(parameters, "showabund", false);
if (showabund == "not found") { showabund = "T"; }
if (method == "furthest") { tag = "fn"; }
else if (method == "nearest") { tag = "nn"; }
+ else if (method == "weighted") { tag = "wn"; }
else { tag = "an"; }
m->openOutputFile(fileroot+ tag + ".sabund", sabundFile);
m->mothurOut("The name parameter allows you to enter your name file and is required if your distance file is in column format. \n");
m->mothurOut("The hcluster command should be in the following format: \n");
m->mothurOut("hcluster(column=youDistanceFile, name=yourNameFile, method=yourMethod, cutoff=yourCutoff, precision=yourPrecision) \n");
- m->mothurOut("The acceptable hcluster methods are furthest, nearest and average.\n\n");
+ m->mothurOut("The acceptable hcluster methods are furthest, nearest, weighted and average.\n\n");
}
catch(exception& e) {
m->errorOut(e, "HClusterCommand", "help");
int HClusterCommand::execute(){
try {
- if (abort == true) { return 0; }
+ if (abort == true) { if (calledHelp) { return 0; } return 2; }
if(namefile != ""){
globaldata->nameMap = new NameAssignment(namefile);
for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } outputTypes.clear();
return 0;
}
-
+
+ //set list file as new current listfile
+ string current = "";
+ itTypes = outputTypes.find("list");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setListFile(current); }
+ }
+
+ //set rabund file as new current rabundfile
+ itTypes = outputTypes.find("rabund");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setRabundFile(current); }
+ }
+
+ //set sabund file as new current sabundfile
+ itTypes = outputTypes.find("sabund");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setSabundFile(current); }
+ }
+
m->mothurOutEndLine();
m->mothurOut("Output File Names: "); m->mothurOutEndLine();