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.

Picard MergeVcfs vs GATK CatVariants

shawardenshawarden Dunedin, New ZealandMember

I've noticed the WDL scripts are using Picard's MergeVcfs immediately following a scattered GATK HaplotypeCaller to do what CatVariants was seemingly designed for. Is there any benefit to using one over the other? In the tests I've run with the same compute node, inputs and resource allocation Picard MergeVcfs performs inappreciably slower than CatVariants.

Is there a reason for this shift of just personal preference by the coder in question?
Does Picard's MergeVcfs not suffer from the same file IO issues CatVariants has when working in network shares?
Does CatVariants have some other issue I'm unaware of?

Picard MergeVcfs:

Merges multiple VCF or BCF files into one VCF file. Input files must be sorted by their contigs and, within contigs, by start position. The input files must have the same sample and contig lists. An index file is created and a sequence dictionary is required by default.


GATK CatVariants:

The main purpose of this tool is to speed up the gather function when using scatter-gather parallelization. This tool concatenates the scattered output VCF files. It assumes that:

All the input VCFs (or BCFs) contain the same samples in the same order.
The variants in each input file are from non-overlapping (scattered) intervals.

When the input files are already sorted based on the intervals start positions, use -assumeSorted.

Best Answer


  • shawardenshawarden Dunedin, New ZealandMember

    Thanks! I'll take a look at picard's GatherVcfs. If it runs at a similar speed to samtools cat then that'll be a nice way to cut down the 2 hours or so that catvariants takes.

Sign In or Register to comment.