/***********************************************************************/
-ReadCluster::ReadCluster(string distfile, float c){
+ReadCluster::ReadCluster(string distfile, float c, string o){
globaldata = GlobalData::getInstance();
m = MothurOut::getInstance();
distFile = distfile;
cutoff = c;
+ outputDir = o;
}
/***********************************************************************/
-void ReadCluster::read(NameAssignment* nameMap){
+int ReadCluster::read(NameAssignment* nameMap){
try {
if (format == "phylip") { convertPhylip2Column(nameMap); }
else { list = new ListVector(nameMap->getListVector()); }
- OutPutFile = sortFile(distFile);
+ if (m->control_pressed) { return 0; }
+
+ OutPutFile = sortFile(distFile, outputDir);
+
+ return 0;
}
catch(exception& e) {
}
/***********************************************************************/
-void ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
+int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
try {
//convert phylip file to column file
map<int, string> rowToName;
list->set(i, name);
for(int j=0;j<i;j++){
+
+ if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+
in >> distance;
if (distance == -1) { distance = 1000000; }
if(nameMap->count(name)==0){ m->mothurOut("Error: Sequence '" + name + "' was not found in the names file, please correct"); m->mothurOutEndLine(); }
for(int j=0;j<i;j++){
+
+ if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+
in >> distance;
if (distance == -1) { distance = 1000000; }
if(nameMap == NULL){
list->set(i, name);
for(int j=0;j<nseqs;j++){
+ if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+
in >> distance;
if (distance == -1) { distance = 1000000; }
if(nameMap->count(name)==0){ m->mothurOut("Error: Sequence '" + name + "' was not found in the names file, please correct"); m->mothurOutEndLine(); }
for(int j=0;j<nseqs;j++){
+ if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+
in >> distance;
if (distance == -1) { distance = 1000000; }
float dist;
while (in2) {
+ if (m->control_pressed) { in2.close(); out2.close(); remove(tempFile.c_str()); remove(outputFile.c_str()); return 0; }
+
in2 >> first >> second >> dist;
out2 << rowToName[first] << '\t' << rowToName[second] << '\t' << dist << endl;
gobble(in2);
remove(tempFile.c_str());
distFile = outputFile;
+
+ if (m->control_pressed) { remove(outputFile.c_str()); }
+
+ return 0;
}
catch(exception& e) {
m->errorOut(e, "ReadCluster", "convertPhylip2Column");