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