在2016杭州雲棲大會首日,來自華大基因的基因組學資料專家黃樹嘉在大資料專場分享了《基於數加MaxCompute的極速全基因組資料分析》,他主要從全基因組測序的背景與原理、傳統單機分析流程的挑戰、基於MaxCompute的方案三個方面進行了分享,詳細介紹了華大基因運用阿里雲處理海量的實踐。

以下內容根據演講PPT及現場分享整理。

什麼是基因

jy1

基因是生命的基本因素,是人類和其他生物的基礎遺傳物質。細胞內有染色體,染色體是由一個一個的DNA鹼基組成的,這些DNA鹼基表現出來的是一個個的字串。人共有23對染色體,有30億個鹼基對,我們在處理的過程中可以把它看作30億量級的字串。一個人擁有這麼大的資料量,我們在對其進行解讀的時候,為了保證資料的準確性,需要有幾十層資料的解讀。30億個鹼基對多麼重要?一個人生老病死、健康與否的資訊都會儲存在基因中,所以,所進行的關於健康資料的研究是更直接的、更加面向這個人的本質。

什麼是基因測序

如何獲得細胞裡面的資料?獲得基因資料需要有一定的專用儀器,通過物理或者化學的相應方法,把處於細胞中的相應資料讀取出來、數字化,我們才能對其進行相應的解讀。

基因資料

jy2

為什麼基因資料的資料量非常大?從上圖中可以看出,我們的基因資料不僅僅是來自細胞核中的基因組,其還包括轉錄組、表現組(比如腸道衛生基因組、表觀基因組等)、巨集基因組等。這些資料加起來大約會有10T的數量級。基因資料的分析過程包括:測序,即從化學訊號轉為數字訊號;資料記錄成相應的資料格式;解讀、比對、資料分析,以此來知道這個人為什麼會如此的不同?為什麼容易患病?為什麼能夠千杯不倒?為什麼代謝咖啡的速度會特別快?最終形成資料包告。

傳統單機分析流程的挑戰

挑戰1:流程繁雜,標準難統一

由於基因行業是一個比較新的行業,各個企業的標準難以統一。在分析過程中,會有很多步驟,而且每個步驟都會包含很多分析指令碼,系統命令和外部工具,工具要被反覆手動部署到計算叢集,導致分析流程變得比較繁雜。隨著基因組測序成本的降低,其測序的資料量不斷提升,這種低效的方法已經阻礙了基因行業的發展。

挑戰2:命令列操作、互動性差

jy3

繁雜的命令列操作導致了互動效能的低下。

挑戰3:時間長

jy4

最致命的問題是分析時間過長。目前最先進的測序儀每一次測序的資料產量是1.5TB(大約為150人的資料量),並且產出這些資料的時間為3.5天。用傳統的HPC叢集進行分析的話,基本需要3天的時間來分析一個人的資料,而單個節點的話則需要5.8天的時間。由此可以看出,資料解讀的效率遠遠跟不上資料的產出速度,這就為精準醫療後續的發展帶來了極大的挑戰。因為精準醫療就是要精準到個人的個性化用藥,每個人的所有性狀資訊只有通過基因資料的分析才能做到個性化醫療。

基於MaxCompute的方案

如何及時的把這麼多的資料解讀出來,是現如今面臨的挑戰。為了解決上述挑戰,提出了基於MaxCompute的解決方案。

MaxCompute分散式計算

jy5

把最常用的基因組的解讀放在了MaxCompute上部署,這個過程與單機部署的過程完全不一樣。此過程需要把產出資料到得到最終結果的過程中的每一步利用MaxCompute的思維將其分散出去,然後把如何去並行、如何加快有效速度在過程中呈現出來。

加速情形

搭建出這個流程之後,一個人的基因資料總共測了52層(即測試了52倍,大約為120G的資料量),該測試基本在3個小時之內就完成了分析,比單機提升50+倍,比HPC叢集提升25+倍,比Hadoop叢集提升6+倍。

群體測試

實際上,在基因解析的過程中,是多人同時分析的。每個人都是屬於一定的群體的,我們要更好的解讀這個人,就必須放在對應的群體中,而且基因組資料只有你將人放在群體中來分析才能夠更加準確、更具有表達力。從華大資料中抽取了50個人的基因進行測試,整個測試分解為兩大步驟、七萬多工量的提交,只消耗了41.5個小時就完成了50個人的整體基因組的分析,平均每個人只需要花費50分鐘進行測試。

jy6

為什麼單個人需要3個小時,50個人反而是41個小時而不是150個小時?在人群中分析基因組資料時,很多中間的步驟其實可以分散出去,最後並不需要每個人一個一個的去讀取,而是群體分析資料情況,因此,時間狀態總的來講是縮短了。如果人數由50人加到更多的話,每個人的平均測試時間可以進一步的降低。

總的來說,50個人處理的資料量大約為2T,最終解讀出來的有意義的資料量是21G,這樣就實現了從海量計算,從原始資料到精確資料的變異。