annotate bwa-0.6.2/bntseq.h @ 0:dd1186b11b3b draft

Uploaded BWA
author ashvark
date Fri, 18 Jul 2014 07:55:14 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
1 /* The MIT License
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
2
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
3 Copyright (c) 2008 Genome Research Ltd (GRL).
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
4
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
5 Permission is hereby granted, free of charge, to any person obtaining
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
6 a copy of this software and associated documentation files (the
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
7 "Software"), to deal in the Software without restriction, including
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
8 without limitation the rights to use, copy, modify, merge, publish,
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
9 distribute, sublicense, and/or sell copies of the Software, and to
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
10 permit persons to whom the Software is furnished to do so, subject to
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
11 the following conditions:
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
12
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
13 The above copyright notice and this permission notice shall be
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
14 included in all copies or substantial portions of the Software.
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
15
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
17 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
18 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
20 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
21 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
22 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
23 SOFTWARE.
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
24 */
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
25
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
26 /* Contact: Heng Li <lh3@sanger.ac.uk> */
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
27
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
28 #ifndef BWT_BNTSEQ_H
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
29 #define BWT_BNTSEQ_H
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
30
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
31 #include <stdint.h>
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
32 #include <zlib.h>
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
33
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
34 #ifndef BWA_UBYTE
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
35 #define BWA_UBYTE
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
36 typedef uint8_t ubyte_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
37 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
38
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
39 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
40 int64_t offset;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
41 int32_t len;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
42 int32_t n_ambs;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
43 uint32_t gi;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
44 char *name, *anno;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
45 } bntann1_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
46
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
47 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
48 int64_t offset;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
49 int32_t len;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
50 char amb;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
51 } bntamb1_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
52
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
53 typedef struct {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
54 int64_t l_pac;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
55 int32_t n_seqs;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
56 uint32_t seed;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
57 bntann1_t *anns; // n_seqs elements
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
58 int32_t n_holes;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
59 bntamb1_t *ambs; // n_holes elements
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
60 FILE *fp_pac;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
61 } bntseq_t;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
62
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
63 extern unsigned char nst_nt4_table[256];
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
64
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
65 #ifdef __cplusplus
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
66 extern "C" {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
67 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
68
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
69 void bns_dump(const bntseq_t *bns, const char *prefix);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
70 bntseq_t *bns_restore(const char *prefix);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
71 bntseq_t *bns_restore_core(const char *ann_filename, const char* amb_filename, const char* pac_filename);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
72 void bns_destroy(bntseq_t *bns);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
73 int64_t bns_fasta2bntseq(gzFile fp_fa, const char *prefix, int for_only);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
74 int bns_cnt_ambi(const bntseq_t *bns, int64_t pos_f, int len, int *ref_id);
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
75
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
76 #ifdef __cplusplus
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
77 }
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
78 #endif
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
79
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
80 static inline int64_t bns_depos(const bntseq_t *bns, int64_t pos, int *is_rev)
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
81 {
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
82 return (*is_rev = (pos >= bns->l_pac))? (bns->l_pac<<1) - 1 - pos : pos;
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
83 }
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
84
dd1186b11b3b Uploaded BWA
ashvark
parents:
diff changeset
85 #endif