X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bam_plcmd.c;h=54b8f91722b2f16ade955231e075764b3161d2d5;hb=599bea10bc3487a0cbdf505e792a21a13fee2b11;hp=32d050d68413aa18e6ba4ea688615579a539bf2b;hpb=df7cadac556f302bdd0bc48c235c2b61b699dfe1;p=samtools.git diff --git a/bam_plcmd.c b/bam_plcmd.c index 32d050d..54b8f91 100644 --- a/bam_plcmd.c +++ b/bam_plcmd.c @@ -726,31 +726,20 @@ static int mpileup(mplp_conf_t *conf, int n, char **fn) for (i = 0; i < gplp.n; ++i) bcf_call_glfgen(gplp.n_plp[i], gplp.plp[i], ref16, bca, bcr + i); bcf_call_combine(gplp.n, bcr, ref16, &bc); - bcf_call2bcf(tid, pos, &bc, b, (conf->flag&(MPLP_FMT_DP|MPLP_FMT_SP))? bcr : 0, (conf->flag&MPLP_FMT_SP)); + bcf_call2bcf(tid, pos, &bc, b, (conf->flag&(MPLP_FMT_DP|MPLP_FMT_SP))? bcr : 0, + (conf->flag&MPLP_FMT_SP), 0, 0); bcf_write(bp, bh, b); bcf_destroy(b); - // test if there is an indel - if (conf->flag&MPLP_REALN) { - for (i = 0; i < gplp.n; ++i) { - int j; - for (j = 0; j < gplp.n_plp[i]; ++j) { - const bam_pileup1_t *p = gplp.plp[i] + j; - if (p->indel != 0) break; - } - if (j != gplp.n_plp[i]) break; - } - if (i < gplp.n) { // at least one of the read contains a gap - for (i = 0; i < gplp.n; ++i) - bcf_call_glfgen_gap(pos, gplp.n_plp[i], gplp.plp[i], bca, bcr + i); - bcf_call_combine_gap(gplp.n, bcr, &bc); - if (bc.depth > 0) { - b = calloc(1, sizeof(bcf1_t)); - bcf_call2bcf(tid, pos, &bc, b, (conf->flag&(MPLP_FMT_DP|MPLP_FMT_SP))? bcr : 0, - (conf->flag&MPLP_FMT_SP)); - bcf_write(bp, bh, b); - bcf_destroy(b); - } - } + // call indels + if (bcf_call_gap_prep(gplp.n, gplp.n_plp, gplp.plp, pos, bca, ref) >= 0) { + for (i = 0; i < gplp.n; ++i) + bcf_call_glfgen(gplp.n_plp[i], gplp.plp[i], -1, bca, bcr + i); + bcf_call_combine(gplp.n, bcr, -1, &bc); + b = calloc(1, sizeof(bcf1_t)); + bcf_call2bcf(tid, pos, &bc, b, (conf->flag&(MPLP_FMT_DP|MPLP_FMT_SP))? bcr : 0, + (conf->flag&MPLP_FMT_SP), bca, ref); + bcf_write(bp, bh, b); + bcf_destroy(b); } } else { printf("%s\t%d\t%c", h->target_name[tid], pos + 1, (ref && pos < ref_len)? ref[pos] : 'N');