r77: fixed an index loading bug (offset not set)
This commit is contained in:
parent
10644f2165
commit
de54c9dac2
24
align.c
24
align.c
|
|
@ -170,9 +170,11 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int
|
|||
mm_seq_rev(qs - qs0, qseq);
|
||||
mm_seq_rev(rs - rs0, tseq);
|
||||
ksw_extz2_sse(km, qs - qs0, qseq, rs - rs0, tseq, 5, mat, opt->q, opt->e, bw, opt->zdrop, KSW_EZ_EXTZ_ONLY|KSW_EZ_RIGHT|KSW_EZ_REV_CIGAR, ez);
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 1);
|
||||
r->p->score += ez->max;
|
||||
if (ez->n_cigar > 0) {
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 1);
|
||||
r->p->score += ez->max;
|
||||
}
|
||||
rs1 = rs - (ez->max_t + 1);
|
||||
qs1 = qs - (ez->max_q + 1);
|
||||
mm_seq_rev(qs - qs0, qseq);
|
||||
|
|
@ -185,8 +187,10 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int
|
|||
qseq = &qseq0[rev][qs];
|
||||
mm_idx_getseq(mi, rid, rs, re, tseq);
|
||||
ksw_extz2_sse(km, qe - qs, qseq, re - rs, tseq, 5, mat, opt->q, opt->e, bw, opt->zdrop, 0, ez);
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 0);
|
||||
if (ez->n_cigar > 0) {
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 0);
|
||||
}
|
||||
if (ez->score == KSW_NEG_INF) { // truncated by Z-drop
|
||||
int j;
|
||||
for (j = i - 1; j >= 0; --j)
|
||||
|
|
@ -197,7 +201,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int
|
|||
qe1 = qe + (ez->max_q + 1);
|
||||
mm_reg_split(r, r2, j + 1, qlen, a);
|
||||
break;
|
||||
} else {
|
||||
} else { // FIXME: in rare cases, r->p can be NULL, which leads to a segfault
|
||||
r->p->score += ez->score;
|
||||
}
|
||||
rs = re, qs = qe;
|
||||
|
|
@ -208,9 +212,11 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int
|
|||
qseq = &qseq0[rev][qe];
|
||||
mm_idx_getseq(mi, rid, re, re0, tseq);
|
||||
ksw_extz2_sse(km, qe0 - qe, qseq, re0 - re, tseq, 5, mat, opt->q, opt->e, bw, opt->zdrop, KSW_EZ_EXTZ_ONLY, ez);
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 0);
|
||||
r->p->score += ez->max;
|
||||
if (ez->n_cigar > 0) {
|
||||
mm_append_cigar(r, ez->n_cigar, ez->cigar);
|
||||
mm_update_extra(r->p, qseq, tseq, ez->n_cigar, ez->cigar, 0);
|
||||
r->p->score += ez->max;
|
||||
}
|
||||
re1 = re + (ez->max_t + 1);
|
||||
qe1 = qe + (ez->max_q + 1);
|
||||
} else if (r2->cnt == 0) {
|
||||
|
|
|
|||
2
chain.c
2
chain.c
|
|
@ -40,7 +40,7 @@ int mm_chain_dp(int max_dist, int bw, int max_skip, int min_sc, int n, mm128_t *
|
|||
for (j = i - 1; j >= st; --j) {
|
||||
int64_t dr = ri - a[j].x;
|
||||
int32_t dq = qi - (int32_t)a[j].y, dd, sc;
|
||||
if (dq <= 0 || dq > max_dist) continue;
|
||||
if (dr == 0 || dq <= 0 || dq > max_dist) continue;
|
||||
if (t[j] == i) {
|
||||
if (p[j] >= 0) t[p[j]] = i;
|
||||
if (++n_skip > max_skip) break;
|
||||
|
|
|
|||
1
index.c
1
index.c
|
|
@ -371,6 +371,7 @@ mm_idx_t *mm_idx_load(FILE *fp)
|
|||
fread(s->name, 1, l, fp);
|
||||
s->name[l] = 0;
|
||||
fread(&s->len, 4, 1, fp);
|
||||
s->offset = sum_len;
|
||||
sum_len += s->len;
|
||||
}
|
||||
for (i = 0; i < 1<<mi->b; ++i) {
|
||||
|
|
|
|||
2
main.c
2
main.c
|
|
@ -10,7 +10,7 @@
|
|||
#include "minimap.h"
|
||||
#include "mmpriv.h"
|
||||
|
||||
#define MM_VERSION "2.0-r76-pre"
|
||||
#define MM_VERSION "2.0-r77-pre"
|
||||
|
||||
void liftrlimit()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue