X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=qualityscores.cpp;h=916dab3a59743e4bcb860bd9891dcfbda74504b4;hb=fefd5ee1517abd3bc38b469cb2dffc85a1571c7e;hp=1f86efc51304cc81fa2f359c8b2c996da52e8c30;hpb=3a5dd9e428ab93a6dcdce7912e8ebb977be0b893;p=mothur.git diff --git a/qualityscores.cpp b/qualityscores.cpp index 1f86efc..916dab3 100644 --- a/qualityscores.cpp +++ b/qualityscores.cpp @@ -23,7 +23,19 @@ QualityScores::QualityScores(){ exit(1); } } +/**************************************************************************************************/ +QualityScores::QualityScores(string n, vector s){ + try { + m = MothurOut::getInstance(); + setName(n); + setScores(s); + } + catch(exception& e) { + m->errorOut(e, "QualityScores", "QualityScores"); + exit(1); + } +} /**************************************************************************************************/ QualityScores::QualityScores(ifstream& qFile){ @@ -130,7 +142,7 @@ string QualityScores::getName(){ void QualityScores::printQScores(ofstream& qFile){ try { - double aveQScore = calculateAverage(); + double aveQScore = calculateAverage(false); qFile << '>' << seqName << '\t' << aveQScore << endl; @@ -200,7 +212,7 @@ bool QualityScores::stripQualThreshold(Sequence& sequence, double qThreshold){ if(seqName != sequence.getName()){ m->mothurOut("sequence name mismatch btwn fasta: " + sequence.getName() + " and qual file: " + seqName); - m->mothurOutEndLine(); + m->mothurOutEndLine(); m->control_pressed = true; } int end; @@ -228,7 +240,7 @@ bool QualityScores::stripQualThreshold(Sequence& sequence, double qThreshold){ /**************************************************************************************************/ -bool QualityScores::stripQualRollingAverage(Sequence& sequence, double qThreshold){ +bool QualityScores::stripQualRollingAverage(Sequence& sequence, double qThreshold, bool logTransform){ try { string rawSequence = sequence.getUnaligned(); int seqLength = sequence.getNumBases(); @@ -240,12 +252,22 @@ bool QualityScores::stripQualRollingAverage(Sequence& sequence, double qThreshol int end = -1; double rollingSum = 0.0000; + double value = 0.0; for(int i=0;imothurOutEndLine(); } - double aveQScore = calculateAverage(); + double aveQScore = calculateAverage(logTransform); + if (m->debug) { m->mothurOut("[DEBUG]: " + sequence.getName() + " average = " + toString(aveQScore) + "\n"); } + if(aveQScore >= qAverage) { success = 1; } else { success = 0; }