去年 Deep Learning 在各個領域都有不錯的成果,Genomics 這一塊也是有很棒的成果,如 Google Brain Team 和 Verily 一起開發的 DeepVariant [1] 就是一個最好的例子,趁著這波 AI 的熱潮,打進精準醫療最核心的部分 — 基因體(Genomics)。相信很多人對 DeepVariant 既期待又怕受傷害,在此想跟大家分享我的觀察和心得。本文主要不是介紹 DeepVariant 的技術,而是想拉高層次來探討 Variant Calling 的挑戰與機會。
次世代基因體定序(Next Generation Sequencing, NGS)是精準醫療不可或缺的一種技術,讓我們可以精確到基因體上每個 base-pair到底出了什麼狀況(理論上)。但 NGS 還需搭配後續一連串的資料分析流程才能真正運用到臨床或研究上,常用的分析流程是用 Resequencing ,步驟如下圖一所示:
NGS的資料分析最複雜也最重要的一個步驟就是變異點偵測(Variant Calling),而變異點可以簡單地分成兩類:
第一類是單點變異(正式名稱為「單核苷酸多態性」,英文全名是Single Nucleotide Polymorphism;簡稱 SNP )和小片斷變異(包括Insertion 和 Deletion,簡稱 Indel );
第二類是結構型變異(Structural Variant),包含Insertion、Deletion、Duplication、Inversion和 Translocation。有些人會再把 Copy Number Variant (CNV) 和 Gene Fusion 特別分出來討論,也有些人會把CNV歸到Duplication中,Gene Fusion歸到Translocation中。
本文針對目前枱面上大家常用的第一類型的變異偵測工具來進行討論與分析,不自訂新的 benchmark 方式或重跑實驗,只單純針對己發表的論文和數據進行討論。當然,第二類型變異的偵測更具挑戰性,也很值得深入探討,之後會再以專文來為各位介紹。
先下一個小結論:
這是一場沒有永遠贏家的戰爭!
為什麼沒有永遠的贏家呢?原因主要有三點:
第一、定序儀器一直在進步 (資料特性會改變);
第二、工具一直在進化 (演算法、運算平台會演進);
第三、應用一直在推陳出新 (白話:研究必須有新梗才能發表論文)
所以造就了大家都是贏家,但大家都沒有贏得最後的勝利。也因為這場戰爭還沒結束,所以才值得進行探討,藉由收集各陣營的數據來進行討論,推測未來戰況的發展供大家參考。本文打算分成三個章節來進行探討,首先由「公正的第三方」角度來說明如何設計實驗及比較結果,接下來由「各說各話」的方式介紹每個工具怎麼包裝自己的好,最後分享自己參加 PrecisionFDA 的比賽心得(「小道消息」)來提供大家另一個數據作為參考。
「公正的第三方」篇
針對這個研究議題,最好的方式就是參考 Review Paper 。而看過 Review Paper 的心得是:好像沒有誰是最好的耶!例如圖二就是 2015 年發表在 Scientific Reports 上的文章[2],以 Venn diagram graph 來呈現不同 Caller 之間的關係。
隨著時間演進,有越來越多的工具被開發出來,Venn diagrams 的呈現方式己無法幫助數據解讀,就又退回以表格方式提供多種 Indicator 來進行比較,如圖三就是 2017 年發表的文章[3]進行 8 種工具的結果比較,之後再選定重要的 indictor 以圖四的方式來呈現各個工具在不同 Allele Frequency 下的表現,最後結論是說 VarDict [4] 整體來看是最好的,只是又有但書:
Taking everything into account, VarDict performed best. However, our results indicate that there is a need to improve reproducibility of the results in the context of multithreading.
因為有些工具會因為 Multithreading 而跑出不一樣的結果,會影響到 Reproducibility,也讓「公正的第三方」無法控制這個變數所帶來的影響。
接著,身為生物資訊平台商的 DNANexus 也以公正的第三者角度來評估這些工具,於2017年底配合 Google DeepVariant 推出,順勢公佈其評量的數據[5],採用 Garvin Institute 於 2014 年釋出的 HiSeqX Genome data 和一組 NovaSeq data 來做 Benchmark,如圖五所示, DeepVariant 在 FP 和 FN 的表現都比其它工具來得好。圖六是其執行時間,GATK 己經夠慢了,DeepVariant 竟然還比它慢一倍。當然,身為平台商,鼓勵使用者多開幾台機器就可以加速整個處理時間,可以得到更好的結果,何樂而不為呢?
接著 DNANexus 於2018年4月隨著 DeepVariant v0.6 版的釋出又再發表其評量結果[6],因為在 DeepVariant v0.6 的 training data 加入 PCR+ data,大大提升其準確率,在 SNP 部分原本就領先 GATK 和 Strelka2(如圖七),在 Indel 的部分,在這次改版後有明顯進步,如圖八所示。
最後,由 Blue Collar Bioinformatics (bcbio)這邊提供的 validation 結果 [7] 看來,DeepVariant 似乎又比 Strelka2 在 Indel 的部分來得差一點,不過在 SNP 這邊應該就跟 DNANexus 的結果一致。
另外,有人針對 BGI-SEG 的資料來進行評筆[8],在 SNP 的數據看來,DeepVariant 還是最好的(如圖十)。比較意外的是,Strelka2 的 FN 比其它工具來得多很多。當然,這個原因是因為所謂的正確答案如何收集,後面會再詳細說明。
由以上這些數據來看,Broad Institute 的 GATK 看起來像年邁力衰的武林盟主,大家都對他下戰帖,而 DeepVariant 這位後起之秀看起來準備要成為武林至尊了。所以,武林又將恢復平靜了呢?還是武林又將近入另一場腥風血雨呢?
以公正的第三方角度來看,真正的挑戰是如何訂定所謂 Golden Standard 的Benchmark dataset,還有採取的評量的指標設定也有很大的影響。綜合以上資料,個人覺得這場戰爭還無法定調,如同前面所提的三個主要原因:資料特性、運算技術和應用場景等。所以,我們接下來看看每個挑戰者練出怎樣的獨門絕招。
「各說各話」篇
如何從茫茫「工具」海中,選出那些值得進一步分析也是一個難題,所以參考 Google Trend (圖十二)來看看幾個比較有人在關注的工具進行探討。
在 2017 年底前,第一類型的 Variant Caller 雖然眾多,但大家公認 Broad Institute 的 GATK 3.7 應該是首選,不管是臨床研究或新方法的開發,都會以 GATK HaplotypeCaller 為基準。從圖五的時間軸上可以發現幾個現象, Google 在 2017/12/4 公布他們所研發的 DeepVariant [1]後,攪亂了這一池春水,但似乎只攪亂一下下而己,GATK4 後來有取得大家的關注。雖然這個 N 值並不像 iPhone 或 Tesla 等一般消費性產品那樣得到大眾的注意,只有真正在做基因體相關研究或檢測服務的人才會有興趣進行查尋,所以本文只是藉由這個時間軸來讓文章好鋪陳。
Broad Institute 所開發的 GATK 應該是不管學術端或產業界最常使用的工具,所以它不需要提供 GATK 有多厲害的數據,但它被詬病的是執行時間太久的問題,所以在今年初 Broad Institute 釋出 GATK 4.0 主要賣點就是可以跑在 Spark 上進行分散式運算來加速執行效率[9],如圖十三所示。
不過,由圖十二的時間軸看來,GATK 4 帶來的吸引力似乎沒有 DeepVariant 來得大,畢竟引入 Spark 對大部分的 Bioinformatician 又墊高了進入門檻,另一點是 GATK 4 的結果號稱跟 GATK 3.7 是一樣的,只是 execution time 和 scalability 的提升而己。
以下就挑些具代表性的 Callers,分析其如何說自己的好,供大家參考。
16GT
是 Johns Hopkins 團隊於2017年所發表的 [10],誠如其名,它主要是由 16 個 GenoType probabilistic models 所組成,號稱又快又準。如圖十四所示,實驗以 the Genome In a Bottle project 所提供的 NA12878 WGS sample (53-fold) 為主,針對時間和準確性來進行評估。所謂的快,應該只是跟 GATK HaplotypeCaller 比來的快,沒什麼說服力;所謂的準,由圖十四的數據並看不出來,如何還能發表在 Gigascience 上呢?這就是重點所在。首先,作者先說 GIAB 的答案不公平(biased toward to GATK),因為這組所謂的答案是由 GATK-based 分析流程所產生的。接著,針對自己的 False Positive 的部分,以 dbSNP 和 Illumina Omni 2.5 SNP Array的結果來輔助說明這些所謂的 FP 並不是真的 FP,而是 True Positive。同時也間接打臉上面所謂「公正的第三方」的結果,很多 benchmark 的 Golden Standard 實際上只是 Confidence 較高的資料集而己。小結,雖然只用 NA12878 的數據來驗證,但提出其它數據來佐證自己的正確性,這部分蠻具說服力的。
Strelka2
是由 Illumina 團隊於 2017 年所發表 [11],提出一種 efficient tiered haplotype modeling strategy 和 novel mixture-model based estimation for indel error parameter,一樣強調其又快又準。快的部分,它直接拿 Sentieon 的 DNAseq Haplotyper 來比速度,因為 Sentieon 的 DNAseq 是 high-speed GATK Haplotyper reimplementation,也就是跟 GATK 是相同 mathematics,只是利用不同的實作方式來加速,號稱比 GATK 快 10–30 倍[12]。所以,Strelka2 還比 Sentieon 快 2 倍以上,這部分就非常具說服力;而準的部分,它以 PrecisionFDA 之前舉辦的 Consistency and Truth challenge 的資料,由圖十五(a)的 ROC Table 可以看得出來 Strelka2 比 Haplotyper 好,而且比當初比賽冠軍還要好,這部分也很具說服力。
DeepVariant
由 Google 團隊於2017年底發表[1],攪亂了這個平靜的武林,前面章節己經提過很多他的豐功偉業了,這邊想介紹他的作法。如圖十六所示,(A) 是一個單點變異的狀況;(B)是 Hetero Deletion;(C )是 Homo Deletion;而 (D) 是 False Positive。收集每個位置 Read Mapping 的結果,將它轉成類似影像的資料(RGB pixel value),即可用 CNN 來做 Training。技術細節的部分可以參考[13]。
另一個值得跟大家分享的是 DeepVariant 的 Training [14],WGS 和 WES 分別訓練出一個 model,這表示 WGS 和 WES 的資料特性差異很大。上個章節有提到 DeepVariant 在 v0.6 版時加了 PCR+ Data 來提升正確率。根據圖十七,在 v0.5 版時,訓練 WGS model 時有加入 WES 的 data,希望能提升準確率,但後來發現並沒有預期效果,所以在 v0.6版時又把 WES data 全部拿掉。
結果的部分[13],資料集是拿 PrecisionFDA 的 Truth Challenge,評量指標算是蠻完整也公平的呈現數據。這部分蠻具說服力的,有趣的一點是:完全沒有提到時間或運算資源。事實上,只要能得到更好的結果,其它都不是問題,就算需要多一倍的運算資源,更何況 Google 號稱 resource 是 unlimited!猶如孫悟空駕著筋抖雲來參加這場赤手空掌的武林之戰,明顯的跟其它參賽者有著不同高度來展示自己的獨門招式。
GATK4 CNN
Broad Institute 的 GATK 自從推出 HaplotypeCaller 後,嚴然成為武林盟主。2017年是它最難過的一年了,一堆強大的挑戰者們如雨後春筍般地冒出,又被 Google 挖走了兩位主力開發者戰力大減,之後又遭 DeepVariant 的襲擊,表面上看起來早己失去武林的地位了。
但從他這幾年的戰略來分析,我心目中的王者仍是 GATK。首先,在 GATK HaplotypeCaller 取得領先地位時,他不是坐以待斃等者大家來挑戰,而是開始結合 Google 和 Intel 來解決其遇到最困難的系統架構的問題 — 「Performance 和 Scalability 的瓶頸」。Google 用其 Cloud Technology 和 Service 來解決 Scalability 的問題;Intel 用其 CPU instruction library 和 FPGA 等來解決 Performance 的問題。不過,這兩種解決方式都有被特定廠商 Lock-In 的嫌疑,所以目前仍未取得武林的認同。但在些過程中,設計出了 支援 Spark 平台的 GATK 4 看起來是最具話題性和技術性的突破了,雖然對其準確率完全沒有幫助,也因此造成他在準確率上一路挨打。
2018年1月9日在 Facebook 上直播的 GATK 4 發表會深深吸引了我的目光,雖然大家那時候都被 DeepVariant 給吸引走了(從圖十二所觀察得到)。當解決了 Scalability 的問題後,吸取了 Google 和 Intel 的一甲子功力後,要再練什麼神功都會易如反掌的。所以,過了不久,他也輕輕鬆鬆就練成 CNN 這招[15],除了特徵值上的選取比 DeepVariant 來得多樣性(圖十九),最後的結果更在 Indel 的部分大勝 DeepVariant(圖二十)。再度以王者之尊回到擂台上等大家來挑戰。
介紹到此,大家是否覺得武林終將恢復平靜了呢?
讓我們繼續看下去 …
「小道消息」篇
其實,武林之大,高手如雲。這場戰爭不會只有一個戰場,讓我不得不提及兩位值得尊敬的高手 — Sentieon [16] 和 Edico Genome [17]。
2014 年成立 的 Sentieon 的主要目標就是解決 GATK HaplotypeCaller 執行時間太久的問題,因為 GATK 是 Java 寫的,所以他們以 C/C++改寫來加速其執行速度,號稱可以快10–30倍。因為號稱跟 GATK 結果一樣,所以之前準確率的部分較少著墨。事實上,在他們參加 PrecisionFDA 比賽得獎後(圖二十一),他們也開始強調他們比 GATK 來得準,亦或說一致性(Consistence)。因為 GATK 會因為 multthreading 或 downsampling 而造成結果會有不一致的問題,因為 Sentieon 在效能上大大提升,所以他們也不需要做什麼 downsampling了,可以解決一致性的問題。
另一位是 2013 年成立的 Edico Genome,利用 FPGA 的硬體加速來打這場戰,可以加速 50–80倍快。另外,他還強調準,由圖二十二可看得出來,他跟 DeepVariant 是同一個等級。他是所謂又快又準的代表,也因此,今年中就被 Illumina 給下了 $100 Million USD的聘金給娶回去了。
其實,我們也有參與這場加速的戰役,自 2015 年就開始研發讓所有的 Bioinformatics Tool 可無縫地跑在 Spark 平台上,不用修改原程式的前提下進行加速。因為不是所有團隊都能像 Broad Institute 能有 Google 和 Intel 的支援來讓原本的程式改寫成 Spark 版,所以我們提供一個 Adapter 來讓使用者需要的工具馬上得到 Spark 上加速的效益。只是,純分散式運算的加速效果還是有限,又受制於客戶環境硬體有限,目前僅達 10 多倍而己,與 Edico Genome 和 Sentieon 在速度上仍有些差距。
最後想分享的是我在 2017 年參加 PrecisionFDA 的 Hidden Treasures - Warm Up [19],為什麼要挑這次的比賽來討論呢?第一、之前文章提到具份量的挑戰者都來了;第二、這也是我唯一參與的一次,所以我也只能講這場比賽的心得。這次比賽是由主辦單位在資料中藏了 50 個變異點,看看參賽者能不能找出這 50 個,全找到的就給「Variant Catcher」的封號。有 30 位來自世界各地的參賽者,上傳了 86 組結果。很遺憾地,我們沒有得到「 Variant Catcher」的封號,原因是選錯 Exome kits 來分析導致漏掉一個 insertion。
由圖二十三這邊想跟大家分享的心得如下:
- 因為我主要是用 GATK 來做 Variant Calling,所以結果跟第二位來自 Broad Institute 的結果差不多。比較好奇的是,他也少找到一個 variant,不知道是不是跟我一樣弄錯了 Exome kits。
- Edico Genome 除了是 Variant Catcher 外,不管在 SNP 或 Indel 表現都不俗。不過,他們總共上傳了 7 組結果,只有 5 組是 Variant Catcher。
- Sentieon 派了 3 個人參賽,上傳了 10 組結果,10組都是 Variant Catcher。另外,在結果的部分也比 GATK based 來得好一些,看來是有偷藏幾招。(據說他們團隊裡有幾位是參加 ACM 程式比賽的常勝軍)
- 大家眾所期待的 Google 的 DeepVariant 也有參加這次的比賽,雖然由 Precision/Recall/F-Score 來看表現還不錯,但對主辦單位人工植入的 Hidden Treasures 卻跌破大家的眼鏡。有點像棒球的左投剋左打的感覺,人工智慧訓練出來的模型被人工植入的變異點給剋住了。當然,這邊只是就結果論,真正的原因只有當事人才知道,希望不會像我發生的這種蠢問題導致的。
- 另外由其它參賽者可以得知還有那些單位對這個領域有興趣,如 Samsung 和 Beijing Institute of Genomics (BIG)等。
提供這些小道消息,用意不是要評論誰比較厲害、 誰比較差。主要是希望藉此讓大家了解這個領域多有趣,吸引更多有興趣的人一起加入這場戰役。或者有人知道其它小道消息的,也歡迎分享。
由於基因體的奧妙博大精深,再加上 NGS 技術日新月異。深信,武林是不會有平靜的一天的。可惜這次 Deep Learning 的武林盛會沒機會參與到,期待下一次武林的腥風血雨,更希望是由我們來點火。
最後,希望藉由此文分享讓大家更了解這場戰爭的遊戲規則,加速精準醫療的基因檢測能早日落實到臨床。其實這場戰爭會是有唯一的贏家,那就是:
「全人類」!
[1] https://ai.googleblog.com/2017/12/deepvariant-highly-accurate-genomes.html
[2] https://www.nature.com/articles/srep17875
[3] https://www.nature.com/articles/srep43169
[4] https://www.ncbi.nlm.nih.gov/pubmed/27060149
[5] https://blog.dnanexus.com/2017-12-05-evaluating-deepvariant-googles-machine-learning-variant-caller/
[6] https://blog.dnanexus.com/2018-04-18-deepvariant-amplified/
[8] https://github.com/SVAI/RecausalNucleotideNetworks/blob/master/ReCausalNucleotideNetwork.pdf
[10] https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5570013/
[11] https://www.biorxiv.org/content/early/2017/09/23/192872
[12] https://www.biorxiv.org/content/early/2018/08/20/396325
[13] https://www.biorxiv.org/content/early/2018/03/20/092890
[14] https://github.com/google/deepvariant/blob/r0.7/docs/deepvariant-details.md#training-data-over-time
[15] https://software.broadinstitute.org/gatk/blog?id=10996
[16] https://www.sentieon.com/