UGP Variant Pipeline 0.0.3
Contents
Utah Genome Project
Variant Calling Pipeline Version 0.0.3
Sept. 2013
Data Source
Data sets used for the variant calling pipeline come from the Broad GSA (GATK) group as the 'GATK resource bundle 2.5' version 2.8
wget -r ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/2.5/b37
- Reference Genome (GRCh37):
- human_g1k_v37_decoy.fasta
- VCF files for RealignerTargetCreator knowns and dbsnp for BaseRecalibrator.
- known_indel: /data/GATK_Bundle/Mills_and_1000G_gold_standard.indels.b37.vcf
- known_indel: /data/GATK_Bundle/1000G_phase1.indels.b37.vcf
- known_dbsnp: /data/GATK_Bundle/dbsnp_137.b37.vcf
- Background BAMS used running UnifiedGenotyper
- 1000Genomes sets:
- CEU
- GBR
- Resource files for VariantRecalibrator_SNP
- hapmap_3.3.b37.vcf
- 1000G_omni2.5.b37.vcf
- 1000G_phase1.snps.high_confidence.b37.vcf
- Resource files for VariantRecalibrator_INDEL
- Mills_and_1000G_gold_standard.indels.b37.vcf
- 1000G_phase1.indels.b37.vcf
Sequencing
This pipeline is designed for 100 bp Illumina HiSeq PE exome or WGS sequence data with Sanger/Illumina 1.9 quality encoding, and uses Illumina naming convention found here [1]
Validate File Integrity with md5sum
An md5sum signature should be provided for each FastQ file by the sequencing center. After the file has been downloaded, locally check the md5sum to be sure that no data corruption occurred during the file transfer.
md5sum file.fastq > file_local.md5 diff file_local.md5 file_provided.md5
If the md5sum signature differs from that provided for the file:
- Check to be sure you have the correct file.
- Check if the md5sum was calculated on that compressed or uncompressed file by the provider and be sure to do the same with the local copy.
- Try the download again.
- Contact the sequence provider.
FastQ File Analyses
fastqc Sample1_L1_R1.txt
From the fastqc_data.txt file we check the following values:
- Encoding (must be Sanger / Illumina 1.9)
- Total Sequences (Need to develop a acceptable range)
- Filtered Sequences (Should be 0 or at least very low)
- Sequence length (must be ~ 100 bp)
- %GC (should be 45 < x < 55)
- Total Duplicate Percentage (This value may not be valuable - an acceptable range has not been determined).
Alignment
Align reads to the genome with bwa.
Index the reference sequence if this has not already been done
bwa index -a bwtsw human_g1k_v37_decoy.fasta
The 'bwa aln' program will find the reference coordinates of the input reads (independent of their mate-pair). The following parameters are those used by the 1KG project for aligning Illumina data.
bwa aln -q 15 human_g1k_v37_decoy.fasta file.fastq > Sample1_L1_R1.sai # One lane of reads first in pair bwa aln -q 15 human_g1k_v37_decoy.fasta file.fastq > Sample1_L1_R2.sai # One lane of reads second in pair
The 'bwa sampe'. For paired-end reads, the maximum insert size is taken to be 3 times the expected insert size and read group added.
bwa sampe -r "read group" -P Sample1_L1_R1.sai Sample1_L1_R1.sai Sample1_L1_R1.fastq Sample1_L1_R2.fastq | samtools view -bSho BAM_FILE -
This will switch to bwa mem soon.
bwa mem -M -R "read group" human_g1k_v37_decoy.fasta Sample1_L1_R1.fq Sample1_L1_R2.fq | samtools view -bSho BAM_FILE -
BAM File Analyses
Alignment BAM files are improved in various ways to help increase the quality and speed of subsequent variant calling steps.
Merge lane level BAMs to individual
java -Xmx10g -XX:ParallelGCThreads=10 -Djava.io.tmpdir=/tmp MergeSamFiles.jar INPUT=Sample1_L1.rg.bam INPUT=Sample1_L2.rg.bam OUTPUT=Sample1.bam VALIDATION_STRINGENCY: LENIENT MAX_RECORDS_IN_RAM: 5000000 CREATE_INDEX: True SORT_ORDER: coordinate ASSUME_SORTED: True MERGE_SEQUENCE_DICTIONARIES: USE_THREADING: True 2> MergeSamFiles.report
Mark Duplicates
Remove PCR/Optical duplicate reads
java -Xmx10g -XX:ParallelGCThreads=10 -Djava.io.tmpdir=/tmp MarkDuplicates.jar INPUT=Sample1.bam OUTPUT=Sample1.dedup.bam METRICS_FILE=lane1_dup_metrics.txt VALIDATION_STRINGENCY: LENIENT COMPRESSION_LEVEL: MAX_RECORDS_IN_RAM: 5000000 CREATE_INDEX: True ASSUME_SORTED: True 2> MarkDuplicates.log
Develop range for duplicate levels here
Local Realignment of Indels
java -Xmx10g -Djava.io.tmpdir=/tmp GenomeAnalysisTK.jar -I dedup_bam.list -o Realign_Intervals.txt -T RealignerTargetCreator -R human_g1k_v37_decoy.fasta -known [list from above] -nt 24 2> RealignerTargetCreator.log
Base Quality Score Recalibration
java -Xmx10g -Djava.io.tmpdir=/tmp GenomeAnalysisTK.jar -T PrintReads -I Sample1.realign.bam -o Sample1.recal.bam -R human_g1k_v37_decoy.fasta -BQSR recalibration_report.grp
BAM Quality Control
CollectAlignmentSummaryMetrics
java -Xmx10g -XX:ParallelGCThreads=10 -Djava.io.tmpdir=/tmp CollectAlignmentSummaryMetrics.jar I=/output/filename.b37_1kg.sorted.bam O=/output/filename.b37_1kg.AlignmentSummaryMetrics R= human_g1k_v37_decoy.fasta VALIDATION_STRINGENCY=LENIENT PROGRAM: QualityScoreDistribution
ReduceReads
java -Xmx10g -XX:ParallelGCThreads=10 -Djava.io.tmpdir=/tmp GenomeAnalysisTK.jar -T ReduceReads -I Sample1.recal.bam -o Sample1.reduced.bam -R human_g1k_v37_decoy.fasta 2> ReduceReads.report
Variant Calling
UnifiedGenotyper
java -Xmx4g -jar GenomeAnalysisTK.jar \ -T UnifiedGenotyper \ -I Sample1.reduced.bam \ -I Sample2.reduced.bam \ -I Background1.reduced.bam \ -I Background2.reduced.bam \ -o Sample1.raw.vcf \ -R human_g1K_v37.fasta \ --dbsnp dbSNP.vcf \ -dcov 250 \ -L TruSeq_exome_regions.bed \ 2> UnifiedGenotyper.error
VariantRecalibrator
java -Xmx4g -jar GenomeAnalysisTK.jar \ -T VariantRecalibrator \ -R human_g1K_v37.fasta \ -input Sample1.raw.vcf \ -resource:hapmap,known=false,training=true,truth=true,prior=15.0 hapmap_3.3.b37.vcf \ -resource:omni,known=false,training=true,truth=true,prior=12.0 1000G_omni2.5.b37.vcf \ -resource:dbsnp,known=true,training=false,truth=false,prior=6.0 dbsnp_137.b37.vcf \
ADD 1KG
-an QD -an HaplotypeScore -an MQRankSum -an ReadPosRankSum -an FS -an MQ -an InbreedingCoeff \ -mode SNP \ -recalFile Sample1.recal \ -tranchesFile Sample1.tranches \ -rscriptFile Sample1.plots.R \ 2> VariantRecalibrator.error
ApplyRecalibration
java -Xmx4g -jar GenomeAnalysisTK.jar \ -T ApplyRecalibration \ -input Sample1.raw.vcf \ -o Sample1.vqsr.vcf \ -R human_g1K_v37.fasta \ --ts_filter_level 99.0 \ -tranchesFile Sample1.tranches \ -recalFile Sample1.recal \ -mode SNP \ 2> ApplyRecalibration.error
Variant File QC
Quality Metrics on variants
- Ti/Tv Ratio (2.1 for WGS ~2.8 for exome)
- HapMap concordance
- SNV/Indel Counts
- Rare variant enrichment
- DP
- Q
- GQ