Skip to content

Commit 34a4119

Browse files
committed
r1051: added two internal parameters
rmq_rescue_size and rmq_rescue_ratio
1 parent 9626b3e commit 34a4119

File tree

5 files changed

+9
-3
lines changed

5 files changed

+9
-3
lines changed

main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include "mmpriv.h"
88
#include "ketopt.h"
99

10-
#define MM_VERSION "2.18-r1050-dirty"
10+
#define MM_VERSION "2.18-r1051-dirty"
1111

1212
#ifdef __linux__
1313
#include <sys/resource.h>

map.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,9 @@ void mm_map_frag(const mm_idx_t *mi, int n_segs, const int *qlens, const char **
300300
a = mg_lchain_dp(max_chain_gap_ref, max_chain_gap_qry, opt->bw, opt->max_chain_skip, opt->max_chain_iter, opt->min_cnt, opt->min_chain_score,
301301
opt->chain_gap_scale * 0.01 * mi->k, 0.0f, is_splice, n_segs, n_a, a, &n_regs0, &u, b->km);
302302
}
303-
} else if (opt->bw_long > opt->bw && !(opt->flag & (MM_F_RMQ|MM_F_NO_LJOIN)) && n_segs == 1 && n_regs0 > 1) {
303+
} else if (opt->bw_long > opt->bw && (opt->flag & (MM_F_RMQ|MM_F_NO_LJOIN)) == 0 && n_segs == 1 && n_regs0 > 1) {
304304
int32_t st = (int32_t)a[0].y, en = (int32_t)a[(int32_t)u[0] - 1].y;
305-
if (qlen_sum - (en - st) > 1000 || en - st > qlen_sum * .1) {
305+
if (qlen_sum - (en - st) > opt->rmq_rescue_size || en - st > qlen_sum * opt->rmq_rescue_ratio) {
306306
int32_t i;
307307
for (i = 0, n_a = 0; i < n_regs0; ++i) n_a += (int32_t)u[i];
308308
kfree(b->km, u);

minimap.h

+2
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ typedef struct {
122122
int min_chain_score; // min chaining score
123123
float chain_gap_scale;
124124
int rmq_size_cap, rmq_inner_dist;
125+
int rmq_rescue_size;
126+
float rmq_rescue_ratio;
125127

126128
float mask_level;
127129
int mask_len;

options.c

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ void mm_mapopt_init(mm_mapopt_t *opt)
2929
opt->max_chain_iter = 5000;
3030
opt->rmq_inner_dist = 1000;
3131
opt->rmq_size_cap = 100000;
32+
opt->rmq_rescue_size = 1000;
33+
opt->rmq_rescue_ratio = 0.1f;
3234
opt->chain_gap_scale = 0.8f;
3335
opt->max_max_occ = 4095;
3436
opt->occ_dist = 500;

python/cmappy.pxd

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ cdef extern from "minimap.h":
2424
int min_chain_score
2525
float chain_gap_scale
2626
int rmq_size_cap, rmq_inner_dist
27+
int rmq_rescue_size
28+
float rmq_rescue_ratio
2729

2830
float mask_level
2931
int mask_len

0 commit comments

Comments
 (0)