haplotypecaller
This tool is an accelerated version of the GATK germline variant caller, HaplotypeCaller, which takes an aligned BAM/CRAM file (for example, from the fq2bam tool), and outputs a VCF file. It calls germline SNPs and indels via local re-assembly of haplotypes: whenever it encounters a region showing signs of variation, it discards the existing mapping information and completely reassembles the reads in that region, making it more accurate when calling regions that are traditionally difficult to call.
You can provide an optional BQSR report to fix the BAM, similar to ApplyBQSR. In this case, the updated base qualities will be used.
Refer to the haplotypecaller Reference section for a detailed listing of all available options.
Quick Start
Compatible GATK4 Command
The commands below are the GATK4 counterpart of the Parabricks command above. The output from these commands will be identical to the output from the above command. Refer to the Output Comparison page for comparing the results.
Source of Mismatches
While the Parabricks HaplotypeCaller does not lose any accuracy in functionality when compared with the GATK HaplotypeCaller there are a few implementation differences that can result in slightly different output files.
- Random generator
The GATK HaplotypeCaller calls the same random generator in read downsampling and QualByDepth annotation computation. The Parabricks HaplotypeCaller calls two separate random number generators to allow for parallel computing.
- Log10 implementation
The log10 operation is used to compute the haplotype penalty score. The Java implementation
java.lang.Math.log10() is slightly different from the C++ cmath library, giving rise to small
mismatches in computed scores. Different haplotypes might be selected because of this.
- AVX
GATK calls Intel GKL (Genomics Kernel Library) which contains optimized versions of compute kernels
(e.g. Smith-Waterman, PairHMM) to run on Intel Architecture (AVX, AVX2, AVX-512, and multicore).
However, some SIMD intrinsics such as _mm512_mul_ps can generate a slightly different output
when compared with the serial operations which our GPU implementation is based on.
- HashMap, HashSet iteration
GATK can give non-deterministic outputs because iterating over a Java HashMap or HashSet does not preserve
order. Parabricks always gives deterministic output by using
a hash table that preserves the insertion order (similar to LinkedHashMap in Java).
Several original HaplotypeCaller options are supported by Parabricks.
To specify the inclusion or exclusion of several haplotype caller annotations,
use the --haplotypecaller-options option:
Annotations may be excluded in the same manner using the -AX option. There should
be a space between the -A/-AX flag and its value.
The following are supported options and their allowed values:
- -A
- AS_BaseQualityRankSumTest
- AS_FisherStrand
- AS_InbreedingCoeff
- AS_MappingQualityRankSumTest
- AS_QualByDepth
- AS_RMSMappingQuality
- AS_ReadPosRankSumTest
- AS_StrandOddsRatio
- AssemblyComplexity
- BaseQualityRankSumTest
- ChromosomeCounts
- ClippingRankSumTest
- Coverage
- DepthPerAlleleBySample
- DepthPerSampleHC
- ExcessHet
- FisherStrand
- InbreedingCoeff
- MappingQualityRankSumTest
- QualByDepth
- RMSMappingQuality
- ReadPosRankSumTest
- ReferenceBases
- StrandBiasBySample
- StrandOddsRatio
- TandemRepeat
- -AX
- (same as for the -A option)
- —output-mode
- EMIT_VARIANTS_ONLY
- EMIT_ALL_CONFIDENT_SITES
- EMIT_ALL_ACTIVE_SITES
- -max-reads-per-alignment-start
- a positive integer
- -min-dangling-branch-length
- a positive integer
- -min-pruning
- a positive integer
- -pcr-indel-model
- NONE
- HOSTILE
- AGGRESSIVE
- CONSERVATIVE
- -standard-min-confidence-threshold-for-calling
- a positive integer
Options
In the values provided to —haplotypecaller-options —output-mode requires two leading hyphens, while all other values take a single hyphen.