]> git.donarmstrong.com Git - mothur.git/blobdiff - chimera.cpp
modified mpi code to save ram by writing out every 10 seqs.
[mothur.git] / chimera.cpp
index e7253ec27d25c47157527c0f386ffb84fba4d55d..7eeca96316511531532232d56519e1900cd7a9c6 100644 (file)
@@ -28,6 +28,8 @@ string Chimera::createFilter(vector<Sequence*> seqs, float t) {
                //for each sequence
                for (int i = 0; i < seqs.size(); i++) {
                
+                       if (m->control_pressed) { return filterString; }
+               
                        string seqAligned = seqs[i]->getAligned();
                
                        for (int j = 0; j < seqAligned.length(); j++) {
@@ -44,17 +46,20 @@ string Chimera::createFilter(vector<Sequence*> seqs, float t) {
                //zero out spot where all sequences have blanks
                int numColRemoved = 0;
                for(int i = 0;i < seqs[0]->getAligned().length(); i++){
+               
+                       if (m->control_pressed) { return filterString; }
+                       
                        if(gaps[i] == seqs.size())      {       filterString[i] = '0';  numColRemoved++;  }
                        
                        else if (((a[i] < threshold) && (t[i] < threshold) && (g[i] < threshold) && (c[i] < threshold))) {      filterString[i] = '0';  numColRemoved++;  }
                        //cout << "a = " << a[i] <<  " t = " << t[i] <<  " g = " << g[i] <<  " c = " << c[i] << endl;
                }
 
-               mothurOut("Filter removed " + toString(numColRemoved) + " columns.");  mothurOutEndLine();
+               m->mothurOut("Filter removed " + toString(numColRemoved) + " columns.");  m->mothurOutEndLine();
                return filterString;
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "createFilter");
+               m->errorOut(e, "Chimera", "createFilter");
                exit(1);
        }
 }
@@ -80,7 +85,7 @@ map<int, int> Chimera::runFilter(Sequence* seq) {
                return maskMap;
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "runFilter");
+               m->errorOut(e, "Chimera", "runFilter");
                exit(1);
        }
 }
@@ -88,9 +93,10 @@ map<int, int> Chimera::runFilter(Sequence* seq) {
 vector<Sequence*> Chimera::readSeqs(string file) {
        try {
        
-               mothurOut("Reading sequences... "); cout.flush();
+               m->mothurOut("Reading sequences... "); cout.flush();
                ifstream in;
                openInputFile(file, in);
+               
                vector<Sequence*> container;
                int count = 0;
                length = 0;
@@ -99,6 +105,8 @@ vector<Sequence*> Chimera::readSeqs(string file) {
                //read in seqs and store in vector
                while(!in.eof()){
                        
+                       if (m->control_pressed) { return container; }
+                       
                        Sequence* current = new Sequence(in);  gobble(in);
                        
                        if (count == 0) {  length = current->getAligned().length();  count++;  } //gets first seqs length
@@ -110,12 +118,12 @@ vector<Sequence*> Chimera::readSeqs(string file) {
                }
                
                in.close();
-               mothurOut("Done."); mothurOutEndLine();
+               m->mothurOut("Done."); m->mothurOutEndLine();
                
                return container;
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "readSeqs");
+               m->errorOut(e, "Chimera", "readSeqs");
                exit(1);
        }
 }
@@ -143,7 +151,7 @@ void Chimera::setMask(string filename) {
                }
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "setMask");
+               m->errorOut(e, "Chimera", "setMask");
                exit(1);
        }
 }
@@ -186,7 +194,7 @@ vector< vector<float> > Chimera::readQuantiles() {
                
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "readQuantiles");
+               m->errorOut(e, "Chimera", "readQuantiles");
                exit(1);
        }
 }
@@ -204,14 +212,14 @@ Sequence* Chimera::getSequence(string name) {
                        }
                }
                
-               if(spot == -1) { mothurOut("Error: Could not find sequence."); mothurOutEndLine(); return NULL; }
+               if(spot == -1) { m->mothurOut("Error: Could not find sequence."); m->mothurOutEndLine(); return NULL; }
                
                temp = new Sequence(templateSeqs[spot]->getName(), templateSeqs[spot]->getAligned());
                
                return temp;
        }
        catch(exception& e) {
-               errorOut(e, "Chimera", "getSequence");
+               m->errorOut(e, "Chimera", "getSequence");
                exit(1);
        }
 }