]> git.donarmstrong.com Git - mothur.git/blob - oligos.h
added oligos class. added check orient parameter to trim.flows, sffinfo, fastq.info...
[mothur.git] / oligos.h
1 //
2 //  oligos.h
3 //  Mothur
4 //
5 //  Created by Sarah Westcott on 4/4/14.
6 //  Copyright (c) 2014 Schloss Lab. All rights reserved.
7 //
8
9 #ifndef Mothur_oligos_h
10 #define Mothur_oligos_h
11
12
13 #include "mothurout.h"
14
15
16 /**************************************************************************************************/
17
18 class Oligos {
19     
20 public:
21         Oligos(string);
22         Oligos();
23     ~Oligos() {}
24     
25     int read(string);
26     int read(string, bool); //read without reversing the paired barcodes, for make.contigs.
27     bool hasPairedPrimers() { return hasPPrimers; }
28     bool hasPairedBarcodes() { return hasPBarcodes; }
29     
30     //for processing with trimOligos class
31     map<int, oligosPair> getPairedPrimers()                 { return pairedPrimers;     }
32     map<int, oligosPair> getPairedBarcodes()                { return pairedBarcodes;    }
33     map<string, int> getPrimers()                           { return primers;           }
34     map<string, int> getBarcodes()                          { return barcodes;          }
35     
36     map<int, oligosPair> getReorientedPairedPrimers();
37     map<int, oligosPair> getReorientedPairedBarcodes();
38     map<string, int> getReorientedPrimers();
39     map<string, int> getReorientedBarcodes();
40     
41     
42     vector<string> getLinkers()                             { return linker;            }
43     vector<string> getSpacers()                             { return spacer;            }
44     vector<string> getReversePrimers()                      { return revPrimer;         }
45     vector<string> getPrimerNames()                         { return primerNameVector;  }
46     vector<string> getBarcodeNames()                        { return barcodeNameVector; }
47     vector<string> getGroupNames()                          { return Groups;            }
48         
49     
50     //for printing and other formatting uses
51     vector<string> getBarcodes(string); //get barcodes for a group. For paired barcodes will return forward.reverse
52     vector<string> getPrimers(string); //get primers for a group. For paired primers will return forward.reverse
53     string getBarcodeName(int);
54     string getPrimerName(int);
55     string getGroupName(int, int);
56     
57                 
58 private:
59     
60     set<string> uniqueNames; 
61     vector<string> Groups;
62         vector<string> revPrimer;
63     map<string, vector<string> > Group2Barcode;
64     map<string, vector<string> > Group2Primer;
65     map<int, oligosPair> pairedBarcodes;
66     map<int, oligosPair> pairedPrimers;
67     map<string, int> primers;
68         map<string, int> barcodes;
69     vector<string>  linker;
70     vector<string>  spacer;
71         vector<string> primerNameVector;
72         vector<string> barcodeNameVector;
73     bool hasPPrimers, hasPBarcodes, pairedOligos, reversePairs;
74     string oligosfile;
75     int numBarcodes, numFPrimers;
76     MothurOut* m;
77     
78     int indexPrimer;
79     int indexBarcode;
80     int indexPairedPrimer;
81     int indexPairedBarcode;
82     set<string> uniquePrimers;
83     set<string> uniqueBarcodes;
84     
85     int readOligos();
86     string reverseOligo(string);
87 };
88
89 /**************************************************************************************************/
90
91
92 #endif