X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=seqerrorcommand.h;h=aac17b6979910ebc733be840eb37ec720ecc1105;hp=a012d68e614e82c18a59fe79c115e213a614d35b;hb=df7e3ff9f68ef157b0328a2d353c3258c5d45d89;hpb=fe5bbb79f9434df947347881c47b430112f4253e diff --git a/seqerrorcommand.h b/seqerrorcommand.h index a012d68..aac17b6 100644 --- a/seqerrorcommand.h +++ b/seqerrorcommand.h @@ -10,64 +10,106 @@ * */ -#include "mothur.h" #include "command.hpp" #include "sequence.hpp" +#include "referencedb.h" +#include "counttable.h" -struct Compare { - int AA, AT, AG, AC, TA, TT, TG, TC, GA, GT, GG, GC, CA, CT, CG, CC, NA, NT, NG, NC, Ai, Ti, Gi, Ci, Ni, dA, dT, dG, dC; - string refName, queryName, sequence; - double errorRate; - int weight, matches, mismatches, total; - - Compare(){ - AA=0; AT=0; AG=0; AC=0; - TA=0; TT=0; TG=0; TC=0; - GA=0; GT=0; GG=0; GC=0; - CA=0; CT=0; CG=0; CC=0; - NA=0; NT=0; NG=0; NC=0; - Ai=0; Ti=0; Gi=0; Ci=0; Ni=0; - dA=0; dT=0; dG=0; dC=0; - refName = ""; - queryName = ""; - weight = 1; - matches = 0; - mismatches = 0; - total = 0; - errorRate = 1.0000; - sequence = ""; - } -}; class SeqErrorCommand : public Command { public: SeqErrorCommand(string); SeqErrorCommand(); - ~SeqErrorCommand(); - vector getRequiredParameters(); - vector getValidParameters(); - vector getRequiredFiles(); - map > getOutputFiles() { return outputTypes; } - int execute(); - void help(); + ~SeqErrorCommand(){} + + vector setParameters(); + string getCommandName() { return "seq.error"; } + string getCommandCategory() { return "Sequence Processing"; } + + string getHelpString(); + string getOutputPattern(string); + string getCitation() { return "Schloss PD, Gevers D, Westcott SL (2011). Reducing the effects of PCR amplification and sequencing artifacts on 16S rRNA-based studies. PLoS ONE. 6:e27310.\nhttp://www.mothur.org/wiki/Seq.error"; } + string getDescription() { return "seq.error"; } + + + int execute(); + void help() { m->mothurOut(getHelpString()); } private: bool abort; + ReferenceDB* rdb; + + struct linePair { + unsigned long long start; + unsigned long long end; + linePair(unsigned long long i, unsigned long long j) : start(i), end(j) {} + ~linePair(){} + }; + + struct Compare { + int AA, AT, AG, AC, TA, TT, TG, TC, GA, GT, GG, GC, CA, CT, CG, CC, NA, NT, NG, NC, Ai, Ti, Gi, Ci, Ni, dA, dT, dG, dC; + string refName, queryName, sequence; + double errorRate; + int weight, matches, mismatches, total; + + Compare(){ + AA=0; AT=0; AG=0; AC=0; + TA=0; TT=0; TG=0; TC=0; + GA=0; GT=0; GG=0; GC=0; + CA=0; CT=0; CG=0; CC=0; + NA=0; NT=0; NG=0; NC=0; + Ai=0; Ti=0; Gi=0; Ci=0; Ni=0; + dA=0; dT=0; dG=0; dC=0; + refName = ""; + queryName = ""; + weight = 1; + matches = 0; + mismatches = 0; + total = 0; + errorRate = 1.0000; + sequence = ""; + } + ~Compare(){}; + }; + + vector processIDS; //processid + vector lines; + vector qLines; + vector rLines; void getReferences(); map getWeights(); - Compare getErrors(Sequence, Sequence); - void printErrorHeader(); - void printErrorData(Compare); + int getErrors(Sequence, Sequence, Compare&); + void printErrorHeader(ofstream&); + void printErrorData(Compare, int, ofstream&, ofstream&); + void printSubMatrix(); + void printErrorFRFile(map >, map >); + void printErrorQuality(map >); + void printQualityFR(vector >, vector >); - string queryFileName, referenceFileName, qualFileName, reportFileName, namesFileName, errorSummaryFileName, errorSeqFileName, outputDir; + int setLines(string, string, string, vector&, vector&, vector&); + int driver(string, string, string, string, string, string, linePair, linePair, linePair); + int createProcesses(string, string, string, string, string, string); + + string queryFileName, referenceFileName, qualFileName, reportFileName, namesFileName, outputDir, countfile; double threshold; - int numRefs; - ofstream errorSummaryFile, errorSeqFile; + bool ignoreChimeras, save, aligned; + int numRefs, processors; + int maxLength, totalBases, totalMatches; + //ofstream errorSummaryFile, errorSeqFile; vector outputNames; - map > outputTypes; vector referenceSeqs; + vector > substitutionMatrix; + vector > qualForwardMap; + vector > qualReverseMap; + vector misMatchCounts; + map > qScoreErrorMap; + map > errorForward; + map > errorReverse; + map weights; + vector megaAlignVector; + }; #endif