diff bwa-0.6.2/bwtaln.h @ 2:a294fbfcb1db draft default tip

Uploaded BWA
author ashvark
date Fri, 18 Jul 2014 07:55:59 -0400
parents dd1186b11b3b
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bwa-0.6.2/bwtaln.h	Fri Jul 18 07:55:59 2014 -0400
@@ -0,0 +1,153 @@
+#ifndef BWTALN_H
+#define BWTALN_H
+
+#include <stdint.h>
+#include "bwt.h"
+
+#define BWA_TYPE_NO_MATCH 0
+#define BWA_TYPE_UNIQUE 1
+#define BWA_TYPE_REPEAT 2
+#define BWA_TYPE_MATESW 3
+
+#define SAM_FPD   1 // paired
+#define SAM_FPP   2 // properly paired
+#define SAM_FSU   4 // self-unmapped
+#define SAM_FMU   8 // mate-unmapped
+#define SAM_FSR  16 // self on the reverse strand
+#define SAM_FMR  32 // mate on the reverse strand
+#define SAM_FR1  64 // this is read one
+#define SAM_FR2 128 // this is read two
+#define SAM_FSC 256 // secondary alignment
+
+#define BWA_AVG_ERR 0.02
+#define BWA_MIN_RDLEN 35 // for read trimming
+
+#define BWA_MAX_BCLEN 63 // maximum barcode length; 127 is the maximum
+
+#ifndef bns_pac
+#define bns_pac(pac, k) ((pac)[(k)>>2] >> ((~(k)&3)<<1) & 3)
+#endif
+
+typedef struct {
+	bwtint_t w;
+	int bid;
+} bwt_width_t;
+
+typedef struct {
+	uint32_t n_mm:16, n_gapo:8, n_gape:8;
+	int score;
+	bwtint_t k, l;
+} bwt_aln1_t;
+
+typedef uint16_t bwa_cigar_t;
+/* rgoya: If changing order of bytes, beware of operations like:
+ *     s->cigar[0] += s->full_len - s->len;
+ */
+#define CIGAR_OP_SHIFT 14
+#define CIGAR_LN_MASK 0x3fff
+
+#define __cigar_op(__cigar) ((__cigar)>>CIGAR_OP_SHIFT)
+#define __cigar_len(__cigar) ((__cigar)&CIGAR_LN_MASK)
+#define __cigar_create(__op, __len) ((__op)<<CIGAR_OP_SHIFT | (__len))
+
+typedef struct {
+	uint32_t n_cigar:15, gap:8, mm:8, strand:1;
+	bwtint_t pos;
+	bwa_cigar_t *cigar;
+} bwt_multi1_t;
+
+typedef struct {
+	char *name;
+	ubyte_t *seq, *rseq, *qual;
+	uint32_t len:20, strand:1, type:2, dummy:1, extra_flag:8;
+	uint32_t n_mm:8, n_gapo:8, n_gape:8, mapQ:8;
+	int score;
+	int clip_len;
+	// alignments in SA coordinates
+	int n_aln;
+	bwt_aln1_t *aln;
+	// multiple hits
+	int n_multi;
+	bwt_multi1_t *multi;
+	// alignment information
+	bwtint_t sa, pos;
+	uint64_t c1:28, c2:28, seQ:8; // number of top1 and top2 hits; single-end mapQ
+	int n_cigar;
+	bwa_cigar_t *cigar;
+	// for multi-threading only
+	int tid;
+	// barcode
+	char bc[BWA_MAX_BCLEN+1]; // null terminated; up to BWA_MAX_BCLEN bases
+	// NM and MD tags
+	uint32_t full_len:20, nm:12;
+	char *md;
+} bwa_seq_t;
+
+#define BWA_MODE_GAPE       0x01
+#define BWA_MODE_COMPREAD   0x02
+#define BWA_MODE_LOGGAP     0x04
+#define BWA_MODE_CFY        0x08
+#define BWA_MODE_NONSTOP    0x10
+#define BWA_MODE_BAM        0x20
+#define BWA_MODE_BAM_SE     0x40
+#define BWA_MODE_BAM_READ1  0x80
+#define BWA_MODE_BAM_READ2  0x100
+#define BWA_MODE_IL13       0x200
+
+typedef struct {
+	int s_mm, s_gapo, s_gape;
+	int mode; // bit 24-31 are the barcode length
+	int indel_end_skip, max_del_occ, max_entries;
+	float fnr;
+	int max_diff, max_gapo, max_gape;
+	int max_seed_diff, seed_len;
+	int n_threads;
+	int max_top2;
+	int trim_qual;
+} gap_opt_t;
+
+#define BWA_PET_STD   1
+#define BWA_PET_SOLID 2
+
+typedef struct {
+	int max_isize, force_isize;
+	int max_occ;
+	int n_multi, N_multi;
+	int type, is_sw, is_preload;
+	double ap_prior;
+} pe_opt_t;
+
+struct __bwa_seqio_t;
+typedef struct __bwa_seqio_t bwa_seqio_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+	gap_opt_t *gap_init_opt();
+	void bwa_aln_core(const char *prefix, const char *fn_fa, const gap_opt_t *opt);
+
+	bwa_seqio_t *bwa_seq_open(const char *fn);
+	bwa_seqio_t *bwa_bam_open(const char *fn, int which);
+	void bwa_seq_close(bwa_seqio_t *bs);
+	void seq_reverse(int len, ubyte_t *seq, int is_comp);
+	bwa_seq_t *bwa_read_seq(bwa_seqio_t *seq, int n_needed, int *n, int mode, int trim_qual);
+	void bwa_free_read_seq(int n_seqs, bwa_seq_t *seqs);
+
+	int bwa_cal_maxdiff(int l, double err, double thres);
+	void bwa_cal_sa_reg_gap(int tid, bwt_t *const bwt, int n_seqs, bwa_seq_t *seqs, const gap_opt_t *opt);
+
+	void bwa_cs2nt_core(bwa_seq_t *p, bwtint_t l_pac, ubyte_t *pac);
+
+
+	/* rgoya: Temporary clone of aln_path2cigar to accomodate for bwa_cigar_t,
+	__cigar_op and __cigar_len while keeping stdaln stand alone */
+#include "stdaln.h"
+
+	bwa_cigar_t *bwa_aln_path2cigar(const path_t *path, int path_len, int *n_cigar);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif