年初的工作要求,小組就四個基因雲端平台: AWS 基因體雲端運算 、 Microsoft Genomics 、 Cloud Life Sciences BETA 版 與 阿里雲 基因數據分析管理 分頭進行 survey。
我這邊負責 survey Microsoft Genomics。
基因定序流程
DNA(圖片來源: Pixabay)
在開始之前,我們先提提基因定序的流程。一般來說,從採檢生物樣本到最終提出變異報告,可分成三個階段。
這裡採用 MS 在 Genomics 白皮書中的分類定義:
1) 初級分析(Primary analysis)
這個階段會先檢測採樣的生物樣本,如血液或唾液…等,經由專業儀器分析後產生原始資料。
此階段多在生物實驗室中進行,研究員會使用定序設備對 DNA 序列進行鹼基識別,並同時記錄定序儀在鹼基識別過程中的信心程度。最終定序儀會產生 30 倍定序深度的定序片段資料,連同其它的詮釋資料,如剛剛所提到質量信心分數,一起產生約 60 GB 的壓縮原始資料。
2) 次級分析(Secondary analysis)
此階段會將定序儀產生的原始資料與參考基因體進行比對,並將樣本與參考基因體不同處,及變異位點,一一標出。此階段可以在細分成兩個步驟:
-
找到比對位置
每個定序片段必須從 30 億個可能位置中找的原本的位置,才能與參考基因體進行比對。 -
變異位點偵測
它會從定序片段與參考基因體的比對結果中找出相異處,並確定它們是定序錯誤還是樣本中的真的產生變異。變異從點突變到結構變異都有可能。
3) 三級分析(Tertiary analysis)
此階段會為變異位點添加注釋,以協助解釋其生物學或臨床上的意義。最終產生報告以闡明該樣本與參考基因體的差異及其差異含義。
這階段取決於分析的目的以及臨床醫生或研究人員的總體方法,此階段使用了各種各樣的工具和資料庫。
Analysis Pipeline(圖片來源: Bioinformatics for Clinical Next Generation Sequencing)
不過,這分類不是絕對的,比較像業界的潛規則(de facto standard)。就有曾經看過把 Annotation 列在次級分析的步驟中,例如:MS Azure 就在自家提供的 Databricks 文件中描述 Genomics 的操作步驟時,就將它給列在次級分析。
MS 其他服務就把它分在次級分析(圖片來源: MS Azure Databricks)
Microsoft Genomics
回頭來看這次的主角 - Microsoft Genomics,按照官網的簡介稍微回顧下:
簡介
-
目標客群
研究員、資料科學家與臨床醫生等工作者。 -
提供服務
- 雲端 Burrows-Wheeler Aligner(BWA)以及基因體分析工具(Genome Analysis Toolkit,GATK)。
- EB 規模工作負載的資料中心與 HPC 級的 CPU,提供分析時所需的儲存與計算能力。
-
使用者付費
可以依需求擴充或縮小規模,只需支付使用到的部分以降低成本。 -
資料管理
- 資料的操作與保管使用有通過 ISO 認證並遵循 HIPAA 法規 ,確保患者紀錄和健康資訊的隱私。
- A Practical Guide to Designing Secure Health Solutions using Microsoft Azure。(…誰看完了分享一下吧!記錄一下有這東西就好,實在有需要再回頭看吧。
Microsoft Genomics(圖片來源: Microsoft Azure 截圖)
簡單來說
MS Genomics 提供儲存與運算空間,讓使用者做無需處理軟硬體維護與更新,就可以執行次級分析: GATK 標準分析流程。其他的附加價值是突顯在儲存的可靠性、方便性、計算速度與計價方式上。
上一張他家合作夥伴 Persistent 的圖,這張圖很好的詮釋了 MS Genomics 所提供的服務範圍。下圖中橘色的部分是合作夥伴 Persistent 所提供的服務,可以看出來是針對三級分析與二級分析的輸出結果進行衡量,這也是第三方所能做的部份;而鐵灰色的部分則是MS Genomics 所提供的次級分析服務。
灰色底的為 MS Genomics 所提供的服務,橘色底則為 Persistent 所提供的服務(圖片來源: Persistent Systems)
還有一張我覺得也可以的說明圖,但我不曉得要塞哪裡 😂 ,只能先放這之後再看看要塞哪裡吧 XDDD
Microsoft Genomics Service(圖片來源: Microsoft Genomics)
系統架構
系統架構分成兩部分來看,先看 Microsoft Genomics 內部的架構,接下來再來看整體的工作流程。
內部架構
Microsoft Genomics 系統由上而下總共可分為三個部分,分別是:Service Controller、SNAP Engine、SNAP Engine 與次級分析的 pipline - BWA-MEM & GATK HaplotypeCaller。
Microsoft Genomics Architecture(圖片來源: 白皮書)
Service Controller
此區塊是用來管理分布在機器集區(pools of machines)裡的一批基因體的處理,主要用接收 API 請求、安排工作佇列以及管理 Azure Batch 中跨機器集區的執行。
前端會接受來自 Azure API 的請求,並將它放置在工作佇列中。而 Web Job Application 則會為佇列中每個項目進行排程,將它們分發到運行基因體引擎的伺服器,並監視其性能與進度,最後評估結果。
當 Azure Batch 執行任務時,service executable 下載參考資料和輸入文件,並執行 SNAP 引擎,再將結果寫入文件流回到 Azure Storage,最後報告完成情況。
最後的分析結果接著向下做三級分析和或是其他機器學習。
SNAP Engine
SNAP Engine 這是 Microsoft Research 與 UC Berkeley AMPLab 一起合作開發的 SNAP short read aligner。不過此版本不使用 SNAP alignment 演算法,而是改採 BWA MEM。主要用來規劃單一樣本於單一機器上的 IO 與所有計算的流程。。
(…恩,所以把 SNAP 核心演算法弄掉了,為啥還叫 SNAP Engine?)
Standard BWA/GATK Pipeline(圖片來源: 白皮書)
這是一張 GATK 的標準流程,每個綠色區塊之間都進行了一次讀寫動作。而 SNAP Engine 宣稱它具有一個非同步輸入/輸出子系統,可有效處理大量基因體資料,並排程跨多核心的計算密集型工作並收集結果。
為了儘量減少硬碟讀取次數,他們改良了 pipeline 的流程只進行兩次的讀寫動作,減少了標準 BWA/GATK pipline 中的讀寫次數。
Standard BWA/GATK Pipeline(圖片來源: 白皮書)
可以看到改良後的 pipeline 會分成兩個階段,在第一階段是跨所有核心進行大量批次定序片段比對;但特別的是,進行前處理時不依賴任何的排序,例如:收集用來做定序質量分數重新校正的統計資料。完成後,將定序片段依序批次寫入中間文件。
第二階段將所有 batches 合併到一個定序片段的 single fully-sorted stream 中,並完成預處理和後處理步驟:應用 BQSR 統計信息、標記重複項、構建 BAM 索引以及壓縮 BAM 文件。
在編寫 BAM 文件的同時,此階段還協調了幾個 GATK 流程來進行變異點偵測,識別潛在變異點附近的激活區域,並僅將那些定序片段直接輸送到 HaplotypeCaller 中以提高效率。由於排序是 IO 密集型的,而變異點偵測是 CPU 密集型的,因此可以有效地平衡機器資源的整體使用。
標準的 GATK 分析流程管線中通常按順序執行每個步驟。每個步驟都必須讀入上一步生成的文件,因此必須等待它完成。如圖 2 所示,若將工作依基因體的不同區域分進行劃分,則在一個步驟中就會存在平行性可能(例如:分別在每個染色體上運行 MarkDuplicates)。
根據微軟的合作夥伴表示,整套次級分析的時間會由原先的 28 小時降至 4 小時,僅需原先時間的 1/7 。
BWA-MEM & GATK HaplotypeCaller
先提一下 HaplotypeCaller 的核心操作就是四步:
- 尋找激活區域,就是和參考基因體不同部分較多的區域。
- 通過對該區域進行局部重組裝,確定單倍型(haplotypes)。就是這一步可以省去 indel realignment!
- 在給定的read數據下,計算單倍型的可能性。
- 分配樣本的基因型。
在這裡 BWAMEM 和 GATK HaplotypeCaller 大部分的程式碼保持不變,以確保與標準 pipelines 的兼容性。僅少量修改預先計算的激活區域通過 pipelines 輸入到標準 input 中,也就是上述提到的第一步驟,因為這步驟沒有相依性,故可以拆開來做。
整體的工作流程
Microsoft Azure workflow(圖片來源: CromwellOnAzure)
由找到的流程圖看來,他們後面用的 Cromwell,不過是有經過客製化,稱作Cromwell on Azure,搭配 TES 最回後端來調用 Azure Batch 。若是對回服務內部的架構來看,被我暱稱飛天豬+TES的這部分,會對照回 Service Controller。
至於 WDL 則是下一張會提到的 msgen。
執行 Microsoft Genomics 服務
其實這邊有如果需要以直接看 MS Genomics 的官方文件。若是想要看圖文手把手教學,可以看看這篇《次世代定序二次分析 Microsoft Azure Genomics》。
不過這邊還是留一下紀錄:
事前準備
- Azure 帳戶
(廢話),並準備 Azure Blob 儲存體 帳戶與 Microsoft Genomics 帳戶。 - 準備基因資料 FASTQ 或是 BAM 格式皆可。
-
安裝 pip 與 Python 2.7.12+。
注意是安裝 Python 2 不是 Python 3,兩者不相容。
執行步驟
- 設定:
- 若沒有 Microsoft Genomics 帳戶請參考教學文件。
- 安裝 Microsoft Genomics 命令列介面。
1
2$ pip install --upgrade --no-deps msgen $ pip install msgen
- 上傳輸入檔案:
- 若沒有 Microsoft Azure 儲存體帳戶請參考教學文件。
- 將準備好的基因配對 (fastq 或 bam 檔案)上傳到儲存體。這邊有公開的範例資料可用:
- https://msgensampledata.blob.core.windows.net/small/chr21_1.fq.gz
- https://msgensampledata.blob.core.windows.net/small/chr21_2.fq.gz
- 執行:
- 設定
config.txt
檔案,主要是必須包含:訂用帳戶金鑰、儲存體帳戶名稱、輸入和輸出的金鑰與容器名稱。 - 最後就可以透過 Microsoft Genomics 命令列介面提交工作流程。
1
$ msgen submit -f [full path to your config file] -b1 [name of your first paired end read] -b2 [name of your second paired end read]
工作狀態的檢視
1
$ msgen list -f c:\temp\config.txt
- 設定
注意與限制
-
Microsoft Genomics 命令列介面看來是 MS 包裝好 WDL,但根據說明能改動的似乎不多:
- 可將 process_name 參數設定為 gatk4 以改成,以執行 GATK4。
- 新增 emit_ref_confidence 參數設定為 gvcf,以輸出 gvcf。
- 無法提交多個個體的 FASTQ 或 BAM 檔案,所以若要分析多個個體資料只能分別下指令。
不過跟同事討論了一下,MS 這套 WDL 的設計應該是先前 Survey 的資訊一樣,是為了研究員或臨床醫生這些非資訊背景人員所設計的,所以設計的挺好上手的,但代價就是可以修改的地方不多。
看起來整套的核心就是,Controller 的 Batch 監控與 Engine 的用跨多核心的計算密集型工作排程並結果回收,其實這兩區塊要刻應該也是可以,但工會非常的大。這邊應該有辦法可以不借助 msgen 自己撰寫 WDL 才對(不負責任猜測。
使用案例
這邊就不寫了,直接看這份《Partnering to Advance Clinical Genomics》 。
就目前 servey 看來幾個基因雲端平台最多人使用的依序分別為:AWS > Azure > google。
參考資料
- 李建興 (2018-03-01)。基因定序也要上雲,微軟發表基於Azure的Microsoft Genomics 。檢自 iThome (2020-02-10)。
- Genomics - Azure Databricks。檢自 Microsoft Docs (2020-02-10)。
- Microsoft Genomics 支援基因組定序及研究深入解析。檢自 Microsoft Azure (2020-02-10)。
- Accelerate precision medicine with Microsoft Genomics。檢自 Microsoft Genomics (2020-02-10)。
- Microsoft Genomics And Azure - Partner EcoSystem。檢自 Persistent Systems (2020-02-10)。
- microsoft/CromwellOnAzure。檢自 Github (2020-02-10)。
- amplab/snap。檢自 Github (2020-02-10)。
- SNAP Scalable Nucleotide Alignment Program。檢自 UC Berkeley AMP Lab (2020-02-10)。
- Partnering to Advance Clinical Genomics。檢自 Microsoft Genomics (2020-02-10)。
- hoptop(2017-05-03)。 GATK之HaplotypeCaller。檢自 生信技能树 (2020-02-10)。
- Scalable and Secure Genomic Data Analysis on Azure。檢自 Microsoft Genomics (2020-02-10)。
- Chaitanya Bangur (2019-10-11)。Powering genomics tools and analysis with cloud computing 。檢自 Microsoft Industry Blogs (2020-02-10)。
- Todd Bergeson (2018-04-17)。Leveraging the power of cloud computing to fuel genomic research 。檢自 Microsoft Industry Blogs (2020-02-10)。
- A Practical Guide to DESIGNING SECURE HEALTH SOLUTIONS Using Microsoft Azure。檢自 Microsoft Genomics (2020-02-10)。
- Amazon Web Services (2018-07-02)。Accelerating Analytics for the Future of Genomics。檢自 SlideShare (2020-02-10)。
- Brannann (2019-07-29)。次世代定序二次分析Microsoft Azure Genomics。檢自 Brannann - Medium (2020-02-10)。
- Jenn Roth (2018-04-26)。Maximizing the value of genomic data in healthcare。檢自 Microsoft Genomics (2020-02-10)。
更新紀錄
最後更新日期:2020-05-19
- 2020-05-19 發表
- 2020-02-10 完稿