]> git.donarmstrong.com Git - bamtools.git/blob - src/api/BamConstants.h
Brought API up to compliance with recent SAM Format Spec (v1.4-r962)
[bamtools.git] / src / api / BamConstants.h
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