File: oligos.h

package info (click to toggle)
mothur 1.48.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 13,684 kB
  • sloc: cpp: 161,854; makefile: 122; sh: 31
file content (97 lines) | stat: -rwxr-xr-x 3,347 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//
//  oligos.h
//  Mothur
//
//  Created by Sarah Westcott on 4/4/14.
//  Copyright (c) 2014 Schloss Lab. All rights reserved.
//

#ifndef Mothur_oligos_h
#define Mothur_oligos_h


#include "mothurout.h"


/**************************************************************************************************/

class Oligos {
    
public:
	Oligos(string);
	Oligos();
    ~Oligos() = default;
    
    int read(string);
    int read(string, bool); //read without reversing the paired barcodes, for make.contigs.
    bool hasPairedPrimers() { return hasPPrimers; }
    bool hasPairedBarcodes() { return hasPBarcodes; }
    
    //for processing with trimOligos class
    map<int, oligosPair> getPairedPrimers()                 { return pairedPrimers;     }
    map<int, oligosPair> getPairedBarcodes()                { return pairedBarcodes;    }
    map<int, oligosPair> getReorientedPairedPrimers();
    map<int, oligosPair> getReorientedPairedBarcodes();
    map<int, oligosPair> getReversedPairedPrimers();
    map<int, oligosPair> getReversedPairedBarcodes();
    
    map<string, int> getPrimers()                           { return primers;           }
    map<string, int> getBarcodes()                          { return barcodes;          }
    map<string, int> getReversedPrimers();
    vector<string> getReversedReversePrimers();
    map<string, int> getReorientedPrimers();
    vector<string> getReorientedReversePrimers();
    
    
    vector<string> getLinkers()                             { return linker;            }
    vector<string> getSpacers()                             { return spacer;            }
    vector<string> getReversePrimers()                      { return revPrimer;         }
    vector<string> getPrimerNames()                         { return primerNameVector;  }
    vector<string> getBarcodeNames()                        { return barcodeNameVector; }
    vector<string> getGroupNames()                          { return Groups;            }
    vector<string> getSRAGroupNames();                     
        
    
    //for printing and other formatting uses
    vector<string> getBarcodes(string); //get barcodes for a group. For paired barcodes will return forward.reverse
    vector<string> getPrimers(string); //get primers for a group. For paired primers will return forward.reverse
    string getGroupName(int, int);
    string getBarcodeName(int);
    string getPrimerName(int);
    
		
protected:
    
    set<string> uniqueNames; 
    vector<string> Groups;
	vector<string> revPrimer;
    map<string, vector<string> > Group2Barcode;
    map<string, vector<string> > Group2Primer;
    map<int, oligosPair> pairedBarcodes;
    map<int, oligosPair> pairedPrimers;
    map<string, int> primers;
	map<string, int> barcodes;
    vector<string>  linker;
    vector<string>  spacer;
	vector<string> primerNameVector;
	vector<string> barcodeNameVector;
    bool hasPPrimers, hasPBarcodes, pairedOligos, reversePairs;
    string oligosfile;
    int numBarcodes, numFPrimers;
    MothurOut* m;
    
    int indexPrimer;
    int indexBarcode;
    int indexPairedPrimer;
    int indexPairedBarcode;
    
    int readOligos();
    string reverseOligo(string);
    void formatOligo(string&);
    
};

/**************************************************************************************************/


#endif