diff --git a/chain.c b/chain.c index 102907e..45801b7 100644 --- a/chain.c +++ b/chain.c @@ -69,11 +69,15 @@ int mm_chain_dp(int match_len, int max_dist, int bw, int max_skip, int min_sc, i if (t[i] == 0 && f[i] >= min_sc) u[n_u++] = (uint64_t)f[i] << 32 | i; 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; + } // backtrack memset(t, 0, n * 4); v = (int32_t*)kmalloc(km, n * 4); - for (i = n_u - 1, n_v = k = 0; i >= 0; --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; j = (int32_t)u[i]; do { diff --git a/index.c b/index.c index ab9d63d..e89c2f2 100644 --- a/index.c +++ b/index.c @@ -63,6 +63,7 @@ void mm_idx_stat(const mm_idx_t *mi) { int i, n = 0, n1 = 0; uint64_t sum = 0, len = 0; + fprintf(stderr, "[M::%s] kmer size: %d; skip: %d; is_HPC: %d; #seq: %d\n", __func__, mi->k, mi->w, mi->is_hpc, mi->n_seq); for (i = 0; i < mi->n_seq; ++i) len += mi->seq[i].len; for (i = 0; i < 1<b; ++i) diff --git a/main.c b/main.c index 662eb6a..27f36a6 100644 --- a/main.c +++ b/main.c @@ -94,11 +94,11 @@ int main(int argc, char *argv[]) if (w < 0) w = (int)(.6666667 * k + .499); if (argc == optind) { - fprintf(stderr, "Usage: minimap2 [options] [query.fa] [...]\n"); + fprintf(stderr, "Usage: minimap2 [options] | [query.fa] [...]\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " Indexing:\n"); fprintf(stderr, " -H use homopolymer-compressed k-mer\n"); - fprintf(stderr, " -k INT k-mer size [%d]\n", k); + fprintf(stderr, " -k INT k-mer size (no larger than 28) [%d]\n", k); fprintf(stderr, " -w INT minizer window size [{-k}*2/3]\n"); fprintf(stderr, " -I NUM split index for every ~NUM input bases [4G]\n"); fprintf(stderr, " -d FILE dump index to FILE []\n");