X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bcftools%2Fcall1.c;h=5e4fc9fbc267928260c678ef3ce62f942fcebc7b;hb=7943d9b7b1c159da840cbcfeb9cb277bb58474f2;hp=15f6f8bcc7095c37ea5fb589efdce630680b07b7;hpb=f560d9a2a23f21b1376a186b04d99099ac5b07f9;p=samtools.git diff --git a/bcftools/call1.c b/bcftools/call1.c index 15f6f8b..5e4fc9f 100644 --- a/bcftools/call1.c +++ b/bcftools/call1.c @@ -25,6 +25,8 @@ KSTREAM_INIT(gzFile, gzread, 16384) #define VC_QCALL 1024 #define VC_CALL_GT 2048 #define VC_ADJLD 4096 +#define VC_NO_INDEL 8192 +#define VC_FOLDED 16384 typedef struct { int flag, prior_type, n1; @@ -215,8 +217,9 @@ int bcfview(int argc, char *argv[]) tid = begin = end = -1; memset(&vc, 0, sizeof(viewconf_t)); vc.prior_type = vc.n1 = -1; vc.theta = 1e-3; vc.pref = 0.5; vc.indel_frac = -1.; - while ((c = getopt(argc, argv, "N1:l:cHAGvbSuP:t:p:QgLi:")) >= 0) { + while ((c = getopt(argc, argv, "fN1:l:cHAGvbSuP:t:p:QgLi:I")) >= 0) { switch (c) { + case 'f': vc.flag |= VC_FOLDED; break; case '1': vc.n1 = atoi(optarg); break; case 'l': vc.fn_list = strdup(optarg); break; case 'N': vc.flag |= VC_ACGT_ONLY; break; @@ -229,6 +232,7 @@ int bcfview(int argc, char *argv[]) case 'u': vc.flag |= VC_UNCOMP | VC_BCFOUT; break; case 'H': vc.flag |= VC_HWE; break; case 'g': vc.flag |= VC_CALL_GT | VC_CALL; break; + case 'I': vc.flag |= VC_NO_INDEL; break; case 't': vc.theta = atof(optarg); break; case 'p': vc.pref = atof(optarg); break; case 'i': vc.indel_frac = atof(optarg); break; @@ -257,6 +261,8 @@ int bcfview(int argc, char *argv[]) fprintf(stderr, " -N skip sites where REF is not A/C/G/T\n"); fprintf(stderr, " -Q output the QCALL likelihood format\n"); fprintf(stderr, " -L calculate LD for adjacent sites\n"); + fprintf(stderr, " -I skip indels\n"); + fprintf(stderr, " -f reference-free variant calling\n"); fprintf(stderr, " -1 INT number of group-1 samples [0]\n"); fprintf(stderr, " -l FILE list of sites to output [all sites]\n"); fprintf(stderr, " -t FLOAT scaled substitution mutation rate [%.4lg]\n", vc.theta); @@ -290,7 +296,8 @@ int bcfview(int argc, char *argv[]) bcf_p1_set_n1(p1, vc.n1); bcf_p1_init_subprior(p1, vc.prior_type, vc.theta); } - if (vc.indel_frac > 0.) bcf_p1_indel_prior(p1, vc.indel_frac); + if (vc.indel_frac > 0.) bcf_p1_indel_prior(p1, vc.indel_frac); // otherwise use the default indel_frac + if (vc.flag & VC_FOLDED) bcf_p1_set_folded(p1); } if (vc.fn_list) hash = bcf_load_pos(vc.fn_list, h); if (optind + 1 < argc && !(vc.flag&VC_VCFIN)) { @@ -311,7 +318,9 @@ int bcfview(int argc, char *argv[]) } } while (vcf_read(bp, h, b) > 0) { - if (vc.flag & VC_ACGT_ONLY) { + int is_indel = bcf_is_indel(b); + if ((vc.flag & VC_NO_INDEL) && is_indel) continue; + if ((vc.flag & VC_ACGT_ONLY) && !is_indel) { int x; if (b->ref[0] == 0 || b->ref[1] != 0) continue; x = toupper(b->ref[0]);