X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bam_rmdupse.c;h=df03717232b10f9e23abe8ae0e7eefbc5a6c7d02;hb=61a8793d24c8c2e5261443cee952a153bab82655;hp=ed0ef47e2a69209cfb4900eb7d7d5f6697a1cd75;hpb=2f8de7def998e2c804213aaf16cc42b3f4095167;p=samtools.git diff --git a/bam_rmdupse.c b/bam_rmdupse.c index ed0ef47..df03717 100644 --- a/bam_rmdupse.c +++ b/bam_rmdupse.c @@ -9,8 +9,7 @@ typedef struct { KHASH_MAP_INIT_INT(32, listelem_t) -//#define BLOCK_SIZE 65536 -#define BLOCK_SIZE 100 +#define BLOCK_SIZE 65536 typedef struct { bam1_t *b; @@ -64,12 +63,13 @@ static int fill_buf(samfile_t *in, buffer_t *buf) for (i = 0; i < c->l_qseq; ++i) e->score += qual[i] + 1; e->score = (double)e->score / sqrt(c->l_qseq + 1); is_mapped = (c->tid < 0 || c->tid >= in->header->n_targets || (c->flag&BAM_FUNMAP))? 0 : 1; + if (!is_mapped) e->score = -1; if (is_mapped && (c->flag & BAM_FREVERSE)) { e->rpos = b->core.pos + bam_calend(&b->core, bam1_cigar(b)); if (min_rpos > e->rpos) min_rpos = e->rpos; } if (buf->n >= capacity) { - if (c->pos <= min_rpos) capacity += BLOCK_SIZE; + if (is_mapped && c->pos <= min_rpos) capacity += BLOCK_SIZE; else break; } }