一文詳解GATK-HaplotypeCaller 變異檢測(cè)原理和實(shí)戰(zhàn)

?要點(diǎn)

1. GATK-HaplotypeCaller簡(jiǎn)介

2. GATK-HaplotypeCaller的基本組裝原理

3. GATK-HaplotypeCaller的安裝和使用

4. GATK-HaplotypeCaller實(shí)戰(zhàn)

hello,大家好,今天為大家?guī)?lái)關(guān)于變異檢測(cè)工具GATK-HaplotypeCaller超詳細(xì)安裝及應(yīng)用教程。

我們將持續(xù)為大家?guī)?lái)生物醫(yī)療大數(shù)據(jù)分析一文詳解系列文章,歡迎大家關(guān)注并星標(biāo)我們,可以更及時(shí)的看到我們的文章哦。

1.GATK-HaplotypeCaller簡(jiǎn)介

基因組變異檢測(cè)是基因組學(xué)領(lǐng)域一個(gè)非常重要的問(wèn)題,是遺傳性疾病溯源,物種進(jìn)化等分析的前提。而目前最主流、使用最廣泛的變異檢測(cè)軟件當(dāng)屬 Broad Institute 開發(fā)的 GATK(Genome Analysis ToolKit) 組件。GATK 設(shè)計(jì)之初是用于分析人類的全外顯子和全基因組數(shù)據(jù),隨著不斷發(fā)展,現(xiàn)在也可以應(yīng)用于其他的物種。

GATK官網(wǎng)提供了一整套完整的變異檢測(cè)分析流程:GATK Best Practices。如下

圖示:

其中,HaplotypeCaller 是 GATK 檢測(cè)變異(SNP/INDEL)的核心模塊,主要通過(guò)單倍型的局部重組來(lái)實(shí)現(xiàn)準(zhǔn)確的 SNP 和 INDEL 檢測(cè)。GATK-HaplotypeCaller參考網(wǎng)址[1]

HaplotypeCaller 能夠從頭組裝變異活躍的區(qū)域(active region)并進(jìn)行 SNP/INDEL檢測(cè)。即每當(dāng)程序遇到顯示出變異跡象的區(qū)域時(shí),它就會(huì)丟棄現(xiàn)有的比對(duì)信息并完全重新組裝該區(qū)域中的reads。因此 HaplotypeCaller 在一些傳統(tǒng)方法難以檢測(cè)的區(qū)域上會(huì)更加準(zhǔn)確,也使得在檢測(cè) indel 方面比 UnifiedGenotyper(gatk舊版變異檢測(cè)模塊) 等基于位置的變異檢測(cè)工具效果更好。

HaplotypeCaller 能夠處理非二倍體生物以及混合的實(shí)驗(yàn)數(shù)據(jù),還能夠正確處理可變剪切,可以適用 RNAseq數(shù)據(jù)。

2. GATK-HaplotypeCaller的變異檢測(cè)的基本原理

GATK-HaplotypeCaller 模塊進(jìn)行 SNP/indel 檢測(cè)的基本工作流程包含四個(gè)主要步驟:?

1) 識(shí)別活躍區(qū)域?

2) 通過(guò)重組裝活躍區(qū)域確定單體型?

3) 確定每個(gè)read的單倍型的似然值?

4) 確定基因型。

2.1 識(shí)別活躍區(qū)域

沿著參考基因組以一定的窗口滑動(dòng),統(tǒng)計(jì)比對(duì)的 mismatches, indels 和 softclips等信息計(jì)算基因組每個(gè)位置的活躍得分,使用平滑算法進(jìn)行處理,此處相當(dāng)于測(cè)定該區(qū)域熵值。當(dāng)熵值達(dá)到某個(gè)設(shè)定的閾值時(shí)即確定該區(qū)域?yàn)閍ctive region,用于后續(xù)組裝。

2.2 通過(guò)重組裝活躍區(qū)域確定單體型

對(duì)于每個(gè)活動(dòng)區(qū)域,忽略之前的read比對(duì)結(jié)果,重新利用該區(qū)域的reads構(gòu)建一個(gè)類似 De Bruijn 的圖來(lái)組裝活躍區(qū)域并識(shí)別數(shù)據(jù)中可能存在的單倍型。然后,使用 Smith-Waterman 算法將每個(gè)單倍型與參考單倍型重新對(duì)齊,以識(shí)別潛在的變異位點(diǎn)。如下圖示:最優(yōu)的路徑通過(guò)構(gòu)圖的方式進(jìn)行打分,得到候選的單體型路徑。

2.3 確定每個(gè)read的單倍型的似然值

對(duì)于每個(gè)活動(dòng)區(qū)域,程序使用 PairHMM 算法將每個(gè)read與每個(gè)單倍型進(jìn)行成對(duì)比對(duì), 產(chǎn)生一個(gè)單倍型似然值矩陣。然后將這些似然值邊緣化以獲得給定reads的每個(gè)潛在變異位點(diǎn)的等位基因可能性。

2.4 確定基因型

將前面 PairHMM 步驟得到的候選單倍型的似然值應(yīng)用貝葉斯算法轉(zhuǎn)化為每個(gè)位點(diǎn)基因型的似然值,如下圖所示:

3. GATK-HaplotypeCaller的安裝和使用

目前GATK已更新到GATK4。和GATK3相比,GATK4在算法上進(jìn)行了優(yōu)化,運(yùn)行速率有所提高,而且整合了picard 軟件的功能。github地址[2].

3.1. 安裝

GATK軟件運(yùn)行有兩種方式一種是運(yùn)行通過(guò)java 調(diào)用jar包運(yùn)行,一種是使用gatk腳本文件,此時(shí)需要安裝Python 2.6以上版本,不管是哪種方式,都需要機(jī)器上安裝java 8或以上版本。

wget https://github.com/broadinstitute/gatk/releases/download/4.1.5.0/gatk-4.1.5.0.zip unzip gatk-4.1.5.0.zip

注意此處下載最好是直接下載gatk-**.zip包,而不要下載Source code (zip) 和 Source code (tar.gz)兩個(gè)源碼包,不然還需要重新build gatk。當(dāng)然如果你的環(huán)境無(wú)法支持那就另說(shuō)了。下載完解壓即可看到可執(zhí)行程序gatk, 以及對(duì)應(yīng)的jar包,可以運(yùn)行./gatk --list測(cè)試下是否可運(yùn)行。

3.2. 使用說(shuō)明

運(yùn)行./gatk HaplotypeCaller -h查看 HaplotypeCaller 的參數(shù)細(xì)節(jié),詳細(xì)說(shuō)明到官網(wǎng)查看會(huì)更清晰一些https://gatk.broadinstitute.org/hc/en-us/articles/360040096812-HaplotypeCaller

盡管HaplotypeCaller官網(wǎng)參數(shù)非常多,但實(shí)際用上的卻不多,大部分按默認(rèn)參數(shù)即最佳,這里列舉常用參數(shù)進(jìn)行說(shuō)明:

--input-I []? ? # BAM/SAM/CRAM file containing reads 指定輸入的bam、sam、cram文件--output -O? ? null? ? # File to which variants should be written 指定輸出vcf名字--reference -R? ? null? ? # Reference sequence file 指定參考序列,需要和比對(duì)時(shí)候使用的參考基因組一致--intervals -L? ? []? ? #One or more genomic intervals over which to operate 指定變異檢測(cè)的區(qū)間,可以是bed文件也可以是染色體名字--emit-ref-confidence -ERC? ? NONE? ? # Mode for emitting reference confidence scores 包含以下三種變異檢測(cè)模式:? ? #1. NONE:只記錄變異位點(diǎn)? ? #2. BP_RESOLUTION:記錄變異和非變異位點(diǎn),每個(gè)位點(diǎn)信息都展示????#3. GVCF:記錄變異和非變異位點(diǎn),其中非變異位點(diǎn)以block塊展示--pcr-indel-model CONSERVATIVE? ? #The PCR indel model to use設(shè)置針對(duì)PCR indel的矯正模型,包含以下幾種模式? ? #1. NONE:不會(huì)應(yīng)用專門的 PCR 錯(cuò)誤模型;如果存在堿基插入/刪除質(zhì)量,它們將被使用? ? #2. HOSTILE:將應(yīng)用一個(gè)最激進(jìn)的模型,該模型會(huì)犧牲真陽(yáng)性以消除更多的假陽(yáng)性? ? #3. AGGRESSIVE:將應(yīng)用相對(duì)激進(jìn)的模型,犧牲真陽(yáng)性以消除更多的假陽(yáng)性? ? #4. CONSERVATIVE:將應(yīng)用一個(gè)不那么激進(jìn)的模型,該模型試圖以允許更多誤報(bào)為代價(jià)來(lái)保持較高的真陽(yáng)性率

注意

1)對(duì)于隊(duì)列分析,通常會(huì)使用-ERC GVCF參數(shù)來(lái)生成gvcf文件以支持下游多樣本聯(lián)合分析

2)對(duì)于PCR-free的樣本需要使用-pcr_indel_model NONE取消PCR indel模型。

運(yùn)行命令如下:

gatk --java-options "-Xmx4g" HaplotypeCaller? \? -R Homo_sapiens_assembly38.fasta \? -I input.bam \? -O output.g.vcf.gz \? -ERC GVCF \? -L chr1

4. GATK-HaplotypeCaller實(shí)戰(zhàn)

下面我們找個(gè)NA12878樣本的bam 文件數(shù)據(jù),具體來(lái)實(shí)踐一下吧。

4.1 數(shù)據(jù)下載

下載運(yùn)行所需的數(shù)據(jù):參考基因組及其索引,bam文件

wget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fastawget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.dictwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta.faiwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bamwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bai

4.2 運(yùn)行命令

此處我們使用Gvcf模式,且只檢測(cè)chrM的變異

gatk --java-options "-Xmx4g" HaplotypeCaller? \? -R hg19.chrM.fasta \? -I hg19.chrM.bwa-mem.sort.rmdup.BQSR.bam \? -O chrM.g.vcf.gz \? -ERC GVCF \? -L chrM

4.3 輸出結(jié)果

運(yùn)行完即可看到chrM.g.vcf.gz文件的生成。

此外,我們的sixoclock官網(wǎng)基于CWL (common workflow language) 對(duì) GATK-HaplotypeCaller 軟件進(jìn)行了封裝,通過(guò)我們開發(fā)的sixbox軟件可以快速進(jìn)行軟件的運(yùn)行。對(duì)sixbox不了解可以通過(guò)六點(diǎn)了官網(wǎng)了https://docs.sixoclock.net/clients/sixbox-linux.html解下。下面是具體的運(yùn)行步驟如下:

1)下載cwl 源碼sixbox pull 2e932c25-8c36-4733-bb91-79a137282013或 點(diǎn)擊下載按鈕下載 gatk_HaplotypeCaller.cwl https://www.sixoclock.net/application/pipe/2e932c25-8c36-4733-bb91-79a137282013

2) 使用sixbox生成參數(shù)模板文件(YAML) , 并配置yaml文件

sixbox run --make-template ./HaplotypeCaller.cwl > HaplotypeCaller.job.yamlvim HaplotypeCaller.job.yaml # 編輯參數(shù)配置文件,替換或設(shè)置參數(shù)以實(shí)現(xiàn)個(gè)性化分析

可以直接粘貼下方示例內(nèi)容到HaplotypeCaller.job.yaml

reference:? # type "File"? ? class: File? ? path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta? ? secondaryFiles:? ? ? - class: File? ? ? ? path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.dict? ? ? - class: File? ? ? ? path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta.faioutput_vcf: chrM.g.vcf.gz? # type "string"#java_options: '-Xmx6g -XX:ParallelGCThreads=4'? # type "string"intervals:? # array of type "string" (optional)? - "chrM"input_bam:? # array of type "File"? ? class: File? ? path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bam? ? secondaryFiles:? ? ? - class: File? ? ? ? path:? http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.baiERC: 'GVCF'? # type "string"

3) 使用sixbox運(yùn)行

sixbox run ./HaplotypeCaller.cwl ./HaplotypeCaller.job.yaml#或者指定輸出目錄sixbox run --outdir /home/path ./HaplotypeCaller.cwl ./HaplotypeCaller.job.yaml

運(yùn)行結(jié)果即可看到當(dāng)前目錄或者指定的輸出目錄輸出chrM.g.vcf.gz結(jié)果。

以上為我們給大家?guī)?lái)的宏基因組組裝工具M(jìn)egahit基本原理知識(shí),以及運(yùn)行詳細(xì)操作過(guò)程。

如果對(duì)生物醫(yī)療健康大數(shù)據(jù)相關(guān)內(nèi)容感興趣也可以持續(xù)關(guān)注我們。想要探索更多生物醫(yī)療大數(shù)據(jù)分析工具和軟件的介紹和使用請(qǐng)看六點(diǎn)了官網(wǎng)[3]。(??點(diǎn)擊閱讀原文)

References

[1]GATK-HaplotypeCaller參考網(wǎng)址:https://gatk.broadinstitute.org/hc/en-us/articles/360037225632-HaplotypeCaller

[2]github地址:https://github.com/broadinstitute/gatk

[3]?https://www.sixoclock.net

推薦閱讀

?一文詳解基因組denovo組裝原理和實(shí)戰(zhàn)

?首發(fā)!生信分析--入門實(shí)踐一條龍的CWL中文教程來(lái)了

?第三期 Gatk snp calling流程的配置及使用

?第四期 GATK最佳實(shí)踐之流程運(yùn)行

歡迎關(guān)注我們的公眾號(hào)“六點(diǎn)了”,原創(chuàng)生物醫(yī)療大數(shù)據(jù)分析技術(shù)文章第一時(shí)間推送。

六點(diǎn)了?

生物醫(yī)療數(shù)據(jù)處理云平臺(tái),創(chuàng)建,使用,分享,團(tuán)隊(duì)協(xié)作。提供海量數(shù)據(jù)處理算法下載、可視化編輯與配置,在線流程組合、自動(dòng)生成功能,以及基于解耦合的一站式生信解決方案私有云的本地化部署服務(wù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容