comparison snp_caller/src/Alignment.h @ 0:0fd352f62446 draft default tip

planemo upload for repository https://github.com/ChrisD11/Duplicon commit 3ee0594c692faac542ffa58f4339d79b9b8aefbd-dirty
author chrisd
date Sun, 21 Feb 2016 06:05:24 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:0fd352f62446
1 #ifndef ALIGNMENT_H
2 #define ALIGNMENT_H
3
4 #include <string>
5 #include <vector>
6 #include <algorithm>
7
8 struct bit_flag {
9 /* SAM flags in English */
10 bool read_paired = false;
11 bool read_mapped_in_proper_pair = false;
12 bool read_unmapped = false;
13 bool mate_unmapped = false;
14 bool read_reverse_strand = false;
15 bool mate_reverse_strand = false;
16 bool first_in_pair = false;
17 bool second_in_pair = false;
18 };
19
20 struct alignment_fields {
21 std::string QNAME;
22 int FLAG;
23 std::string RNAME;
24 int POS;
25 std::string MAPQ;
26 std::string CIGAR;
27 std::string RNEXT;
28 int PNEXT;
29 int TLEN;
30 std::string SEQ;
31 std::string QUAL;
32 };
33
34 class Alignment {
35 public:
36 Alignment(std::string alignment);
37 void fill_alignment_fields(const std::string &alignment);
38 void fill_bit_flag(const int &flag);
39 bool fill_xa_field(const std::string &alignment);
40 std::vector<std::pair<int,char> > get_cigar();
41
42 inline std::string alignment() const { return _alignment; };
43 inline std::string qname() const { return field.QNAME; };
44 inline std::string rname() const { return field.RNAME; };
45 inline std::string mapq() const { return field.MAPQ; };
46 inline std::string cigar() const { return field.CIGAR; };
47 inline std::string seq() const { return field.SEQ; };
48 inline std::string rnext() const { return field.RNEXT; };
49 inline int flag() const { return field.FLAG; };
50 inline int pos() const { return field.POS; };
51 inline int pnext() const { return field.PNEXT; };
52 inline int tlen() const { return field.TLEN; };
53
54 inline bool read_paired() const { return b_flag.read_paired; };
55 inline bool read_mapped_in_proper_pair() const { return b_flag.read_mapped_in_proper_pair; };
56 inline bool read_unmapped() const { return b_flag.read_unmapped; };
57 inline bool mate_unmapped() const { return b_flag.mate_unmapped; };
58 inline bool read_reverse_strand() const { return b_flag.read_reverse_strand; }
59 inline bool mate_reverse_strand() const { return b_flag.mate_reverse_strand; };
60 inline bool first_in_pair() const { return b_flag.first_in_pair; };
61 inline bool second_in_pair() const { return b_flag.second_in_pair; };
62
63 inline void set_rname(std::string rname) {
64 field.RNAME = rname;
65 }
66 inline void set_cigar(std::string cigar) {
67 field.CIGAR = cigar;
68 }
69 inline void set_pos(int pos) {
70 field.POS = pos;
71 }
72
73 struct xa_fields {
74 std::string rname;
75 std::string cigar;
76 int pos;
77 int edit;
78 };
79
80 std::vector<xa_fields> alternate_hits;
81 private:
82 std::vector<std::pair<int,char> > get_cigar_operations(const std::string &cigar);
83
84 std::string _alignment;
85
86 alignment_fields field;
87
88 bit_flag b_flag;
89 };
90
91 #endif // ALIGNMENT_H