From eed46e802a9852c1c767f9d761412b43270d01a7 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Mon, 24 Oct 2011 14:09:05 -0400 Subject: [PATCH] fixed a bug about reverse alignment --- bwtsw2_aux.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bwtsw2_aux.c b/bwtsw2_aux.c index 5637b70..ce4324d 100644 --- a/bwtsw2_aux.c +++ b/bwtsw2_aux.c @@ -518,8 +518,13 @@ static void bsw2_aln_core(int tid, bsw2seq_t *_seq, const bsw2opt_t *_opt, const if (b[0]->hits[k].n_seeds < opt.t_seeds) break; if (k < b[0]->n) { b[1] = bsw2_aln1_core(&opt, bns, pac, target, l, rseq, pool); - for (i = 0; i < b[1]->n; ++i) // flip the strand flag - b[1]->hits[i].flag ^= 0x10, b[1]->hits[i].is_rev ^= 1; + for (i = 0; i < b[1]->n; ++i) { + bsw2hit_t *p = &b[1]->hits[i]; + int x = p->beg; + p->flag ^= 0x10, p->is_rev ^= 1; // flip the strand + p->beg = l - p->end; + p->end = l - x; + } flag_fr(b); merge_hits(b, l, 0); bsw2_resolve_duphits(0, 0, b[0], 0);