0
|
1 #ifndef LH3_BWTSW2_H
|
|
2 #define LH3_BWTSW2_H
|
|
3
|
|
4 #include <stdint.h>
|
|
5 #include "bntseq.h"
|
|
6 #include "bwt_lite.h"
|
|
7 #include "bwt.h"
|
|
8
|
|
9 #define BSW2_FLAG_MATESW 0x100
|
|
10 #define BSW2_FLAG_TANDEM 0x200
|
|
11 #define BSW2_FLAG_MOVED 0x400
|
|
12 #define BSW2_FLAG_RESCUED 0x800
|
|
13
|
|
14 typedef struct {
|
|
15 int skip_sw:16, hard_clip:16;
|
|
16 int a, b, q, r, t, qr, bw, max_ins;
|
|
17 int z, is, t_seeds, multi_2nd;
|
|
18 float mask_level, coef;
|
|
19 int n_threads, chunk_size;
|
|
20 } bsw2opt_t;
|
|
21
|
|
22 typedef struct {
|
|
23 bwtint_t k, l;
|
|
24 uint32_t flag:18, n_seeds:13, is_rev:1;
|
|
25 int len, G, G2;
|
|
26 int beg, end;
|
|
27 } bsw2hit_t;
|
|
28
|
|
29 typedef struct {
|
|
30 int flag, nn, n_cigar, chr, pos, qual, mchr, mpos, pqual, isize, nm;
|
|
31 uint32_t *cigar;
|
|
32 } bsw2aux_t;
|
|
33
|
|
34 typedef struct {
|
|
35 int n, max;
|
|
36 bsw2hit_t *hits;
|
|
37 bsw2aux_t *aux;
|
|
38 } bwtsw2_t;
|
|
39
|
|
40 typedef struct {
|
|
41 void *stack;
|
|
42 int max_l;
|
|
43 uint8_t *aln_mem;
|
|
44 } bsw2global_t;
|
|
45
|
|
46 typedef struct {
|
|
47 int l, tid;
|
|
48 char *name, *seq, *qual, *sam;
|
|
49 } bsw2seq1_t;
|
|
50
|
|
51 #ifdef __cplusplus
|
|
52 extern "C" {
|
|
53 #endif
|
|
54
|
|
55 bsw2opt_t *bsw2_init_opt();
|
|
56 bwtsw2_t **bsw2_core(const bntseq_t *bns, const bsw2opt_t *opt, const bwtl_t *target, const bwt_t *query, bsw2global_t *pool);
|
|
57 void bsw2_aln(const bsw2opt_t *opt, const bntseq_t *bns, bwt_t * const target, const char *fn, const char *fn2);
|
|
58 void bsw2_destroy(bwtsw2_t *b);
|
|
59
|
|
60 bsw2global_t *bsw2_global_init();
|
|
61 void bsw2_global_destroy(bsw2global_t *_pool);
|
|
62
|
|
63 void bsw2_pair(const bsw2opt_t *opt, int64_t l_pac, const uint8_t *pac, int n, bsw2seq1_t *seq, bwtsw2_t **hit);
|
|
64
|
|
65 #ifdef __cplusplus
|
|
66 }
|
|
67 #endif
|
|
68
|
|
69 #endif
|