annotate bwa-0.6.2/bamlite.h @ 2:a294fbfcb1db draft default tip

Uploaded BWA
author ashvark
date Fri, 18 Jul 2014 07:55:59 -0400
parents dd1186b11b3b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
1 #ifndef BAMLITE_H_
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
2 #define BAMLITE_H_
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
3
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
4 #include <stdint.h>
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
5 #include <zlib.h>
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
6
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
7 typedef gzFile bamFile;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
8 #define bam_open(fn, mode) gzopen(fn, mode)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
9 #define bam_dopen(fd, mode) gzdopen(fd, mode)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
10 #define bam_close(fp) gzclose(fp)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
11 #define bam_read(fp, buf, size) gzread(fp, buf, size)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
12
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
13 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
14 int32_t n_targets;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
15 char **target_name;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
16 uint32_t *target_len;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
17 size_t l_text, n_text;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
18 char *text;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
19 } bam_header_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
20
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
21 #define BAM_FPAIRED 1
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
22 #define BAM_FPROPER_PAIR 2
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
23 #define BAM_FUNMAP 4
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
24 #define BAM_FMUNMAP 8
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
25 #define BAM_FREVERSE 16
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
26 #define BAM_FMREVERSE 32
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
27 #define BAM_FREAD1 64
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
28 #define BAM_FREAD2 128
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
29 #define BAM_FSECONDARY 256
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
30 #define BAM_FQCFAIL 512
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
31 #define BAM_FDUP 1024
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
32
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
33 #define BAM_CIGAR_SHIFT 4
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
34 #define BAM_CIGAR_MASK ((1 << BAM_CIGAR_SHIFT) - 1)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
35
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
36 #define BAM_CMATCH 0
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
37 #define BAM_CINS 1
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
38 #define BAM_CDEL 2
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
39 #define BAM_CREF_SKIP 3
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
40 #define BAM_CSOFT_CLIP 4
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
41 #define BAM_CHARD_CLIP 5
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
42 #define BAM_CPAD 6
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
43
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
44 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
45 int32_t tid;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
46 int32_t pos;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
47 uint32_t bin:16, qual:8, l_qname:8;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
48 uint32_t flag:16, n_cigar:16;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
49 int32_t l_qseq;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
50 int32_t mtid;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
51 int32_t mpos;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
52 int32_t isize;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
53 } bam1_core_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
54
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
55 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
56 bam1_core_t core;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
57 int l_aux, data_len, m_data;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
58 uint8_t *data;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
59 } bam1_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
60
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
61 #ifndef kroundup32
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
62 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
63 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
64
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
65 #define bam1_strand(b) (((b)->core.flag&BAM_FREVERSE) != 0)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
66 #define bam1_mstrand(b) (((b)->core.flag&BAM_FMREVERSE) != 0)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
67 #define bam1_cigar(b) ((uint32_t*)((b)->data + (b)->core.l_qname))
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
68 #define bam1_qname(b) ((char*)((b)->data))
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
69 #define bam1_seq(b) ((b)->data + (b)->core.n_cigar*4 + (b)->core.l_qname)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
70 #define bam1_qual(b) ((b)->data + (b)->core.n_cigar*4 + (b)->core.l_qname + (((b)->core.l_qseq + 1)>>1))
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
71 #define bam1_seqi(s, i) ((s)[(i)/2] >> 4*(1-(i)%2) & 0xf)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
72 #define bam1_aux(b) ((b)->data + (b)->core.n_cigar*4 + (b)->core.l_qname + (b)->core.l_qseq + ((b)->core.l_qseq + 1)/2)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
73
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
74 #define bam_init1() ((bam1_t*)calloc(1, sizeof(bam1_t)))
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
75 #define bam_destroy1(b) do { \
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
76 if (b) { free((b)->data); free(b); } \
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
77 } while (0)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
78
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
79 extern int bam_is_be;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
80
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
81 #ifdef __cplusplus
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
82 extern "C" {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
83 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
84
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
85 bam_header_t *bam_header_init(void);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
86 void bam_header_destroy(bam_header_t *header);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
87 bam_header_t *bam_header_read(bamFile fp);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
88 int bam_read1(bamFile fp, bam1_t *b);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
89
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
90 #ifdef __cplusplus
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
91 }
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
92 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
93
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
94 #endif