mirror of
https://github.com/lh3/minimap2.git
synced 2026-10-07 23:58:12 +08:00
fixed a bug in chaining
This commit is contained in:
@@ -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)
|
if (t[i] == 0 && f[i] >= min_sc)
|
||||||
u[n_u++] = (uint64_t)f[i] << 32 | i;
|
u[n_u++] = (uint64_t)f[i] << 32 | i;
|
||||||
radix_sort_64(u, u + n_u);
|
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
|
// backtrack
|
||||||
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_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;
|
int32_t n_v0 = n_v;
|
||||||
j = (int32_t)u[i];
|
j = (int32_t)u[i];
|
||||||
do {
|
do {
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ void mm_idx_stat(const mm_idx_t *mi)
|
|||||||
{
|
{
|
||||||
int i, n = 0, n1 = 0;
|
int i, n = 0, n1 = 0;
|
||||||
uint64_t sum = 0, len = 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)
|
for (i = 0; i < mi->n_seq; ++i)
|
||||||
len += mi->seq[i].len;
|
len += mi->seq[i].len;
|
||||||
for (i = 0; i < 1<<mi->b; ++i)
|
for (i = 0; i < 1<<mi->b; ++i)
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ int main(int argc, char *argv[])
|
|||||||
if (w < 0) w = (int)(.6666667 * k + .499);
|
if (w < 0) w = (int)(.6666667 * k + .499);
|
||||||
|
|
||||||
if (argc == optind) {
|
if (argc == optind) {
|
||||||
fprintf(stderr, "Usage: minimap2 [options] <target.fa> [query.fa] [...]\n");
|
fprintf(stderr, "Usage: minimap2 [options] <target.fa>|<target.idx> [query.fa] [...]\n");
|
||||||
fprintf(stderr, "Options:\n");
|
fprintf(stderr, "Options:\n");
|
||||||
fprintf(stderr, " Indexing:\n");
|
fprintf(stderr, " Indexing:\n");
|
||||||
fprintf(stderr, " -H use homopolymer-compressed k-mer\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, " -w INT minizer window size [{-k}*2/3]\n");
|
||||||
fprintf(stderr, " -I NUM split index for every ~NUM input bases [4G]\n");
|
fprintf(stderr, " -I NUM split index for every ~NUM input bases [4G]\n");
|
||||||
fprintf(stderr, " -d FILE dump index to FILE []\n");
|
fprintf(stderr, " -d FILE dump index to FILE []\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user