1 #ifndef TRIMSEQSCOMMAND_H
2 #define TRIMSEQSCOMMAND_H
8 * Created by Pat Schloss on 6/6/09.
9 * Copyright 2009 Patrick D. Schloss. All rights reserved.
14 #include "command.hpp"
15 #include "sequence.hpp"
16 #include "qualityscores.h"
19 class TrimSeqsCommand : public Command {
21 TrimSeqsCommand(string);
24 vector<string> getRequiredParameters();
25 vector<string> getValidParameters();
26 vector<string> getRequiredFiles();
27 map<string, vector<string> > getOutputFiles() { return outputTypes; }
36 unsigned long int start;
37 unsigned long int end;
38 linePair(unsigned long int i, unsigned long int j) : start(i), end(j) {}
41 void getOligos(vector<string>&, vector<string>&);
42 int stripBarcode(Sequence&, QualityScores&, int&);
43 int stripForward(Sequence&, QualityScores&, int&);
44 bool stripReverse(Sequence&, QualityScores&);
46 bool keepFirstTrim(Sequence&, QualityScores&);
47 bool removeLastTrim(Sequence&, QualityScores&);
49 bool cullLength(Sequence&);
50 bool cullHomoP(Sequence&);
51 bool cullAmbigs(Sequence&);
52 bool compareDNASeq(string, string);
53 int countDiffs(string, string);
54 map<string, vector<string> > outputTypes;
57 string fastaFile, oligoFile, qFileName, groupfile, outputDir;
59 bool flip, allFiles, qtrim;
60 int numFPrimers, numRPrimers, maxAmbig, maxHomoP, minLength, maxLength, processors, tdiffs, bdiffs, pdiffs, comboStarts;
61 int qWindowSize, qWindowStep, keepFirst, removeLast;
62 double qRollAverage, qThreshold, qWindowAverage, qAverage;
63 vector<string> revPrimer, outputNames;
64 set<string> filesToRemove;
65 map<string, int> barcodes;
66 vector<string> groupVector;
67 map<string, int> primers;
68 map<string, int> combos;
69 map<string, int> groupToIndex;
71 vector<int> processIDS; //processid
72 vector<linePair*> lines;
73 vector<linePair*> qLines;
75 int driverCreateTrim(string, string, string, string, string, string, string, vector<string>, vector<string>, linePair*, linePair*);
76 int createProcessesCreateTrim(string, string, string, string, string, string, string, vector<string>, vector<string>);
77 int setLines(string, string, vector<unsigned long int>&, vector<unsigned long int>&);