]> git.donarmstrong.com Git - mothur.git/blobdiff - distancecommand.cpp
added checks for ^C to quit command instead of program
[mothur.git] / distancecommand.cpp
index 13f56eb90a422d43e821a9fa378f582691468cb8..f05cb768e0c433daf1a976827b9371333e37acb7 100644 (file)
@@ -208,9 +208,12 @@ int DistanceCommand::execute(){
                ifstream inFASTA;
                driver(0, numSeqs, outputFile, cutoff);
 #endif
+               if (m->control_pressed) { delete distCalculator; remove(outputFile.c_str()); return 0; }
                
                if (output == "square") {  convertMatrix(outputFile); }
                
+               if (m->control_pressed) { delete distCalculator; remove(outputFile.c_str()); return 0; }
+               
                delete distCalculator;
                
                m->mothurOutEndLine();
@@ -282,6 +285,9 @@ int DistanceCommand::driver(int startLine, int endLine, string dFileName, float
                                outFile << name << '\t';        
                        }
                        for(int j=0;j<i;j++){
+                               
+                               if (m->control_pressed) { outFile.close(); return 0;  }
+                               
                                distCalculator->calcDist(alignDB.get(i), alignDB.get(j));
                                double dist = distCalculator->getDist();
                                
@@ -316,7 +322,7 @@ int DistanceCommand::driver(int startLine, int endLine, string dFileName, float
        }
 }
 /**************************************************************************************************/
-void DistanceCommand::convertMatrix(string outputFile) {
+int DistanceCommand::convertMatrix(string outputFile) {
        try{
 
                //sort file by first column so the distances for each row are together
@@ -358,6 +364,8 @@ void DistanceCommand::convertMatrix(string outputFile) {
                //openInputFile(outfile, in);
                
                while(!in.eof()) {
+                       if (m->control_pressed) { in.close(); remove(outfile.c_str()); out.close(); return 0; }
+                       
                        in >> first >> second >> dist; gobble(in);
                                
                        if (first != currentRow) {
@@ -393,6 +401,8 @@ void DistanceCommand::convertMatrix(string outputFile) {
                
                remove(outfile.c_str());
                
+               return 1;
+               
        }
        catch(exception& e) {
                m->errorOut(e, "DistanceCommand", "convertMatrix");