GATK(全稱The Genome Analysis Toolkit)是Broad Institute開發的用于二代重測序數據分析的一款軟件,里面包含了很多有用的工具。
需要的文件
參考基因組:reference.fasta
測序文件:bam 格式比對結果文件
所需軟件: samtools 、gatk 、?Picard
一、創建gatk所需的索引文件
GATK需要reference序列是經過index的,而且需要兩個index文件,一個是后綴名為.fai的,另外一個是后綴名稱為.dict的,缺少這些文件,或者兩個文件中的內容不一致都可能導致程序報錯。
samtools faidx reference.fasta? ? ?#生成后綴名為.fai
gatk CreateSequenceDictionary-R reference.fasta? -O reference.dict? ?#生成后綴名為.dict
二、?增加GATk 要求的read group的格式
GATK要求輸入的bam文件包含Read groups,如果沒有就會報錯。
Read group是@RG開始,包括以下幾個部分:
ID= Read group identifier
每一個Read group獨有的ID;
PU= Platform Unit
PL= Platform/technology used to produce the read
測序使用的平臺: ILLUMINA, SOLID, LS454, HELICOS and PACBIO。
LB= DNA preparation library identifier
對一個read group的reads進行重復序列標記時,需要使用LB來區分reads來自那條lane;有時候,同一個庫可能在不同的lane上完成測序;為了加以區分,同一個或不同庫只要是在不同的lane產生的reads都要單獨給一個ID。
SM= Sample
reads屬于的樣品名,自由設定
可以在BWA比對時增加read group:
bwa mem -R '@RG\tID:group\tLB:library\tPL:illumina\tPU:unit1\tSM:676R' ~/ref/reference.fasta read1.fq read2.fq > bulk.sam
或者使用Picard增加:
Picard: 它是目前最著名的組學研究中心-Broad研究所開發的一款強大的NGS數據處理工具,功能方面和Samtools有些重疊,但更多的是互補,它是由java編寫的,我們直接下載最新的.jar包就行了。
下載鏈接:wget https://github.com/broadinstitute/picard/releases/download/2.25.5/picard.jar
安裝? ??
java -jar picard.jar
執行命令:
java -jar ~/biosoft/picard.jar AddOrReplaceReadGroups I=bulk.bam O=bulk.add.bam RGID=4 RGLB=library1 RGPL=illumina RGPU=unit1 SORT_ORDER=coordinate RGSM=M05
三、去除PCR重復序列
gatk MarkDuplicates -I bulk.add.bam -O bulk.marked.bam -M bu.metrics 1>log.mark 2>&1
四、VCF輸出
#先生成gvcf格式文件? ? ?gvcf可記錄所有位點的變異情況
gatk HaplotypeCaller -R ?~/ref/reference.fasta?? -I bulk.marked.bam -O output.g.vcf.gz -ERC GVCF
#然后在從gvcf提取變異情況
gatk GenotypeGVCFs -R ?~/ref/reference.fasta?? -V output.g.vcf.gz -O output.vcf.gz
?或者直接生成vcf文件
gatk HaplotypeCaller -R ~/ref/reference.fasta -I bulk.marked.bam -O? ?out.vcf
五、執行篩選
gatk VariantFiltration \
? ? -V? out.vcf \
? ? -filter "QD < 2.0" --filter-name "QD2" \
? ? -filter "QUAL < 30.0" --filter-name "QUAL30" \
? ? -filter "FS > 60.0" --filter-name "FS60" \
? ? -filter "MQ < 40.0" --filter-name "MQ40" \
? ? -filter "MQRankSum < -12.5" --filter-name "MQRankSum-12.5" \
? ? -filter "ReadPosRankSum < -8.0" --filter-name "ReadPosRankSum-8" \
? ? -O? out_prefix.vcf
六、合并VCF文件
第一種方法:
gatk -T CombineVariants -V file1.vcf.gz -V file2.vcf.gz -o merge.vcf.gz -R ref.fa
第二種方法:
bcftools merge file1.vcf.gz? file2.vcf.g? -o merge_bcftools.vcf