+
+ struct linePair {
+ unsigned long long start;
+ unsigned long long end;
+ linePair(unsigned long long i, unsigned long long j) : start(i), end(j) {}
+ };
+
+ vector<linePair> lines;
+
+ int screenNameGroupFile(set<string>);
+ int screenGroupFile(set<string>);
+ int screenCountFile(set<string>);
+ int screenAlignReport(set<string>);
+ int screenQual(set<string>);
+ int screenTaxonomy(set<string>);
+
+ int driver(linePair, string, string, string, set<string>&);
+ int createProcesses(string, string, string, set<string>&);
+
+ #ifdef USE_MPI
+ int driverMPI(int, int, MPI_File&, MPI_File&, MPI_File&, vector<unsigned long long>&, set<string>&);
+ #endif
+
+ bool abort;
+ string fastafile, namefile, groupfile, alignreport, outputDir, qualfile, taxonomy, countfile;
+ int startPos, endPos, maxAmbig, maxHomoP, minLength, maxLength, processors, criteria;
+ vector<string> outputNames;
+ vector<string> optimize;
+ map<string, int> nameMap;
+
+ int getSummary(vector<unsigned long long>&);
+ int createProcessesCreateSummary(vector<int>&, vector<int>&, vector<int>&, vector<int>&, vector<int>&, string);
+ int driverCreateSummary(vector<int>&, vector<int>&, vector<int>&, vector<int>&, vector<int>&, string, linePair);
+};
+
+/**************************************************************************************************/
+//custom data structure for threads to use.
+// This is passed by void pointer so it can be any data type
+// that can be passed using a single void pointer (LPVOID).
+struct sumData {
+ vector<int> startPosition;
+ vector<int> endPosition;
+ vector<int> seqLength;
+ vector<int> ambigBases;
+ vector<int> longHomoPolymer;
+ string filename, namefile;
+ unsigned long long start;
+ unsigned long long end;
+ int count;
+ MothurOut* m;
+ map<string, int> nameMap;
+
+
+ sumData(){}
+ sumData(string f, MothurOut* mout, unsigned long long st, unsigned long long en, string nf, map<string, int> nam) {
+ filename = f;
+ namefile = nf;
+ m = mout;
+ start = st;
+ end = en;
+ nameMap = nam;
+ count = 0;
+ }
+};
+/**************************************************************************************************/
+//custom data structure for threads to use.
+// This is passed by void pointer so it can be any data type
+// that can be passed using a single void pointer (LPVOID).
+struct sumScreenData {
+ int startPos, endPos, maxAmbig, maxHomoP, minLength, maxLength;
+ unsigned long long start;
+ unsigned long long end;
+ int count;
+ MothurOut* m;
+ string goodFName, badAccnosFName, filename;
+ set<string> badSeqNames;
+
+
+ sumScreenData(){}
+ sumScreenData(int s, int e, int a, int h, int minl, int maxl, string f, MothurOut* mout, unsigned long long st, unsigned long long en, string gf, string bf) {
+ startPos = s;
+ endPos = e;
+ minLength = minl;
+ maxLength = maxl;
+ maxAmbig = a;
+ maxHomoP = h;
+ filename = f;
+ goodFName = gf;
+ badAccnosFName = bf;
+ m = mout;
+ start = st;
+ end = en;
+ count = 0;
+ }