To celebrate the release of GATK 4.0, we are giving away free credits for running the GATK4 Best Practices pipelines in FireCloud, our secure online analysis portal. It’s first come first serve, so sign up now to claim your free credits worth $250. Sponsored by Google Cloud. Learn more at

VariantRecalibrator, creating a truth data set

lbernalberna Member
edited January 2013 in Ask the GATK team

Hello community, I am working with yeast and I am doing the VariantRecalibrator step, as I dont have a truth data set I want to "filter" my initial round of raw SNP in order to have the highest quality score SNP as the gatk team suggest.

1) I was wondering if you have any suggestion about the parameters of filtration...

I am working with each strain as different species (WGS), so I have good coverage (80X) but only one "Lane"
I tried with:

java -Xmx4g -jar GenomeAnalysisTK.jar -R S288c.fasta -T VariantFiltration --variant $1.raw.vcf --filterExpression "QD<2.0 || MQ<45.0 || FS>60 || MQEankSum< -12.5 || ReadPosRankSum<-8.0 " --filterName "hardtovalidate" -o $1.filt.vcf

to remove after the LowQual and hardtovalidate snps, that make sense? thanks for your help!

2) Then after, I would do the VariantRecalibrator, but I will have only one truth set, can I use -mode both, or I should try to obtain a truth data set of indels and do the VQSR for SNP and Indels separately? What do you think?

java -Xmx4g -jar  GenomeAnalysisTK.jar -T VariantRecalibrator  -R ncbi_S288c.fasta -input $1.raw.vcf -recalFile $1.raw.recal -tranchesFile $1.raw.tranches -resource:filtered,known=false,training=true,truth=true,prior=15.0 $1.truth.vcf -an QD -an HaplotypeScore -an MQRankSum -an ReadPosRankSum -an FS -an MQ -an DP **-mode both** 


Post edited by Geraldine_VdAuwera on


  • 3) Otherwise, I am thinking in skip the VariantRecalibration, and simple "filter" the raw SNP in order to have a more accurate SNPs

  • Hey Luisa,
    the easiest way of designing a truth set is to call your variants with multiple callers (UnifiedGenotyper, Samtools mpileup, HaplotypeCaller, CORTEX, VarScan, comercial ones depending on your sequencing platform). For example select 3 callers with different calling algorithms. Then combine these callsets so only variants in all 3 are reported and you get a set of very confident Variants.
    Further you could resequence some samples with a other technology and crosscheck the resulting calls yielding even better true positives.

  • As for using multiple methods, do VariantRecalibration and Base calibration any better than consensus of multiple methods, in particular an organism without any definitive SNP DB? I use 5 methods including GATK (no calibration), Mpileup, Freebayes, Cortex and pileup. Depth is over at least 40-50x for each samples so I expect even pileup is doing good. And I takes SNPs which are called by 2.5 or 3 callers in 206 to 301 samples.
    As far as I checked, this 5 caller method is more sensitive to pick rare valiant SNPs and is better to exclude spurious SNPs than GATK (simple population method). I trust GATK perform well in human data but I am not so sure GATK recalibration strategy works well for organisms whose genome is not well characterised. For example, we study the organism whose chromosome copy number constantly ranges between 2-5 and these chromosome copy number is not that stable over long time.

    So do VariantRecalibration and Base calibration reduce false positive rate or increase sensitivity to identify variants???

    But for not-so-well studied organisms or organisms whose trusted SNPs cannot be well defined, I would rather trust the results generated by multiple callers. If VariantRecalibration works well, I would ingrate it to a multiple caller strategy.

  • Do any of you know whether there is a reference (official GATK documentation, a publication, etc.) recommending the practice of using the overlap of variants called by multiple calling algorithms as a truth set for recalibration?

  • Geraldine_VdAuweraGeraldine_VdAuwera Cambridge, MAMember, Administrator, Broadie

    This practice is mentioned in passing in some of our documentation, but it is not explained in much detail. Are you looking for instructions on how to do it, or for a reference to cite in support of the practice?

Sign In or Register to comment.