X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=formatphylip.cpp;fp=formatphylip.cpp;h=206df7edfbd915f00947c46d6de07f44fc021c38;hb=aa9238c0a9e6e7aa0ed8b8b606b08ad4fd7dcfe3;hp=aaf540aed0d800d111e1a8a7703520640a28d240;hpb=182db2b6f1747bc1e0b8cd3eceec8751abdd31d5;p=mothur.git diff --git a/formatphylip.cpp b/formatphylip.cpp index aaf540a..206df7e 100644 --- a/formatphylip.cpp +++ b/formatphylip.cpp @@ -16,7 +16,7 @@ FormatPhylipMatrix::FormatPhylipMatrix(string df) : filename(df) { } /***********************************************************************/ //not using nameMap -void FormatPhylipMatrix::read(NameAssignment* nameMap){ +int FormatPhylipMatrix::read(NameAssignment* nameMap){ try { float distance; @@ -63,11 +63,15 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ //convert to square column matrix for(int i=1;i> name; list->set(i, name); for(int j=0;jcontrol_pressed) { outTemp.close(); remove(tempFile.c_str()); fileHandle.close(); delete reading; return 0; } + fileHandle >> distance; if (distance == -1) { distance = 1000000; } @@ -95,6 +99,7 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ system(command.c_str()); #endif + if (m->control_pressed) { remove(tempFile.c_str()); remove(outfile.c_str()); delete reading; return 0; } //output to new file distance for each row and save positions in file where new row begins ifstream in; @@ -118,6 +123,8 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ for(int k = 0; k < firstString.length(); k++) { in.putback(firstString[k]); } while(!in.eof()) { + if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); remove(distFile.c_str()); remove(outfile.c_str()); delete reading; return 0; } + in >> first >> second >> dist; gobble(in); if (first != currentRow) { @@ -160,6 +167,9 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ remove(tempFile.c_str()); remove(outfile.c_str()); + + if (m->control_pressed) { remove(distFile.c_str()); delete reading; return 0; } + } else{ //square matrix convert directly to formatted row file int index = nseqs; @@ -173,6 +183,8 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ list->set(i, name); for(int j=0;jcontrol_pressed) { fileHandle.close(); out.close(); remove(distFile.c_str()); delete reading; return 0; } + fileHandle >> distance; if (distance == -1) { distance = 1000000; } @@ -202,11 +214,16 @@ void FormatPhylipMatrix::read(NameAssignment* nameMap){ } reading->finish(); delete reading; - - list->setLabel("0"); fileHandle.close(); out.close(); + if (m->control_pressed) { remove(distFile.c_str()); return 0; } + + list->setLabel("0"); + + return 1; + + } catch(exception& e) { m->errorOut(e, "FormatPhylipMatrix", "read");