r96: min_cnt still wrong in chaining

This commit is contained in:
Heng Li 2017-06-28 11:03:03 -04:00
parent b696d5fe5e
commit a25866c25c
2 changed files with 4 additions and 3 deletions

View File

@ -81,7 +81,7 @@ int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int
memset(t, 0, n * 4); memset(t, 0, n * 4);
v = (int32_t*)kmalloc(km, n * 4); v = (int32_t*)kmalloc(km, n * 4);
for (i = n_v = k = 0; i < n_u; ++i) { // starting from the highest score for (i = n_v = k = 0; i < n_u; ++i) { // starting from the highest score
int32_t n_v0 = n_v; int32_t n_v0 = n_v, k0 = k;
j = (int32_t)u[i]; j = (int32_t)u[i];
do { do {
v[n_v++] = j; v[n_v++] = j;
@ -92,7 +92,8 @@ int mm_chain_dp(int max_dist, int bw, int max_skip, int min_cnt, int min_sc, int
if (n_v - n_v0 >= min_cnt) u[k++] = u[i]>>32<<32 | (n_v - n_v0); if (n_v - n_v0 >= min_cnt) u[k++] = u[i]>>32<<32 | (n_v - n_v0);
} else if ((int32_t)(u[i]>>32) - f[j] >= min_sc) { } else if ((int32_t)(u[i]>>32) - f[j] >= min_sc) {
if (n_v - n_v0 >= min_cnt) u[k++] = ((u[i]>>32) - f[j]) << 32 | (n_v - n_v0); if (n_v - n_v0 >= min_cnt) u[k++] = ((u[i]>>32) - f[j]) << 32 | (n_v - n_v0);
} else n_v = n_v0; }
if (k0 == k) n_v = n_v0; // no new chain added, reset
} }
n_u = k, *_u = u; n_u = k, *_u = u;

2
main.c
View File

@ -10,7 +10,7 @@
#include "minimap.h" #include "minimap.h"
#include "mmpriv.h" #include "mmpriv.h"
#define MM_VERSION "2.0-r94-pre" #define MM_VERSION "2.0-r96-pre"
void liftrlimit() void liftrlimit()
{ {