From 9f4309c37666b6e2ca833a03e92a2b166fb3252a Mon Sep 17 00:00:00 2001 From: Heng Li Date: Fri, 11 May 2018 10:25:18 -0400 Subject: [PATCH] r777: avoid skipping too many seeds --- align.c | 6 +++--- main.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/align.c b/align.c index 3ee7a7c..52fc260 100644 --- a/align.c +++ b/align.c @@ -325,7 +325,7 @@ static void mm_filter_bad_seeds(void *km, int as1, int cnt1, mm128_t *a, int min kfree(km, K); } -static void mm_filter_bad_seeds_alt(void *km, int as1, int cnt1, mm128_t *a, int min_gap) +static void mm_filter_bad_seeds_alt(void *km, int as1, int cnt1, mm128_t *a, int min_gap, int max_ext) { int n, k, *K; K = collect_long_gaps(km, as1, cnt1, a, min_gap, &n); @@ -336,7 +336,7 @@ static void mm_filter_bad_seeds_alt(void *km, int as1, int cnt1, mm128_t *a, int int re1 = (int32_t)a[as1 + i].x; int qe1 = (int32_t)a[as1 + i].y; gap1 = gap1 > 0? gap1 : -gap1; - for (l = k + 1; l < n; ++l) { + for (l = k + 1; l < n && a[as1 + K[l]].y - a[as1 + i].y <= max_ext; ++l) { int j = K[l]; int gap2 = ((int32_t)a[as1 + j].y - a[as1 + j - 1].y) - ((int32_t)a[as1 + j].x - a[as1 + j - 1].x); int q_span_pre = a[as1 + j - 1].y >> 32 & 0xff; @@ -496,7 +496,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int mm_fix_bad_ends(r, a, opt->bw, opt->min_chain_score * 2, &as1, &cnt1); } mm_filter_bad_seeds(km, as1, cnt1, a, 10, 40, opt->max_gap>>1, 10); - mm_filter_bad_seeds_alt(km, as1, cnt1, a, 30); + mm_filter_bad_seeds_alt(km, as1, cnt1, a, 30, opt->max_gap); mm_adjust_minier(mi, qseq0, &a[as1], &rs, &qs); mm_adjust_minier(mi, qseq0, &a[as1 + cnt1 - 1], &re, &qe); } diff --git a/main.c b/main.c index 277ce44..28228f7 100644 --- a/main.c +++ b/main.c @@ -10,7 +10,7 @@ #include "getopt.h" #endif -#define MM_VERSION "2.10-r774-dirty" +#define MM_VERSION "2.10-r777-dirty" #ifdef __linux__ #include