Mercurial > repos > ashvark > qiime_1_8_0
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