From f96994b36454ae81f5f9c62e605cc171f65057a1 Mon Sep 17 00:00:00 2001 From: Henry Amrhein Date: Sat, 22 Dec 2012 01:18:01 -0800 Subject: [PATCH] updated main loop to not duplicate hash key --- bam_calnh.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/bam_calnh.c b/bam_calnh.c index c416af4..40ce683 100644 --- a/bam_calnh.c +++ b/bam_calnh.c @@ -12,7 +12,6 @@ bam_calnh_core(samfile_t *in, samfile_t *out) bam1_t *b; khint_t k; uint8_t *oldnh; - char *qn = NULL; khash_t(QNH) *qnh; int ret; int64_t savepos; @@ -22,7 +21,7 @@ bam_calnh_core(samfile_t *in, samfile_t *out) if (savepos < 0) { - fprintf(stderr, "[bam_calnh_core] bam_tell failure\n"); + fprintf(stderr, "[%s] bam_tell failure.\n", __func__); return 1; } @@ -31,14 +30,10 @@ bam_calnh_core(samfile_t *in, samfile_t *out) while (samread(in, b) >= 0) { - qn = strdup(bam1_qname(b)); - k = kh_put(QNH, qnh, qn, &ret); + k = kh_put(QNH, qnh, bam1_qname(b), &ret); if (ret == 0) - { kh_val(qnh, k) += 1; - free(qn); - } else kh_val(qnh, k) = 1; @@ -46,22 +41,20 @@ bam_calnh_core(samfile_t *in, samfile_t *out) if (bam_seek(in->x.bam, savepos, SEEK_SET) < 0) { - fprintf(stderr, "[bam_calnh_core] bam_seek failure\n"); + fprintf(stderr, "[%s] bam_seek failure.\n", __func__); return 1; } - while (samread(in, b) >= 0) { k = kh_get(QNH, qnh, bam1_qname(b)); oldnh = bam_aux_get(b, "NH"); - if (!(oldnh)) - { - val = kh_val(qnh, k); - bam_aux_append(b, "NH", 'i', 4, (uint8_t *)&val); - } + if (oldnh) + bam_aux_del(b, oldnh); + val = kh_val(qnh, k); + bam_aux_append(b, "NH", 'i', 4, (uint8_t *)&val); samwrite(out, b); } -- 2.30.2