]> git.donarmstrong.com Git - mothur.git/blobdiff - chimera.cpp
added sorted parameter to get.oturep, added error checking to chimera classes in...
[mothur.git] / chimera.cpp
index 75e81c076a9ce113ff26e1d62027b86b16571527..4ae4991c8d78ebe7a90920972175554dd83b6d36 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 {
                
@@ -40,6 +40,7 @@ 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++){
@@ -48,6 +49,7 @@ void Chimera::createFilter(vector<Sequence*> seqs) {
                        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();
@@ -88,13 +90,21 @@ vector<Sequence*> Chimera::readSeqs(string file) {
                ifstream in;
                openInputFile(file, in);
                vector<Sequence*> container;
+               int count = 0;
+               int length = 0;
+               unaligned = false;
                
                //read in seqs and store in vector
                while(!in.eof()){
                        
-                       Sequence* current = new Sequence(in);
-                       container.push_back(current);
-                       gobble(in);
+                       Sequence* current = new Sequence(in);  gobble(in);
+                       
+                       if (count == 0) {  length = current->getAligned().length();  count++;  } //gets first seqs length
+                       else if (length != current->getAligned().length()) { //seqs are unaligned
+                               unaligned = true;
+                       }
+                       
+                       if (current->getName() != "") {  container.push_back(current);  }
                }
                
                in.close();
@@ -142,6 +152,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; 
                
@@ -149,7 +163,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);