#VarDictJava
##Introduction VarDictJava is a variant discovery program written in Java and Perl. It is a partial Java port of VarDict variant caller.
The original Perl VarDict is a sensitive variant caller for both single and paired sample variant calling from BAM files. VarDict implements several novel features such as amplicon bias aware variant calling from targeted sequencing experiments, rescue of long indels by realigning bwa soft clipped reads and better scalability than Java based variant callers.
Please cite VarDict:
Lai Z, Markovets A, Ahdesmaki M, Chapman B, Hofmann O, McEwen R, Johnson J, Dougherty B, Barrett JC, and Dry JR. VarDict: a novel and versatile variant caller for next-generation sequencing in cancer research. Nucleic Acids Res. 2016, pii: gkw227.
The link to is article can be accessed through: http://nar.oxfordjournals.org/cgi/content/full/gkw227?ijkey=Tk8eKQcYwNlQRNU&keytype=ref
Original coded by Zhongwu Lai 2014.
VarDictJava can run in single sample (see Single sample mode section), paired sample (see Paired variant calling section), or amplicon bias aware modes. As input, VarDictJava takes reference genomes in FASTA format, aligned reads in BAM format, and target regions in BED format.
##Requirements
##Getting started ###Getting source code The VarDictJava source code is located at https://github.com/AstraZeneca-NGS/VarDictJava.
To load the project, execute the following command:
git clone --recursive https://github.com/AstraZeneca-NGS/VarDictJava.git
Note that original VardDict project is placed in this repository as submodule and it's contents can be found in sub-directory VarDict in VarDictJava working folder. So when you use teststrandbias.R and var2vcf_valid.pl. (see details and examples below), you have to add prefix VarDict: VarDict/teststrandbias.R and VarDict/var2vcf_valid.pl.
###Compiling The project uses Gradle and already includes a gradlew script.
To build the project, in the root folder of the project, run the following command:
./gradlew clean installApp
To generate Javadoc, in the build/docs/javadoc folder, run the following command:
./gradlew clean javadoc
###Single sample mode
To run VarDictJava in single sample mode, use a BAM file specified without the | symbol and perform Steps 3 and 4 (see the Program workflow section) using teststrandbias.R and var2vcf_valid.pl.
The following is an example command to run in single sample mode:
AF_THR="0.01" # minimum allele frequency
<path_to_vardict_folder>/build/install/VarDict/bin/VarDict -G /path/to/hg19.fa -f $AF_THR -N sample_name -b /path/to/my.bam -z -c 1 -S 2 -E 3 -g 4 /path/to/my.bed | VarDict/teststrandbias.R | VarDict/var2vcf_valid.pl -N sample_name -E -f $AF_THR
VarDictJava can also be invoked without a BED file if the region is specified in the command line with -R option.
The following is an example command to run VarDictJava for a region (chromosome 7, position from 55270300 to 55270348, EGFR gene) with -R option:
<path_to_vardict_folder>/build/install/VarDict/bin/VarDict -G /path/to/hg19.fa -f 0.001 -N sample_name -b /path/to/sample.bam -z -R chr7:55270300-55270348:EGFR | VarDict/teststrandbias.R | VarDict/var2vcf_valid.pl -N sample_name -E -f 0.001 >vars.vcf
In single sample mode, output columns contain a description and statistical info for variants in the single sample. See section Output Columns for list of columns in the output.
###Paired variant calling
To run paired variant calling, use BAM files specified as BAM1|BAM2 and perform Steps 3 and 4 (see the Program Workflow section) using testsomatic.R and var2vcf_somatic.pl.
In this mode, the number of statistics columns in the output is doubled: one set of columns is for the first sample, the other - for second sample.
The following is an example command to run in paired mode:
AF_THR="0.01" # minimum allele frequency
<path_to_vardict_folder>/build/install/VarDict/bin/VarDict -G /path/to/hg19.fa -f $AF_THR -N tumor_sample_name -b "/path/to/tumor.bam|/path/to/normal.bam" -z -F -c 1 -S 2 -E 3 -g 4 /path/to/my.bed | VarDict/testsomatic.R | VarDict/var2vcf_somatic.pl -N "tumor_sample_name|normal_sample_name" -f $AF_THR
##Program Workflow The VarDictJava program follows the workflow:
Get regions of interest from a BED file or the command line.
For each segment:
a. Find all variants for this segment in mapped reads:
i. Optionally skip duplicated reads, low mapping-quality reads, and reads having a large number of mismatches.
ii. Skip a read if it does not overlap with the segment.
iii. Preprocess the CIGAR string for each read.
iv. For each position, create a variant. If a variant is already present, adjust its count using the adjCnt function.
b. Realign some of the variants using special ad-hoc approaches.
c. Calculate statistics for the variant, filter out some bad ones, if any.
d. Assign a type to each variant.
e. Output variants in an intermediate internal format (tabular). Columns of the table are described in the Output Columns section.
Note: To perform Steps 1 and 2, use the Java program VarDict.
Perform a statistical test for strand bias using an R script.
Note: Use R script for this step.
Transform the intermediate tabular format to VCF. Output the variants with filtering and statistical data.
Note: Use the Perl scripts var2vcf_valid.pl or var2vcf_somatic.pl for this step.
##Program Options
-H-h-i
Output splicing read counts-p-C-D-t-3-F bit0x500 (filter 2nd alignments and duplicates). Use -F 0 to turn it off.-z 0/11 for a BED file or amplicon BED file. Use 0 to turn it off. When using -R option, it is set to 0-a int:float10:0.95-k 0/11 or yes. Set to 0 to disable it.-G Genome fasta/ngs/reference_data/genomes/Hsapiens/hg19/seq/hg19.fa-R Region-d delimiterregion_info, defaults to tab "\t"-n regular_expression/([^\/\._]+?)_[^\/]*.bam/-N string-n option-b string-c INT-S INT-E INT-s INT-e INT-g INT-x INT0-f double0.05 or 5%-r minimum reads2-B INT2-Q INT-q INT-m INTINT will be filtered and ignored. Gaps are not counted as mismatches. Valid only for bowtie2/TopHat or BWA aln followed by sampe. BWA mem is calculated as NM - Indels. Default: 8, or reads with more than 8 mismatches will not be used.-T INT[INT] bases in the reads-X INT-P number-Z double0.7 means roughly 70% downsampling. Default: No downsampling. Use with caution. The downsampling will be random and non-reproducible.-o QratioQratio of (good_quality_reads)/(bad_quality_reads+0.5). The quality is defined by -q option. Default: 1.5-O MapQMapQ to be considered a valid variant. Default: no filtering-V freq0.05-I INT-M INT
The minimum matches for a read to be considered. If, after soft-clipping, the matched bp is less than INT, then the
read is discarded. It's meant for PCR based targeted sequencing where there's no insert and the matching is only the primers.
Default: 0, or no filtering-th [threads]-VS STRICT | LENIENT | SILENT
How strict to be when reading a SAM or BAM.
STRICT - throw an exception if something looks wrong.
LENIENT - Emit warnings but keep going if possible.
SILENT - Like LENIENT, only don't emit warning messages.
Default: LENIENT##Output columns
The code is freely available under the MIT license.
Java port of VarDict implemented based on the original Perl version (Zhongwu Lai) by:
Content type
Image
Digest
Size
467.8 MB
Last updated
about 10 years ago
docker pull cgrlab/vardictjava