Heads up:
We’re moving the GATK website, docs and forum to a new platform. Read the full story and breakdown of key changes on this blog.
If you happen to see a question you know the answer to, please do chime in and help your fellow community members. We encourage our fourm members to be more involved, jump in and help out your fellow researchers with their questions. GATK forum is a community forum and helping each other with using GATK tools and research is the cornerstone of our success as a genomics research community.We appreciate your help!

Test-drive the GATK tools and Best Practices pipelines on Terra

Check out this blog post to learn how you can get started with GATK and try out the pipelines in preconfigured workspaces (with a user-friendly interface!) without having to install anything.

How to filter jointly called variants


I am genotyping a couple of hundred haploid yeast genomes, and did the following per sample:

map with bwa
mark duplicates
call variants using HaplotypeCaller
apply VariantFiltration using recommended filters
selecting passing variants, also requiring minimum coverage, and a minimum fraction of reads supporting variants
used these variants to recalibrate quality scores
called variants on the recalibrated data, in GVCF mode

Then, I combined all vcf files into a giant, 200 sample gvcf file, then:

perform joint calling on that file, using GenotypeGVCFs

I understand that I can't do variant recalibration, because I don't have a sufficient number of variants for training. What I don't understand is:

a) will the variants be 'better' - i.e. more accurate - from the joint calling than they were from the single sample calling (i.e. will variant metrics be different?), or was the joint calling superfluous as I am unable to do variant recalibration?
b) how do I now proceed with this giant gvcf file to apply hard filters - I see no documentation as to how to perform filtering on all samples, or even each sample from this multi-sample gvcf file.

Many thanks,


  • Gavin_SherlockGavin_Sherlock StanfordMember

    To be more specific - I can apply a filter to the whole file thus:

    gatk VariantFiltration -R Saccharomyces_cerevisiae.R64.fasta -V called_genotypes.vcf.gz -filter 'QD < 2.0 || FS > 60.0 || SOR > 3.0 || MQ < 40.0 || MQRankSum < -10.5 || ReadPosRankSum < -8.0' -output variants/final_pass_filtered.vcf -filter-name "hard_filter"

    but I get either PASS or hard_filter on a per line basis in the output file, not a per line per sample basis, which I don't really know how to interpret

    With the resulting file, I then don't know how to do the selection step - if I select based on attributes for a given sample, will I end up with one vcf file per sample in the end, e.g., I can do:

    gatk SelectVariants -R Saccharomyces_cerevisiae.R64.fasta -V variants/final_pass_selected.vcf -select '1.0vc.getGenotype("sample1").getDP() > 0 && (1.0vc.getGenotype("sample1").getAD().1)/(1.0vc.getGenotype("sample1").getDP()) > 0.9 && 1.0vc.getGenotype("sample1").getDP() > 6' -output {output.selected} --exclude-filtered

    will this just give me SNPs for sample1? I could then do this for each sample.

    I guess in the end, my question is, should I split the multi-sample gvcf file into multiple files, one per sample (and if so how?), and then perform the filtering on that? And if so, will it be any different that what I got earlier in my pipeline from variant calling on a per sample basis?


  • AdelaideRAdelaideR Member admin

    Hi @Gavin_Sherlock

    I am investigating this question on the moment, I am trying to figure out how your workflow can be customized for yeast.

  • AdelaideRAdelaideR Member admin

    Hi @Gavin_Sherlock

    Have you taken a look at the tutorial on hard filtering?

    This might be a good alternative to SelectVariants.

Sign In or Register to comment.