0
|
1 // ***************************************************************************
|
|
2 // BamConstants.h (c) 2011 Derek Barnett
|
|
3 // Marth Lab, Department of Biology, Boston College
|
|
4 // All rights reserved.
|
|
5 // ---------------------------------------------------------------------------
|
|
6 // Last modified: 19 April 2011 (DB)
|
|
7 // ---------------------------------------------------------------------------
|
|
8 // Provides basic constants for handling BAM files.
|
|
9 // ***************************************************************************
|
|
10
|
|
11 #ifndef BAM_CONSTANTS_H
|
|
12 #define BAM_CONSTANTS_H
|
|
13
|
|
14 #include <string>
|
|
15
|
|
16 /*! \namespace BamTools::Constants
|
|
17 \brief Provides basic constants for handling BAM files.
|
|
18 */
|
|
19
|
|
20 namespace BamTools {
|
|
21 namespace Constants {
|
|
22
|
|
23 const int BAM_SIZEOF_INT = 4;
|
|
24
|
|
25 // header magic number
|
|
26 const char* const BAM_HEADER_MAGIC = "BAM\1";
|
|
27 const unsigned int BAM_HEADER_MAGIC_LENGTH = 4;
|
|
28
|
|
29 // BAM alignment core size
|
|
30 const int BAM_CORE_SIZE = 32;
|
|
31 const int BAM_CORE_BUFFER_SIZE = 8;
|
|
32
|
|
33 // BAM alignment flags
|
|
34 const int BAM_ALIGNMENT_PAIRED = 0x0001;
|
|
35 const int BAM_ALIGNMENT_PROPER_PAIR = 0x0002;
|
|
36 const int BAM_ALIGNMENT_UNMAPPED = 0x0004;
|
|
37 const int BAM_ALIGNMENT_MATE_UNMAPPED = 0x0008;
|
|
38 const int BAM_ALIGNMENT_REVERSE_STRAND = 0x0010;
|
|
39 const int BAM_ALIGNMENT_MATE_REVERSE_STRAND = 0x0020;
|
|
40 const int BAM_ALIGNMENT_READ_1 = 0x0040;
|
|
41 const int BAM_ALIGNMENT_READ_2 = 0x0080;
|
|
42 const int BAM_ALIGNMENT_SECONDARY = 0x0100;
|
|
43 const int BAM_ALIGNMENT_QC_FAILED = 0x0200;
|
|
44 const int BAM_ALIGNMENT_DUPLICATE = 0x0400;
|
|
45
|
|
46 // CIGAR constants
|
|
47 const char* const BAM_CIGAR_LOOKUP = "MIDNSHP=X";
|
|
48 const int BAM_CIGAR_MATCH = 0;
|
|
49 const int BAM_CIGAR_INS = 1;
|
|
50 const int BAM_CIGAR_DEL = 2;
|
|
51 const int BAM_CIGAR_REFSKIP = 3;
|
|
52 const int BAM_CIGAR_SOFTCLIP = 4;
|
|
53 const int BAM_CIGAR_HARDCLIP = 5;
|
|
54 const int BAM_CIGAR_PAD = 6;
|
|
55 const int BAM_CIGAR_SEQMATCH = 7;
|
|
56 const int BAM_CIGAR_MISMATCH = 8;
|
|
57
|
|
58 const char BAM_CIGAR_MATCH_CHAR = 'M';
|
|
59 const char BAM_CIGAR_INS_CHAR = 'I';
|
|
60 const char BAM_CIGAR_DEL_CHAR = 'D';
|
|
61 const char BAM_CIGAR_REFSKIP_CHAR = 'N';
|
|
62 const char BAM_CIGAR_SOFTCLIP_CHAR = 'S';
|
|
63 const char BAM_CIGAR_HARDCLIP_CHAR = 'H';
|
|
64 const char BAM_CIGAR_PAD_CHAR = 'P';
|
|
65 const char BAM_CIGAR_SEQMATCH_CHAR = '=';
|
|
66 const char BAM_CIGAR_MISMATCH_CHAR = 'X';
|
|
67
|
|
68 const int BAM_CIGAR_SHIFT = 4;
|
|
69 const int BAM_CIGAR_MASK = ((1 << BAM_CIGAR_SHIFT) - 1);
|
|
70
|
|
71 // BAM tag types
|
|
72 const char BAM_TAG_TYPE_ASCII = 'A';
|
|
73 const char BAM_TAG_TYPE_UINT8 = 'c';
|
|
74 const char BAM_TAG_TYPE_INT8 = 'C';
|
|
75 const char BAM_TAG_TYPE_UINT16 = 's';
|
|
76 const char BAM_TAG_TYPE_INT16 = 'S';
|
|
77 const char BAM_TAG_TYPE_UINT32 = 'i';
|
|
78 const char BAM_TAG_TYPE_INT32 = 'I';
|
|
79 const char BAM_TAG_TYPE_FLOAT = 'f';
|
|
80 const char BAM_TAG_TYPE_STRING = 'Z';
|
|
81 const char BAM_TAG_TYPE_HEX = 'H';
|
|
82 const char BAM_TAG_TYPE_ARRAY = 'B';
|
|
83
|
|
84 const size_t BAM_TAG_TAGSIZE = 2;
|
|
85 const size_t BAM_TAG_TYPESIZE = 1;
|
|
86 const int BAM_TAG_ARRAYBASE_SIZE = 8;
|
|
87
|
|
88 // DNA bases
|
|
89 const char* const BAM_DNA_LOOKUP = "=ACMGRSVTWYHKDBN";
|
|
90 const unsigned char BAM_BASECODE_EQUAL = 0;
|
|
91 const unsigned char BAM_BASECODE_A = 1;
|
|
92 const unsigned char BAM_BASECODE_C = 2;
|
|
93 const unsigned char BAM_BASECODE_G = 4;
|
|
94 const unsigned char BAM_BASECODE_T = 8;
|
|
95 const unsigned char BAM_BASECODE_N = 15;
|
|
96
|
|
97 const char BAM_DNA_EQUAL = '=';
|
|
98 const char BAM_DNA_A = 'A';
|
|
99 const char BAM_DNA_C = 'C';
|
|
100 const char BAM_DNA_G = 'G';
|
|
101 const char BAM_DNA_T = 'T';
|
|
102 const char BAM_DNA_N = 'N';
|
|
103 const char BAM_DNA_DEL = '-';
|
|
104 const char BAM_DNA_PAD = '*';
|
|
105
|
|
106 // zlib constants
|
|
107 const int GZIP_ID1 = 31;
|
|
108 const int GZIP_ID2 = 139;
|
|
109 const int CM_DEFLATE = 8;
|
|
110 const int FLG_FEXTRA = 4;
|
|
111 const int OS_UNKNOWN = 255;
|
|
112 const int BGZF_XLEN = 6;
|
|
113 const int BGZF_ID1 = 66;
|
|
114 const int BGZF_ID2 = 67;
|
|
115 const int BGZF_LEN = 2;
|
|
116 const int GZIP_WINDOW_BITS = -15;
|
|
117 const int Z_DEFAULT_MEM_LEVEL = 8;
|
|
118
|
|
119 // BZGF constants
|
|
120 const int BGZF_BLOCK_HEADER_LENGTH = 18;
|
|
121 const int BGZF_BLOCK_FOOTER_LENGTH = 8;
|
|
122 const int BGZF_MAX_BLOCK_SIZE = 65536;
|
|
123 const int BGZF_DEFAULT_BLOCK_SIZE = 65536;
|
|
124
|
|
125 } // namespace Constants
|
|
126 } // namespace BamTools
|
|
127
|
|
128 #endif // BAM_CONSTANTS_H
|