avoid contained hits due to split
This commit is contained in:
parent
f20d550a59
commit
56364200c8
22
align.c
22
align.c
|
|
@ -142,15 +142,21 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int
|
||||||
mm_adjust_minier(mi, qseq0, &a[r->as], &rs, &qs);
|
mm_adjust_minier(mi, qseq0, &a[r->as], &rs, &qs);
|
||||||
mm_adjust_minier(mi, qseq0, &a[r->as + r->cnt - 1], &re, &qe);
|
mm_adjust_minier(mi, qseq0, &a[r->as + r->cnt - 1], &re, &qe);
|
||||||
|
|
||||||
if (qs > 0 && rs > 0) { // actually this is always true
|
// compute rs0 and qs0
|
||||||
l = qs < opt->max_gap? qs : opt->max_gap;
|
if (r->split && r->as > 0) {
|
||||||
qs0 = qs - l;
|
mm_adjust_minier(mi, qseq0, &a[r->as-1], &rs0, &qs0);
|
||||||
l += (l * opt->a - opt->q) / opt->e;
|
} else {
|
||||||
l = l < opt->max_gap? l : opt->max_gap;
|
if (qs > 0 && rs > 0) { // actually this is always true
|
||||||
l = l < rs? l : rs;
|
l = qs < opt->max_gap? qs : opt->max_gap;
|
||||||
rs0 = rs - l;
|
qs0 = qs - l;
|
||||||
} else rs0 = rs, qs0 = qs;
|
l += (l * opt->a - opt->q) / opt->e;
|
||||||
|
l = l < opt->max_gap? l : opt->max_gap;
|
||||||
|
l = l < rs? l : rs;
|
||||||
|
rs0 = rs - l;
|
||||||
|
} else rs0 = rs, qs0 = qs;
|
||||||
|
|
||||||
|
}
|
||||||
|
// compute re0 and qe0
|
||||||
if (qe < qlen && re < mi->seq[rid].len) {
|
if (qe < qlen && re < mi->seq[rid].len) {
|
||||||
l = qlen - qe < opt->max_gap? qlen - qe : opt->max_gap;
|
l = qlen - qe < opt->max_gap? qlen - qe : opt->max_gap;
|
||||||
qe0 = qe + l;
|
qe0 = qe + l;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue