0
|
1 /*
|
|
2 * File: notes.h
|
|
3 * Author: rgoya
|
|
4 *
|
|
5 * Created on February 3, 2010, 12:37 PM
|
|
6 */
|
|
7
|
|
8 /*! @typedef
|
|
9 @abstract Structure for one alignment covering the pileup position.
|
|
10 @field b pointer to the alignment
|
|
11 @field qpos position of the read base at the pileup site, 0-based
|
|
12 @field indel indel length; 0 for no indel, positive for ins and negative for del
|
|
13 @field is_del 1 iff the base on the padded read is a deletion
|
|
14 @field level the level of the read in the "viewer" mode
|
|
15
|
|
16 @discussion See also bam_plbuf_push() and bam_lplbuf_push(). The
|
|
17 difference between the two functions is that the former does not
|
|
18 set bam_pileup1_t::level, while the later does. Level helps the
|
|
19 implementation of alignment viewers, but calculating this has some
|
|
20 overhead.
|
|
21 */
|
|
22 typedef struct {
|
|
23 bam1_t *b;
|
|
24 int32_t qpos;
|
|
25 int indel, level;
|
|
26 uint32_t is_del:1, is_head:1, is_tail:1;
|
|
27 } bam_pileup1_t;
|
|
28
|
|
29 /*! @typedef
|
|
30 @abstract Structure for core alignment information.
|
|
31 @field tid chromosome ID, defined by bam_header_t
|
|
32 @field pos 0-based leftmost coordinate
|
|
33 @field strand strand; 0 for forward and 1 otherwise
|
|
34 @field bin bin calculated by bam_reg2bin()
|
|
35 @field qual mapping quality
|
|
36 @field l_qname length of the query name
|
|
37 @field flag bitwise flag
|
|
38 @field n_cigar number of CIGAR operations
|
|
39 @field l_qseq length of the query sequence (read)
|
|
40 */
|
|
41 typedef struct {
|
|
42 int32_t tid;
|
|
43 int32_t pos;
|
|
44 uint32_t bin:16, qual:8, l_qname:8;
|
|
45 uint32_t flag:16, n_cigar:16;
|
|
46 int32_t l_qseq;
|
|
47 int32_t mtid;
|
|
48 int32_t mpos;
|
|
49 int32_t isize;
|
|
50 } bam1_core_t;
|
|
51
|
|
52 /*! @typedef
|
|
53 @abstract Structure for one alignment.
|
|
54 @field core core information about the alignment
|
|
55 @field l_aux length of auxiliary data
|
|
56 @field data_len current length of bam1_t::data
|
|
57 @field m_data maximum length of bam1_t::data
|
|
58 @field data all variable-length data, concatenated; structure: cigar-qname-seq-qual-aux
|
|
59
|
|
60 @discussion Notes:
|
|
61
|
|
62 1. qname is zero tailing and core.l_qname includes the tailing '\0'.
|
|
63 2. l_qseq is calculated from the total length of an alignment block
|
|
64 on reading or from CIGAR.
|
|
65 */
|
|
66 typedef struct {
|
|
67 bam1_core_t core;
|
|
68 int l_aux, data_len, m_data;
|
|
69 uint8_t *data;
|
|
70 } bam1_t;
|
|
71
|
|
72
|
|
73 /*! @typedef
|
|
74 @abstract Structure for one alignment covering the pileup position.
|
|
75 @field b pointer to the alignment
|
|
76 @field qpos position of the read base at the pileup site, 0-based
|
|
77 @field indel indel length; 0 for no indel, positive for ins and negative for del
|
|
78 @field is_del 1 iff the base on the padded read is a deletion
|
|
79 @field level the level of the read in the "viewer" mode
|
|
80
|
|
81 @discussion See also bam_plbuf_push() and bam_lplbuf_push(). The
|
|
82 difference between the two functions is that the former does not
|
|
83 set bam_pileup1_t::level, while the later does. Level helps the
|
|
84 implementation of alignment viewers, but calculating this has some
|
|
85 overhead.
|
|
86 */
|
|
87 typedef struct {
|
|
88 bam1_t *b;
|
|
89 int32_t qpos;
|
|
90 int indel, level;
|
|
91 uint32_t is_del:1, is_head:1, is_tail:1;
|
|
92 } bam_pileup1_t;
|