X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bam_stat.c;h=ea9deee9d712c71bfd51f7574a5cae055a2c2ace;hb=b6f550edaa9384857879894bf01399fad76dac37;hp=a4522daa49257b920ab26586a6062d046a26d9e3;hpb=02884d7b923597d15ccecd598e73675b5074a1eb;p=samtools.git diff --git a/bam_stat.c b/bam_stat.c index a4522da..ea9deee 100644 --- a/bam_stat.c +++ b/bam_stat.c @@ -1,3 +1,5 @@ +#include +#include #include "bam.h" typedef struct { @@ -14,7 +16,7 @@ typedef struct { if ((c)->flag & BAM_FPROPER_PAIR) ++(s)->n_pair_good; \ if ((c)->flag & BAM_FREAD1) ++(s)->n_read1; \ if ((c)->flag & BAM_FREAD2) ++(s)->n_read2; \ - if ((c)->flag & BAM_FMUNMAP) ++(s)->n_sgltn; \ + if (((c)->flag & BAM_FMUNMAP) && !((c)->flag & BAM_FUNMAP)) ++(s)->n_sgltn; \ if (!((c)->flag & BAM_FUNMAP) && !((c)->flag & BAM_FMUNMAP)) { \ ++(s)->n_pair_map; \ if ((c)->mtid != (c)->tid) { \ @@ -33,13 +35,15 @@ bam_flagstat_t *bam_flagstat_core(bamFile fp) bam_flagstat_t *s; bam1_t *b; bam1_core_t *c; + int ret; s = (bam_flagstat_t*)calloc(1, sizeof(bam_flagstat_t)); b = bam_init1(); c = &b->core; - while (bam_read1(fp, b) >= 0) { + while ((ret = bam_read1(fp, b)) >= 0) flagstat_loop(s, c); - } bam_destroy1(b); + if (ret != -1) + fprintf(stderr, "[bam_flagstat_core] Truncated file? Continue anyway.\n"); return s; } int bam_flagstat(int argc, char *argv[])