From e6adb673f939d15084faab700d7305d1a2c924de Mon Sep 17 00:00:00 2001 From: Heng Li Date: Tue, 6 Jun 2017 15:45:42 -0400 Subject: [PATCH] fixed a stupid bug --- chain.c | 6 +++--- map.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chain.c b/chain.c index 7f3ce28..6ecd6ed 100644 --- a/chain.c +++ b/chain.c @@ -21,7 +21,7 @@ static inline int ilog2_32(uint32_t v) int mm_chain_dp(int max_dist, int bw, int max_skip, int min_sc, int n, mm128_t *a, uint64_t **_u, void *km) { - int32_t st = 0, i, j, k, *p, *f, *t, *v, n_u, n_v; + int32_t st = 0, i, j, k, *f, *p, *t, *v, n_u, n_v; uint64_t *u; mm128_t *b; @@ -71,7 +71,7 @@ int mm_chain_dp(int max_dist, int bw, int max_skip, int min_sc, int n, mm128_t * radix_sort_64(u, u + n_u); for (i = 0; i < n_u>>1; ++i) { // reverse, s.t. the highest scoring chain is the first uint64_t t = u[i]; - u[i] = u[n_u - 1], u[n_u - 1] = t; + u[i] = u[n_u - i - 1], u[n_u - i - 1] = t; } // backtrack @@ -105,6 +105,6 @@ int mm_chain_dp(int max_dist, int bw, int max_skip, int min_sc, int n, mm128_t * for (j = 0; j < (int32_t)u[i]; ++j) b[k] = a[v[k]], ++k; memcpy(a, b, n_v * sizeof(mm128_t)); - kfree(km, b); + kfree(km, v); kfree(km, b); return n_u; } diff --git a/map.c b/map.c index ea89c24..e41141b 100644 --- a/map.c +++ b/map.c @@ -231,7 +231,7 @@ void mm_map_frag(const mm_mapopt_t *opt, const mm_idx_t *mi, mm_tbuf_t *b, uint3 printf("%s\t%d", qname, n_u); for (i = j = 0; i < n_u; ++i) { int n = (uint32_t)u[i]; - printf("\t%d@%s:%d-%d", (uint32_t)(u[i]>>32), mi->seq[a[j].x<<1>>33].name, (uint32_t)a[j].x, (uint32_t)a[j+n-1].x); + printf("\t%d/%d@%s:%d-%d", (uint32_t)(u[i]>>32), n, mi->seq[a[j].x<<1>>33].name, (uint32_t)a[j].x, (uint32_t)a[j+n-1].x); j += n; } printf("\n");