bwa.h 2 KB
Newer Older
1 2 3 4
#ifndef BWA_H_
#define BWA_H_

#include <stdint.h>
5 6
#include "bntseq.h"
#include "bwt.h"
7

8 9 10 11
#define BWA_IDX_BWT 0x1
#define BWA_IDX_BNS 0x2
#define BWA_IDX_PAC 0x4
#define BWA_IDX_ALL 0x7
12

13 14
#define BWA_CTL_SIZE 0x10000

15 16 17 18 19
#define BWTALGO_AUTO  0
#define BWTALGO_RB2   1
#define BWTALGO_BWTSW 2
#define BWTALGO_IS    3

20
typedef struct {
21 22 23
	bwt_t    *bwt; // FM-index
	bntseq_t *bns; // information on the reference sequences
	uint8_t  *pac; // the actual 2-bit encoded reference sequences with 'N' converted to a random base
24 25 26 27

	int    is_shm;
	int64_t l_mem;
	uint8_t  *mem;
28
} bwaidx_t;
29 30

typedef struct {
31
	int l_seq, id;
32 33
	char *name, *comment, *seq, *qual, *sam;
} bseq1_t;
34

35 36
extern int bwa_verbose;
extern char bwa_rg_id[256];
37 38 39 40 41

#ifdef __cplusplus
extern "C" {
#endif

42
	bseq1_t *bseq_read(int chunk_size, int *n_, void *ks1_, void *ks2_);
43
	void bseq_classify(int n, bseq1_t *seqs, int m[2], bseq1_t *sep[2]);
44

45
	void bwa_fill_scmat(int a, int b, int8_t mat[25]);
46
	uint32_t *bwa_gen_cigar(const int8_t mat[25], int q, int r, int w_, int64_t l_pac, const uint8_t *pac, int l_query, uint8_t *query, int64_t rb, int64_t re, int *score, int *n_cigar, int *NM);
47
	uint32_t *bwa_gen_cigar2(const int8_t mat[25], int o_del, int e_del, int o_ins, int e_ins, int w_, int64_t l_pac, const uint8_t *pac, int l_query, uint8_t *query, int64_t rb, int64_t re, int *score, int *n_cigar, int *NM);
48

49 50
	int bwa_idx_build(const char *fa, const char *prefix, int algo_type, int block_size);

51 52
	char *bwa_idx_infer_prefix(const char *hint);
	bwt_t *bwa_idx_load_bwt(const char *hint);
53

54 55
	bwaidx_t *bwa_idx_load_from_shm(const char *hint);
	bwaidx_t *bwa_idx_load_from_disk(const char *hint, int which);
56 57
	bwaidx_t *bwa_idx_load(const char *hint, int which);
	void bwa_idx_destroy(bwaidx_t *idx);
58 59
	int bwa_idx2mem(bwaidx_t *idx);
	int bwa_mem2idx(int64_t l_mem, uint8_t *mem, bwaidx_t *idx);
60

61
	void bwa_print_sam_hdr(const bntseq_t *bns, const char *hdr_line);
62
	char *bwa_set_rg(const char *s);
63
	char *bwa_insert_header(const char *s, char *hdr);
64 65 66 67 68 69

#ifdef __cplusplus
}
#endif

#endif