]> git.donarmstrong.com Git - mothur.git/blobdiff - chimera.cpp
started adding chimeraslayer method and fixed minor bug in treegroupscommand deconstr...
[mothur.git] / chimera.cpp
index 8aaab4b12a4c5c261f8a7a4494ca7ef4f12ea923..8851b755a09a0b030418e7881d09caedb4753584 100644 (file)
@@ -10,7 +10,7 @@
 #include "chimera.h"
 
 //***************************************************************************************************************
-//this is a vertical filter
+//this is a vertical soft filter
 void Chimera::createFilter(vector<Sequence*> seqs) {
        try {
                
@@ -41,13 +41,18 @@ void Chimera::createFilter(vector<Sequence*> seqs) {
                }
                
                //zero out spot where all sequences have blanks
+               //zero out spot where all sequences have blanks
+               int numColRemoved = 0;
                for(int i = 0;i < seqs[0]->getAligned().length(); i++){
-                       if(gaps[i] == seqs.size())      {       filterString[i] = '0';  }
+                       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';  }
+                       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;
                }
+       
 //cout << "filter = " << filterString << endl; 
+
+               mothurOut("Filter removed " + toString(numColRemoved) + " columns.");  mothurOutEndLine();
        }
        catch(exception& e) {
                errorOut(e, "Chimera", "createFilter");
@@ -139,6 +144,10 @@ vector< vector<float> > Chimera::readQuantiles() {
                openInputFile(quanfile, in);
                
                vector< vector<float> > quan;
+               vector <float> temp; temp.resize(6, 0);
+               
+               //to fill 0
+               quan.push_back(temp); 
        
                int num; float ten, twentyfive, fifty, seventyfive, ninetyfive, ninetynine; 
                
@@ -146,7 +155,7 @@ vector< vector<float> > Chimera::readQuantiles() {
                        
                        in >> num >> ten >> twentyfive >> fifty >> seventyfive >> ninetyfive >> ninetynine; 
                        
-                       vector <float> temp;
+                       temp.clear();
                        
                        temp.push_back(ten); 
                        temp.push_back(twentyfive);