From 2f17ce987b15dca9a309116d9df5131a1d3a35ee Mon Sep 17 00:00:00 2001 From: westcott Date: Thu, 17 Jun 2010 14:08:24 +0000 Subject: [PATCH] changes for 1.11 --- decalc.cpp | 20 ++++++++++---------- decalc.h | 4 ++-- mothur.cpp | 4 ++-- pintail.cpp | 33 +++++++++++++++++---------------- pintail.h | 2 +- 5 files changed, 32 insertions(+), 31 deletions(-) diff --git a/decalc.cpp b/decalc.cpp index 4e80c65..2e214bf 100644 --- a/decalc.cpp +++ b/decalc.cpp @@ -381,9 +381,9 @@ vector DeCalculator::findQav(vector window, int size, vector } //*************************************************************************************************************** //seqs have already been masked -vector< vector > DeCalculator::getQuantiles(vector seqs, vector windowSizesTemplate, int window, vector probProfile, int increment, int start, int end) { +vector< vector > DeCalculator::getQuantiles(vector seqs, vector windowSizesTemplate, int window, vector probProfile, int increment, int start, int end) { try { - vector< vector > quan; + vector< vector > quan; //percentage of mismatched pairs 1 to 100 quan.resize(100); @@ -428,9 +428,9 @@ vector< vector > DeCalculator::getQuantiles(vector seqs, //cout << i << '\t' << j << '\t' << dist << '\t' << de << endl; dist = ceil(dist); - quanMember newScore(de, i, j); + //quanMember newScore(de, i, j); - quan[dist].push_back(newScore); + quan[dist].push_back(de); delete subject; } @@ -454,23 +454,23 @@ inline bool compareQuanMembers(quanMember left, quanMember right){ } //*************************************************************************************************************** //this was going to be used by pintail to increase the sensitivity of the chimera detection, but it wasn't quite right. may want to revisit in the future... -void DeCalculator::removeObviousOutliers(vector< vector >& quantiles, int num) { +void DeCalculator::removeObviousOutliers(vector< vector >& quantiles, int num) { try { for (int i = 0; i < quantiles.size(); i++) { //find mean of this quantile score - sort(quantiles[i].begin(), quantiles[i].end(), compareQuanMembers); + sort(quantiles[i].begin(), quantiles[i].end()); - vector temp; + vector temp; if (quantiles[i].size() != 0) { - float high = quantiles[i][int(quantiles[i].size() * 0.99)].score; - float low = quantiles[i][int(quantiles[i].size() * 0.01)].score; + float high = quantiles[i][int(quantiles[i].size() * 0.99)]; + float low = quantiles[i][int(quantiles[i].size() * 0.01)]; //look at each value in quantiles to see if it is an outlier for (int j = 0; j < quantiles[i].size(); j++) { //is this score between 1 and 99% - if ((quantiles[i][j].score > low) && (quantiles[i][j].score < high)) { + if ((quantiles[i][j] > low) && (quantiles[i][j] < high)) { temp.push_back(quantiles[i][j]); } } diff --git a/decalc.h b/decalc.h index da663e8..2d0d529 100644 --- a/decalc.h +++ b/decalc.h @@ -47,7 +47,7 @@ class DeCalculator { void runMask(Sequence*); void trimSeqs(Sequence*, Sequence*, map&); map trimSeqs(Sequence*, vector); - void removeObviousOutliers(vector< vector >&, int); + void removeObviousOutliers(vector< vector >&, int); vector calcFreq(vector, string); vector findWindows(Sequence*, int, int, int&, int); vector calcObserved(Sequence*, Sequence*, vector, int); @@ -56,7 +56,7 @@ class DeCalculator { float calcDE(vector, vector); float calcDist(Sequence*, Sequence*, int, int); float getCoef(vector, vector); - vector< vector > getQuantiles(vector, vector, int, vector, int, int, int); + vector< vector > getQuantiles(vector, vector, int, vector, int, int, int); vector returnObviousOutliers(vector< vector >, int); diff --git a/mothur.cpp b/mothur.cpp index 0249f65..d5f8387 100644 --- a/mothur.cpp +++ b/mothur.cpp @@ -73,9 +73,9 @@ int main(int argc, char *argv[]){ #endif //header - m->mothurOut("mothur v.1.10.2"); + m->mothurOut("mothur v.1.11.0"); m->mothurOutEndLine(); - m->mothurOut("Last updated: 5/26/2010"); + m->mothurOut("Last updated: 6/18/2010"); m->mothurOutEndLine(); m->mothurOutEndLine(); m->mothurOut("by"); diff --git a/pintail.cpp b/pintail.cpp index 0050a43..5bfdc44 100644 --- a/pintail.cpp +++ b/pintail.cpp @@ -196,20 +196,20 @@ int Pintail::doPrep() { } }else{ - sort(quantilesMembers[i].begin(), quantilesMembers[i].end(), compareQuanMembers); + sort(quantilesMembers[i].begin(), quantilesMembers[i].end()); //save 10% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.10)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.10)]); //save 25% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.25)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.25)]); //save 50% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.5)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.5)]); //save 75% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.75)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.75)]); //save 95% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.95)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.95)]); //save 99% - temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.99)].score); + temp.push_back(quantilesMembers[i][int(quantilesMembers[i].size() * 0.99)]); } @@ -224,6 +224,9 @@ int Pintail::doPrep() { printQuanFile(noOutliers, outputString); + //free memory + quantilesMembers.clear(); + m->mothurOut("Done."); m->mothurOutEndLine(); } @@ -544,7 +547,7 @@ void Pintail::createProcessesQuan() { for (int i = 0; i < quantilesMembers.size(); i++) { out << quantilesMembers[i].size() << '\t'; for (int j = 0; j < quantilesMembers[i].size(); j++) { - out << quantilesMembers[i][j].score << '\t' << quantilesMembers[i][j].member1 << '\t' << quantilesMembers[i][j].member2 << '\t'; + out << quantilesMembers[i][j] << '\t'; } out << endl; } @@ -567,25 +570,23 @@ void Pintail::createProcessesQuan() { string s = toString(processIDS[i]) + ".temp"; openInputFile(s, in); - vector< vector > quan; + vector< vector > quan; quan.resize(100); //get quantiles - for (int m = 0; m < quan.size(); m++) { + for (int h = 0; h < quan.size(); h++) { int num; in >> num; gobble(in); - vector q; float w; int b, n; + vector q; float w; for (int j = 0; j < num; j++) { - in >> w >> b >> n; - - quanMember newMember(w, b, n); - q.push_back(newMember); + in >> w; + q.push_back(w); } - quan[m] = q; + quan[h] = q; gobble(in); } diff --git a/pintail.h b/pintail.h index 7164842..3da5245 100644 --- a/pintail.h +++ b/pintail.h @@ -66,7 +66,7 @@ class Pintail : public Chimera { float DE; //DE is the deviaation for query vector probabilityProfile; vector< vector > quantiles; //quantiles[0] is the vector of deviations with ceiling score of 1, quantiles[1] is the vector of deviations with ceiling score of 2... - vector< vector > quantilesMembers; //quantiles[0] is the vector of deviations with ceiling score of 1, quantiles[1] is the vector of deviations with ceiling score of 2... + vector< vector > quantilesMembers; //quantiles[0] is the vector of deviations with ceiling score of 1, quantiles[1] is the vector of deviations with ceiling score of 2... set h; string mergedFilterString; -- 2.39.2