From c29b176cb6412fc9b2f6fafaa11e7bd4606334ff Mon Sep 17 00:00:00 2001 From: Heng Li Date: Tue, 12 Mar 2013 00:14:36 -0400 Subject: [PATCH] r362: bugfix - occasionally wrong TLEN Use the 0.7.2 way to compute TLEN --- bwamem.c | 7 ++++--- main.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bwamem.c b/bwamem.c index 7925dee..924c97f 100644 --- a/bwamem.c +++ b/bwamem.c @@ -657,9 +657,10 @@ void mem_aln2sam(const bntseq_t *bns, kstring_t *str, bseq1_t *s, int n, const m kputc('\t', str); kputl(m->pos + 1, str); kputc('\t', str); if (p->rid == m->rid) { - int64_t p0 = p->pos + (p->is_rev? get_rlen(p->n_cigar, p->cigar) : 0); - int64_t p1 = m->pos + (m->is_rev? get_rlen(m->n_cigar, m->cigar) : 0); - kputw(m->n_cigar && p->n_cigar? p1 - p0 : 0, str); // compute TLEN if both ends mapped; otherwise, set to zero + int64_t p0 = p->pos + (p->is_rev? get_rlen(p->n_cigar, p->cigar) - 1 : 0); + int64_t p1 = m->pos + (m->is_rev? get_rlen(m->n_cigar, m->cigar) - 1 : 0); + if (m->n_cigar == 0 || p->n_cigar == 0) kputc('0', str); + else kputl(-(p0 - p1 + (p0 > p1? 1 : p0 < p1? -1 : 0)), str); } else kputc('0', str); } else kputsn("*\t0\t0", 5, str); kputc('\t', str); diff --git a/main.c b/main.c index 26e6661..b749dfc 100644 --- a/main.c +++ b/main.c @@ -3,7 +3,7 @@ #include "utils.h" #ifndef PACKAGE_VERSION -#define PACKAGE_VERSION "0.7.2-r361-beta" +#define PACKAGE_VERSION "0.7.2-r362-beta" #endif int bwa_fa2pac(int argc, char *argv[]);