From c8d122bcdb893d4622c596566952387914e36de0 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Thu, 29 Jun 2017 11:11:15 -0400 Subject: [PATCH] backup --- chain.c | 7 ++++--- ksw2_extz2_sse.c | 2 +- map.c | 10 ++++++++-- minimap.h | 10 ++++++++-- mmpriv.h | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/chain.c b/chain.c index ff00832..e838d9c 100644 --- a/chain.c +++ b/chain.c @@ -19,9 +19,10 @@ static inline int ilog2_32(uint32_t v) return (t = v>>8) ? 8 + LogTable256[t] : LogTable256[v]; } -int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int n, mm128_t *a, uint64_t **_u, void *km) -{ - int32_t st = 0, i, j, k, *f, *p, *t, *v, n_u, n_v; +int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int64_t n, mm128_t *a, uint64_t **_u, void *km) +{ // TODO: make sure this works when n has more than 32 bits + int32_t st = 0, j, k, *f, *p, *t, *v, n_u, n_v; + int64_t i; uint64_t *u; mm128_t *b; diff --git a/ksw2_extz2_sse.c b/ksw2_extz2_sse.c index af5d7a3..d812c28 100644 --- a/ksw2_extz2_sse.c +++ b/ksw2_extz2_sse.c @@ -71,7 +71,7 @@ void ksw_extz2_sse(void *km, int qlen, const uint8_t *query, int tlen, const uin wl = wr = w; tlen_ = (tlen + 15) / 16; - n_col_ = ((w + 1 < tlen? w + 1 : tlen) + 15) / 16 + 1; + n_col_ = ((w + 1 < tlen? (w + 1 < qlen? w + 1 : qlen): tlen) + 15) / 16 + 1; qlen_ = (qlen + 15) / 16; for (t = 1, max_sc = mat[0]; t < m * m; ++t) max_sc = max_sc > mat[t]? max_sc : mat[t]; diff --git a/map.c b/map.c index ca3b757..c3535c9 100644 --- a/map.c +++ b/map.c @@ -23,6 +23,10 @@ void mm_mapopt_init(mm_mapopt_t *opt) opt->pri_ratio = 2.0f; opt->mask_level = 0.5f; + opt->max_join_long = 20000; + opt->max_join_short = 2000; + opt->min_join_flank_sc = 1000; + opt->a = 1, opt->b = 1, opt->q = 1, opt->e = 1; opt->zdrop = 100; opt->min_dp_score = 0; @@ -223,7 +227,8 @@ void mm_select_sub(float mask_level, float pri_ratio, int *n_, mm_reg1_t *r, voi mm_reg1_t *mm_map_frag(const mm_mapopt_t *opt, const mm_idx_t *mi, mm_tbuf_t *b, uint32_t m_st, uint32_t m_en, const char *qname, int qlen, const char *seq, int *n_regs) { - int i, n = m_en - m_st, j, n_a, n_u; + int i, n = m_en - m_st, j, n_u; + int64_t n_a; uint64_t *u; mm_match_t *m; mm128_t *a; @@ -293,7 +298,8 @@ mm_reg1_t *mm_map_frag(const mm_mapopt_t *opt, const mm_idx_t *mi, mm_tbuf_t *b, n_u = mm_chain_dp(opt->max_gap, opt->bw, opt->max_chain_skip, opt->min_cnt, opt->min_chain_score, n_a, a, &u, b->km); regs = mm_gen_reg(qlen, n_u, u, a); *n_regs = n_u; - mm_select_sub(opt->mask_level, opt->pri_ratio, n_regs, regs, b->km); + if (!(opt->flag & MM_F_AVA)) // don't choose primary mapping(s) for read overlap + mm_select_sub(opt->mask_level, opt->pri_ratio, n_regs, regs, b->km); if (opt->flag & MM_F_CIGAR) regs = mm_align_skeleton(b->km, opt, mi, qlen, seq, n_regs, regs, a); diff --git a/minimap.h b/minimap.h index 4ba31cf..13fc7d4 100644 --- a/minimap.h +++ b/minimap.h @@ -69,20 +69,26 @@ typedef struct { float mid_occ_frac; int sdust_thres; // score threshold for SDUST; 0 to disable int flag; // see MM_F_* macros + int bw; // bandwidth int max_gap; // break a chain if there are no minimizers in a max_gap window int max_chain_skip; int min_cnt; int min_chain_score; - int min_dp_score; + float pri_ratio; float mask_level; + + int max_join_long, max_join_short; + int min_join_flank_sc; + int a, b, q, e; // matching score, mismatch, gap-open and gap-ext penalties int zdrop; + int min_dp_score; + int min_ksw_len; int max_occ; int mid_occ; - int min_ksw_len; } mm_mapopt_t; extern int mm_verbose; diff --git a/mmpriv.h b/mmpriv.h index 164e050..dd1a4d0 100644 --- a/mmpriv.h +++ b/mmpriv.h @@ -30,7 +30,7 @@ uint32_t ks_ksmall_uint32_t(size_t n, uint32_t arr[], size_t kk); void mm_write_paf(kstring_t *s, const mm_idx_t *mi, bseq1_t *t, int which, mm_reg1_t *r); void mm_write_sam(kstring_t *s, const mm_idx_t *mi, bseq1_t *t, int which, mm_reg1_t *r); -int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int n, mm128_t *a, uint64_t **_u, void *km); +int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int64_t n, mm128_t *a, uint64_t **_u, void *km); mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, const char *qstr, int *n_regs_, mm_reg1_t *regs, mm128_t *a); #ifdef __cplusplus