]> git.donarmstrong.com Git - mothur.git/blobdiff - maligner.cpp
added checks for ^C to quit command instead of program
[mothur.git] / maligner.cpp
index 76689e9f11bf1ab3547ef9a33053830a7b436d14..f06884fcad747a84e8c3d8ae673a5eabf839f2ec 100644 (file)
@@ -34,6 +34,8 @@ string Maligner::getResults(Sequence* q, DeCalculator* decalc) {
                        refSeqs = getKmerSeqs(query, numWanted); //fills indexes
                }else { m->mothurOut("not valid search."); exit(1);  } //should never get here
                
+               if (m->control_pressed) { return chimera;  }
+               
                refSeqs = minCoverageFilter(refSeqs);
 
                if (refSeqs.size() < 2)  { 
@@ -46,7 +48,8 @@ string Maligner::getResults(Sequence* q, DeCalculator* decalc) {
 
                //fills outputResults
                chimera = chimeraMaligner(chimeraPenalty, decalc);
-       
+               
+               if (m->control_pressed) { return chimera;  }
                                
                //free memory
                delete query;
@@ -77,10 +80,14 @@ string Maligner::chimeraMaligner(int chimeraPenalty, DeCalculator* decalc) {
 
                vector< vector<score_struct> > matrix = buildScoreMatrix(query->getAligned().length(), refSeqs.size()); //builds and initializes
                
+               if (m->control_pressed) { return chimera;  }
+               
                fillScoreMatrix(matrix, refSeqs, chimeraPenalty);
        
                vector<score_struct> path = extractHighestPath(matrix);
                
+               if (m->control_pressed) { return chimera;  }
+               
                vector<trace_struct> trace = mapTraceRegionsToAlignment(path, refSeqs);
        
                if (trace.size() > 1) {         chimera = "yes";        }
@@ -95,6 +102,8 @@ string Maligner::chimeraMaligner(int chimeraPenalty, DeCalculator* decalc) {
        
                percentIdenticalQueryChimera = computePercentID(queryInRange, chimeraSeq);
                
+               if (m->control_pressed) { return chimera;  }
+               
                //save output results
                for (int i = 0; i < trace.size(); i++) {
                        int regionStart = trace[i].col;