From 824712a4eef10d54b0a4140f8c0a4c112305aa91 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Sun, 10 Dec 2017 17:54:50 -0500 Subject: [PATCH] r617: removed some unused code --- align.c | 32 ++++++++++++-------------------- main.c | 2 +- map.c | 2 +- mmpriv.h | 2 +- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/align.c b/align.c index 7a8e206..b526a09 100644 --- a/align.c +++ b/align.c @@ -120,7 +120,7 @@ static void mm_fix_cigar(mm_reg1_t *r, const uint8_t *qseq, const uint8_t *tseq, } } -static void mm_update_extra(mm_reg1_t *r, const uint8_t *qseq, const uint8_t *qual, const uint8_t *tseq, const int8_t *mat, int8_t q, int8_t e) +static void mm_update_extra(mm_reg1_t *r, const uint8_t *qseq, const uint8_t *tseq, const int8_t *mat, int8_t q, int8_t e) { uint32_t k, l, toff = 0, qoff = 0; int32_t s = 0, max = 0, qshift, tshift; @@ -341,7 +341,7 @@ static void mm_max_stretch(const mm_mapopt_t *opt, const mm_reg1_t *r, const mm1 *as = max_i, *cnt = max_len; } -static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, uint8_t *qseq0[2], uint8_t *qual0[2], mm_reg1_t *r, mm_reg1_t *r2, int n_a, mm128_t *a, ksw_extz_t *ez, int splice_flag) +static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, uint8_t *qseq0[2], mm_reg1_t *r, mm_reg1_t *r2, int n_a, mm128_t *a, ksw_extz_t *ez, int splice_flag) { int is_sr = !!(opt->flag & MM_F_SR), is_splice = !!(opt->flag & MM_F_SPLICE); int32_t rid = a[r->as].x<<1>>33, rev = a[r->as].x>>63, as1, cnt1; @@ -533,7 +533,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int assert(re1 - rs1 <= re0 - rs0); if (r->p) { mm_idx_getseq(mi, rid, rs1, re1, tseq); - mm_update_extra(r, &qseq0[r->rev][qs1], qual0[r->rev]? &qual0[r->rev][qs1] : 0, tseq, mat, opt->q, opt->e); + mm_update_extra(r, &qseq0[r->rev][qs1], tseq, mat, opt->q, opt->e); if (rev && r->p->trans_strand) r->p->trans_strand ^= 3; // flip to the read strand } @@ -541,10 +541,10 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int kfree(km, tseq); } -static int mm_align1_inv(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, uint8_t *qseq0[2], uint8_t *qual0[2], const mm_reg1_t *r1, const mm_reg1_t *r2, mm_reg1_t *r_inv, ksw_extz_t *ez) +static int mm_align1_inv(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, uint8_t *qseq0[2], const mm_reg1_t *r1, const mm_reg1_t *r2, mm_reg1_t *r_inv, ksw_extz_t *ez) { int tl, ql, score, ret = 0, q_off, t_off; - uint8_t *tseq, *qseq, *qual; + uint8_t *tseq, *qseq; int8_t mat[25]; void *qp; @@ -562,7 +562,6 @@ static int mm_align1_inv(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, i tseq = (uint8_t*)kmalloc(km, tl); mm_idx_getseq(mi, r1->rid, r1->re, r2->rs, tseq); qseq = &qseq0[!r1->rev][qlen - r2->qs]; - qual = qual0[!r1->rev]? &qseq0[!r1->rev][qlen - r2->qs] : 0; mm_seq_rev(ql, qseq); mm_seq_rev(tl, tseq); @@ -585,7 +584,7 @@ static int mm_align1_inv(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, i r_inv->div = -1.0f; r_inv->qs = r1->qe + q_off, r_inv->qe = r_inv->qs + ez->max_q + 1; r_inv->rs = r1->re + t_off, r_inv->re = r_inv->rs + ez->max_t + 1; - mm_update_extra(r_inv, &qseq[q_off], qual? &qual[q_off] : 0, &tseq[t_off], mat, opt->q, opt->e); + mm_update_extra(r_inv, &qseq[q_off], &tseq[t_off], mat, opt->q, opt->e); ret = 1; end_align1_inv: kfree(km, tseq); @@ -602,11 +601,11 @@ static inline mm_reg1_t *mm_insert_reg(const mm_reg1_t *r, int i, int *n_regs, m return regs; } -mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, const char *qstr, const char *qual, int *n_regs_, mm_reg1_t *regs, mm128_t *a) +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) { extern unsigned char seq_nt4_table[256]; int32_t i, n_regs = *n_regs_, n_a; - uint8_t *qseq0[2], *qual0[2]; + uint8_t *qseq0[2]; ksw_extz_t ez; // encode the query sequence @@ -616,12 +615,6 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m qseq0[0][i] = seq_nt4_table[(uint8_t)qstr[i]]; qseq0[1][qlen - 1 - i] = qseq0[0][i] < 4? 3 - qseq0[0][i] : 4; } - if (qual) { - qual0[0] = (uint8_t*)kmalloc(km, qlen * 2); - qual0[1] = qual0[0] + qlen; - for (i = 0; i < qlen; ++i) - qual0[0][i] = qual0[1][qlen - 1 - i] = qual[i] - 33; - } else qual0[0] = qual0[1] = 0; // align through seed hits n_a = mm_squeeze_a(km, n_regs, regs, a); @@ -632,8 +625,8 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m mm_reg1_t s[2], s2[2]; int which, trans_strand; s[0] = s[1] = regs[i]; - mm_align1(km, opt, mi, qlen, qseq0, qual0, &s[0], &s2[0], n_a, a, &ez, MM_F_SPLICE_FOR); - mm_align1(km, opt, mi, qlen, qseq0, qual0, &s[1], &s2[1], n_a, a, &ez, MM_F_SPLICE_REV); + mm_align1(km, opt, mi, qlen, qseq0, &s[0], &s2[0], n_a, a, &ez, MM_F_SPLICE_FOR); + mm_align1(km, opt, mi, qlen, qseq0, &s[1], &s2[1], n_a, a, &ez, MM_F_SPLICE_REV); if (s[0].p->dp_score > s[1].p->dp_score) which = 0, trans_strand = 1; else if (s[0].p->dp_score < s[1].p->dp_score) which = 1, trans_strand = 2; else trans_strand = 3, which = (qlen + s[0].p->dp_score) & 1; // randomly choose a strand, effectively @@ -646,13 +639,13 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m } regs[i].p->trans_strand = trans_strand; } else { // one round of alignment - mm_align1(km, opt, mi, qlen, qseq0, qual0, ®s[i], &r2, n_a, a, &ez, opt->flag); + mm_align1(km, opt, mi, qlen, qseq0, ®s[i], &r2, n_a, a, &ez, opt->flag); if (opt->flag&MM_F_SPLICE) regs[i].p->trans_strand = opt->flag&MM_F_SPLICE_FOR? 1 : 2; } if (r2.cnt > 0) regs = mm_insert_reg(&r2, i, &n_regs, regs); if (!(opt->flag&MM_F_SPLICE) && !(opt->flag&MM_F_SR) && i > 0) { // don't try inversion alignment for -xsplice or -xsr - if (mm_align1_inv(km, opt, mi, qlen, qseq0, qual0, ®s[i-1], ®s[i], &r2, &ez)) { + if (mm_align1_inv(km, opt, mi, qlen, qseq0, ®s[i-1], ®s[i], &r2, &ez)) { regs = mm_insert_reg(&r2, i, &n_regs, regs); ++i; // skip the inserted INV alignment } @@ -660,7 +653,6 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m } *n_regs_ = n_regs; kfree(km, qseq0[0]); - if (qual0[0]) kfree(km, qual0[0]); kfree(km, ez.cigar); mm_filter_regs(km, opt, n_regs_, regs); mm_hit_sort_by_dp(km, n_regs_, regs); diff --git a/main.c b/main.c index 926a68c..8ec4428 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ #include "mmpriv.h" #include "getopt.h" -#define MM_VERSION "2.5-r611-dirty" +#define MM_VERSION "2.5-r617-dirty" #ifdef __linux__ #include diff --git a/map.c b/map.c index ac21564..89bddf2 100644 --- a/map.c +++ b/map.c @@ -264,7 +264,7 @@ static void chain_post(const mm_mapopt_t *opt, int max_chain_gap_ref, const mm_i static mm_reg1_t *align_regs(const mm_mapopt_t *opt, const mm_idx_t *mi, void *km, int qlen, const char *seq, const char *qual, int *n_regs, mm_reg1_t *regs, mm128_t *a) { if (!(opt->flag & MM_F_CIGAR)) return regs; - regs = mm_align_skeleton(km, opt, mi, qlen, seq, qual, n_regs, regs, a); // this calls mm_filter_regs() + regs = mm_align_skeleton(km, opt, mi, qlen, seq, n_regs, regs, a); // this calls mm_filter_regs() if (!(opt->flag & MM_F_AVA)) { mm_set_parent(km, opt->mask_level, *n_regs, regs, opt->a * 2 + opt->b); mm_select_sub(km, opt->pri_ratio, mi->k*2, opt->best_n, n_regs, regs); diff --git a/mmpriv.h b/mmpriv.h index cf474a3..41176ce 100644 --- a/mmpriv.h +++ b/mmpriv.h @@ -64,7 +64,7 @@ const uint64_t *mm_idx_get(const mm_idx_t *mi, uint64_t minier, int *n); int mm_idx_getseq(const mm_idx_t *mi, uint32_t rid, uint32_t st, uint32_t en, uint8_t *seq); int32_t mm_idx_cal_max_occ(const mm_idx_t *mi, float f); mm128_t *mm_chain_dp(int max_dist_x, int max_dist_y, int bw, int max_skip, int min_cnt, int min_sc, int is_cdna, int n_segs, int64_t n, mm128_t *a, int *n_u_, 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, const char *qual, int *n_regs_, mm_reg1_t *regs, mm128_t *a); +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); mm_reg1_t *mm_gen_regs(void *km, uint32_t hash, int qlen, int n_u, uint64_t *u, mm128_t *a); void mm_split_reg(mm_reg1_t *r, mm_reg1_t *r2, int n, int qlen, mm128_t *a);