else {
//valid paramters for this command
- string Array[] = {"cutoff","precision","method","phylip","column","name","sorted","showabund","timing","outputdir","inputdir"};
+ string Array[] = {"cutoff","hard","precision","method","phylip","column","name","sorted","showabund","timing","outputdir","inputdir"};
vector<string> myArray (Array, Array+(sizeof(Array)/sizeof(string)));
OptionParser parser(option);
length = temp.length();
convert(temp, precision);
+ temp = validParameter.validFile(parameters, "hard", false); if (temp == "not found") { temp = "F"; }
+ hard = isTrue(temp);
+
temp = validParameter.validFile(parameters, "cutoff", false);
if (temp == "not found") { temp = "10"; }
convert(temp, cutoff);
- cutoff += (5 / (precision * 10.0));
+ if (!hard) { cutoff += (5 / (precision * 10.0)); }
method = validParameter.validFile(parameters, "method", false);
if (method == "not found") { method = "furthest"; }
time_t estart = time(NULL);
if (!sorted) {
- read = new ReadCluster(distfile, cutoff);
+ read = new ReadCluster(distfile, cutoff, outputDir, true);
read->setFormat(format);
read->read(globaldata->nameMap);
+
+ if (m->control_pressed) {
+ delete read;
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
distfile = read->getOutputFile();
list = read->getListVector();
}else {
list = new ListVector(globaldata->nameMap->getListVector());
}
-
+
+ if (m->control_pressed) {
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
m->mothurOut("It took " + toString(time(NULL) - estart) + " seconds to sort. "); m->mothurOutEndLine();
estart = time(NULL);
cluster = new HCluster(rabund, list, method, distfile, globaldata->nameMap, cutoff);
vector<seqDist> seqs; seqs.resize(1); // to start loop
+ if (m->control_pressed) {
+ delete cluster;
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
+
while (seqs.size() != 0){
seqs = cluster->getSeqs();
-
- for (int i = 0; i < seqs.size(); i++) { //-1 means skip me
+
+ if (m->control_pressed) {
+ delete cluster;
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+ for (int i = 0; i < seqs.size(); i++) { //-1 means skip me
+
if (seqs[i].seq1 != seqs[i].seq2) {
cluster->update(seqs[i].seq1, seqs[i].seq2, seqs[i].dist);
+ if (m->control_pressed) {
+ delete cluster;
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
+
float rndDist = roundDist(seqs[i].dist, precision);
if((previousDist <= 0.0000) && (seqs[i].dist != previousDist)){
}
}
+ if (m->control_pressed) {
+ delete cluster;
+ sabundFile.close();
+ rabundFile.close();
+ listFile.close();
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
if(previousDist <= 0.0000){
printData("unique");
}
listFile.close();
delete cluster;
+ if (m->control_pressed) {
+ for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
+ return 0;
+ }
+
+
m->mothurOutEndLine();
m->mothurOut("Output File Names: "); m->mothurOutEndLine();
for (int i = 0; i < outputNames.size(); i++) { m->mothurOut(outputNames[i]); m->mothurOutEndLine(); }