X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=chimera.cpp;h=4ae4991c8d78ebe7a90920972175554dd83b6d36;hb=a5afca18544555fba2d9c3670ad1f8574916b0a0;hp=75e81c076a9ce113ff26e1d62027b86b16571527;hpb=6d7408400b6bbdde4173922c5dca528f9f4e0a22;p=mothur.git diff --git a/chimera.cpp b/chimera.cpp index 75e81c0..4ae4991 100644 --- a/chimera.cpp +++ b/chimera.cpp @@ -10,7 +10,7 @@ #include "chimera.h" //*************************************************************************************************************** -//this is a vertical filter +//this is a vertical soft filter void Chimera::createFilter(vector seqs) { try { @@ -40,6 +40,7 @@ void Chimera::createFilter(vector 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 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 Chimera::readSeqs(string file) { ifstream in; openInputFile(file, in); vector 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 > Chimera::readQuantiles() { openInputFile(quanfile, in); vector< vector > quan; + vector 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 > Chimera::readQuantiles() { in >> num >> ten >> twentyfive >> fifty >> seventyfive >> ninetyfive >> ninetynine; - vector temp; + temp.clear(); temp.push_back(ten); temp.push_back(twentyfive);