0
本文作者: 張馳 | 2017-02-19 17:57 | 專題:雷峰網(wǎng)公開課 |
雷鋒網(wǎng)按:當基因檢測變得越來越普及,所得數(shù)據(jù)越來越多,對數(shù)據(jù)解讀的需求也由此誕生,而這就是生物信息技術(shù)的作用。本文整理自華點云技術(shù)總監(jiān)于偉文在雷鋒網(wǎng)硬創(chuàng)公開課上的演講,主題為如何用云計算模式實現(xiàn)生物信息分析。
于偉文,高級工程師,上海華點云生物科技有限公司技術(shù)總監(jiān)。是北京航空航天大學(xué)國家示范學(xué)科——“移動云計算”專業(yè)的首批畢業(yè)生。擁有十余年 IT 領(lǐng)域從業(yè)經(jīng)驗,主要關(guān)注于臨床、生物、金融等領(lǐng)域。作為課題負責人,曾主持過國家“十一五” 重大專項子課題;參與多項國家自然科學(xué)基金、國家重點實驗室專項信息化建設(shè)項目。在Nature 子刊、SCI等權(quán)威刊物上發(fā)表學(xué)術(shù)論文10 余篇。
公開課視頻如下:
以下為雷鋒網(wǎng)整理的演講主要文字內(nèi)容。
華點云專注于高通量基因數(shù)據(jù)分析的公司,研發(fā)了一系列基因高通量生物分析工具,有基于NGS的數(shù)據(jù)傳輸、分析、報告、解讀為一體的云端協(xié)同分析解決方案。這次的公開課則主要講講,如何用云計算模式實現(xiàn)生物信息分析。這次公開課分四部分:
一是生物信息學(xué)發(fā)展的歷程,以及當前面臨的挑戰(zhàn)。獲取數(shù)據(jù)的成本越來越低,數(shù)據(jù)量越來越大,現(xiàn)在的生物信息學(xué)面臨的痛點,包括數(shù)據(jù)傳輸、計算及安全等方面。今天主要講高性能計算的痛點。
二是分析NGS標準的生物信息分析的模式,中間數(shù)據(jù)處理的格式是怎么樣的。你可能知道,科研單位主要是單樣本分析,時間長且占資源。企業(yè)一般是多樣本分析,痛點是NGS分析流程比較復(fù)雜,分析時間長,對集成帶來壓力?,F(xiàn)在有兩種計算模式:一種是彈性計算,基本能解決八成的問題;二是分布式計算。
三是云計算模式的特點與優(yōu)勢。
第四部分會以我們的乳腺癌檢測產(chǎn)品為例,看如何在云端實現(xiàn)生物信息分析流程。
1953年,沃森和克里克提出了DNA 雙螺旋結(jié)構(gòu),標志著生物科學(xué)的發(fā)展進入了分子生物學(xué)階段,使遺傳的研究深入到分子層次,“生命之謎”被打開,人們清楚地了解遺傳信息的構(gòu)成和傳遞的途徑。這也開啟了生物信息學(xué)的紀元,雖然當時還沒這種叫法。
生物信息學(xué)之父是林華安,他提出了Bioinfomatics這種詞。右圖是人類基因組計算,自1990年正式實施,是生命科學(xué)的“登月計劃”,也讓生物信息學(xué)走向高潮。
人類基因組計劃中有一個關(guān)鍵人物克雷格·文特爾,到1997年時整個計劃只完成了3%,但時間和經(jīng)費都用去了一半多。文特爾說有方法在3年內(nèi)完成基因組測序,他以一己之力單挑6國科學(xué)家,采用“鳥槍法”以更快的速度完成人類。他本想為自己的方法申請專利,但在克林頓總統(tǒng)的要求下和其它6國科學(xué)進行了合作。
那什么叫測序?簡單來說昌通過中間的測序儀,可以產(chǎn)生ACTG這樣的數(shù)據(jù),而生物信息學(xué)就是分析這些數(shù)據(jù)。
基因測序分為三代。
第一代測序技術(shù)的主要特點:優(yōu)點是測序讀長可達1000bp,準確性高達99.999%,從頭測序,從頭組裝;而缺點是測序成本高,通量低,難以大規(guī)模的應(yīng)用。
第二代測序的特點:大大降低了測序成本的同時,大幅提高了測序速度,維持了高準確性,但序列讀長方面起第一代測序技術(shù)則要短很多。
第三代測序的特點:不需要PCR,避免了PCR錯誤的引入,讀長可達3k,且速度快。
目前第二代測序是行業(yè)主流,后面的分析也是基于第二代??偨Y(jié)如上圖。
上圖是測序成本的趨勢。在2001年時測一個人的基因組花費近1億美元,而2015年時只需要1000美元。
上圖左側(cè)是人基因組個數(shù),右側(cè)表示數(shù)據(jù)量,橫坐標是時間。圖中黑線是真實統(tǒng)計數(shù)據(jù),藍色是摩爾定律預(yù)測數(shù)據(jù),紅線是歷史推測。可以看出,從2017年開始,每年的基因組數(shù)據(jù)會呈線性增長。
接下來看下數(shù)據(jù)量的大小。直接看圖最后的數(shù)據(jù),用最新的測序儀,在19-40個小時即會產(chǎn)生167GB到6TB數(shù)據(jù),這還只是一臺測序儀。
因此,當前考慮的不是基因測序本身的成本,而是數(shù)據(jù)傳輸、存儲與分析的成本。目前面臨的挑戰(zhàn)主要包括(公開課主要涉及高性能計算方面):
數(shù)據(jù)解讀
大規(guī)模的存儲:大規(guī)模的存儲: 混亂、缺乏行業(yè)標準
大量的計算資源:數(shù)據(jù)量大,計算復(fù)雜,時間長、成本高昂
高效的數(shù)據(jù)傳輸
安全穩(wěn)定的運行環(huán)境
數(shù)據(jù)壓縮,這也是行業(yè)難點
上圖是NGS行業(yè)通用全基因組分析流程。測序后,通過標準化的基因組流程分析,然后與對應(yīng)的數(shù)據(jù)庫比對,就能形成標準的分析報告。
而標準的基因分析流程包括:質(zhì)控,mapping,call SNP,注釋。最重要的是mapping和call SNP,這是指它們對計算要求是非常高的。
AC和Trime是質(zhì)控,當?shù)玫綔y序數(shù)據(jù)后,通過這兩步把低質(zhì)量數(shù)據(jù)去掉。mapping是指整個染色體數(shù)據(jù)拼成一條。最后就是去找突變位點在哪,找到定位后即可評估是什么樣的病種,給出一個應(yīng)對措施。
接下來看看每個階段對應(yīng)的數(shù)據(jù)格式是怎么樣的。從QC到Trime都是FastQ格式,具體如上圖所示。接下來會形成FastA格式。而通過mapping會再形成bam/sam格式。sam實質(zhì)還是文本文件,只是對文件格式的定義;bam文件是對sam文件的二進制壓縮,占用存儲,后續(xù)處理速度快。通過call SNP則會生成文本。
接下來以微生物組學(xué)為例看NGS數(shù)據(jù)計算特征。如上圖所示,微生物組學(xué)中,呈現(xiàn)單個樣本數(shù)據(jù)量小、樣本數(shù)量多,及單個樣本數(shù)據(jù)量大,樣本數(shù)量少等特征。同時看到,微生物組學(xué)與參考序列的比對過程中,計算量大。微生物組學(xué)全基因組數(shù)據(jù)的組裝和聚類,對內(nèi)存的消耗也很大。海量樣本微生物組學(xué)數(shù)據(jù)的比較,也需要高IO。所以可以看到,整個NGS數(shù)據(jù)是計算密集型,內(nèi)存密集型,IO交換密集型。
當前行業(yè)生物計算的業(yè)務(wù)場景是:
1.單樣本數(shù)據(jù)量小,樣本量很大:應(yīng)該用彈性計算模式,能解決八成的需求。
2.單樣本數(shù)據(jù)量大,樣本量很?。翰捎梅植际接嬎隳J?。
3.單樣本數(shù)據(jù)量大,樣本量較大:彈性+分布式計算模式。
云計算的特點與優(yōu)勢
整個云計算企業(yè)主要分為IaaS、PaaS、DaaS、SaaS。在云計算下整個醫(yī)療與健康廠商的劃分如上,其中包括了各主要服務(wù)商。
云計算整個特點是:
成本低,以前完成一百個樣本可能需要幾萬元,現(xiàn)在已經(jīng)降到幾元了。
彈性,即可以動態(tài)伸縮,滿足動態(tài)的用戶增長的需要。
以及高可靠性、通用性、虛擬化和超大規(guī)模等特點。
站在生物信息云端
第四部分最為重要,主要關(guān)于如何用云計算解決生物信息分析中存在的問題。
首先是“單樣本數(shù)據(jù)量小,樣本量大”的業(yè)務(wù)場景云端實現(xiàn),這主要用彈性計算來實現(xiàn)。
上圖是以乳腺癌檢測應(yīng)用為例,它基本代表整個NGS標準的分析流程。數(shù)據(jù)特點是單樣本100M,有100個樣本。
傳統(tǒng)SGE集群計算模式單樣本運行時間約15分鐘,共約22小時,而我們的目標是15分鐘全部完成。實現(xiàn)彈性計算,要要求業(yè)務(wù)需求選擇云廠商,這里只需要從IaaS上選擇即可。
先看百度云,它提供批量計算。上圖是百度技術(shù)架構(gòu)圖。第一步是先把數(shù)據(jù)傳到對象存儲BOS中,之后把作業(yè)投到Batch Compute計算集群里面。
再看下阿里云,它也有Batch Compute計算模式,也適用于并行批處理作業(yè)的分布式計算。AWS由于網(wǎng)絡(luò)問題,不太好用。
下面以阿里云為例,講解如何去對Rocky.pl做彈性計算。做彈性計算,是讓機房中的多臺機器同時運行,把結(jié)果寫到指定的OSS里。我們的任務(wù)寫一個程序,快速讓它在機房創(chuàng)建一排排機器(VM1-100),每個VM運行Rocky.pl,輸入與輸出都放到OSS上。這就是主要思路。
在寫程序前,要做四件事,一是做環(huán)境搭建,二是把現(xiàn)有測試數(shù)據(jù)傳到OSS上,三是正式寫程序,四是查看測試結(jié)果。
環(huán)境搭建第一步是創(chuàng)建虛擬機,讓它運行rocky.pl的話,要先做鏡像。例子中搭建的是CentOS6.5,當然這可根據(jù)需求自行決定,另外就是安裝生物信息流程包。通過鏡像可擴展100臺機器。
第二是準備開發(fā)工具。這里以Java為例,需要的環(huán)境是jdk與eclipse。
準備工作完成后,要把數(shù)據(jù)傳到OSS。剛才有三個文件,首先要將它們傳到OSS。上傳方式如上圖所示,可以通過網(wǎng)頁形式,或SDK的方式。
OSS中有幾個概念。
一是bucket,即存儲空間,用于存儲對象(Object)的容器,所有的對象都必須隸屬于某個存儲空間。可以理解成windows下的C盤、D盤。
region是指地區(qū),根據(jù)自己所在地域決定。
頁面開發(fā)人員的SDK方式如上所示,需要輸入賬號密碼,創(chuàng)建OSS客戶端。具體細節(jié)不再詳細展開。
接下來可通過SDK和控制臺的方式查看是否上傳成功。網(wǎng)絡(luò)不穩(wěn)定的情況下可選擇斷點續(xù)傳。
下一步是寫一個小程序,通過封裝一步步實現(xiàn)彈性計算。做之前,要準備節(jié)點,讓jar包中代碼使用這個節(jié)點,這里會用到前面準備的鏡像,并配置節(jié)點。然后是開發(fā)jar包,分別要構(gòu)造job對象,構(gòu)造DAG對象,構(gòu)造task對象,以及OSS與節(jié)點的映射關(guān)系,最后封閉job的其他對象,并啟動job。
這里有幾個名詞要解釋。
job(作業(yè))是BatchCompute的名詞,每次分析操作都可以看成是一個作業(yè)。比如說我們要分析100個樣本數(shù)據(jù),那么當我們將100個樣本當成一個整體,只需要執(zhí)行一次,那么job就是1個。如果將這100個樣本拆分成多個組,每組N個(N<100),那么就會有M個job(M=100/N)。例如每組5個樣本,總共拆分成20個組,那么job個數(shù)就是20。
DAG是directed acycline praph的縮寫,即有向無環(huán)圖,通過它可以把業(yè)務(wù)流程切分成小的節(jié)點。
任務(wù)(task)也是BatchCompute的名詞,是業(yè)務(wù)流程。我們可以將業(yè)務(wù)流程細分成N份,那么就可以有N個task。如果僅僅使用粗糙的業(yè)務(wù)流程,那么task設(shè)定成1即可。另外,每個job可以包含多個task,每個task單獨用1臺計算節(jié)點。
OSS與節(jié)點的映射關(guān)系,是將OSS上的數(shù)據(jù)掛載到節(jié)點上,以后此節(jié)點上的任何操作都是讀取本地目錄上的數(shù)據(jù)。這么做的好處在于減少了頻繁和OSS進行交互,防止交互過于頻繁,掛載連接斷掉。而這種方式只需要最后關(guān)閉節(jié)點的時候,才和OSS交互。
原始DAG的缺點是,每臺計算節(jié)點運算時間很短,但是等待資源時間很長。一般情況下,每個節(jié)點資源需要等待3-5分鐘,而計算的時間可能僅僅幾十秒。總的運行時間可能達到20分鐘。
所以,一個想法是在一個task上運行所有步驟。要這么做,其中的步驟會如上圖所示。
偽代碼則如上所示,具體不再詳細展開。程序非常簡單,也有python和java等各個版本。
前面講述的是一個job的運行流程?,F(xiàn)在我們有100個樣本,每個task運行2個樣本,那么共需要50個task,每個task對應(yīng)1個job,那么就需要50個job。測試階段,我們可以使用for循環(huán),執(zhí)行50次。每個都運行一次job。偽代碼如下:
for (int i = 1; i<=50; i++ ) {
//運行job
}
實際應(yīng)用中,我們是通過一個調(diào)度系統(tǒng),來判斷當出現(xiàn)2個樣本數(shù)據(jù)時,則創(chuàng)建一個job,并啟動job,讓這個job運行1個task,每個task里面執(zhí)行2個樣本數(shù)據(jù)。當有100個樣本數(shù)據(jù)時,我們會啟動50次job。偽代碼如下:
//1.調(diào)度器發(fā)現(xiàn)有2個樣本
//2.1構(gòu)造job對象
//2.2構(gòu)造task對象
//2.3將2個樣本 set到task對象中
//3.創(chuàng)建job并啟動
上圖是真實測試數(shù)據(jù),藍色是開始時間,黃色是結(jié)束時間??梢钥闯觯偤臅r8分鐘,費用是3元(阿里 云結(jié)果)。
用彈性計算方式,有兩個問題。頻繁對OSS讀寫,會造成OSS掛掉;另外,彈性資源有限制 ,比如阿里云限制是300臺機器。
接下來是單樣本數(shù)據(jù)量大,樣本很小的業(yè)務(wù)場景,這又應(yīng)該怎么去做呢?
再來看一下之前出現(xiàn)過的這一張圖。如果單樣本數(shù)據(jù)量大,相對它進行加速,不適用彈性計算,必須對NGS流程中的算法進行優(yōu)化(如各流程中所示)。
再來看看國際上,針對分布式計算的研究進展。Spark是伯克利大學(xué)的研究結(jié)果,而它還有一個ADAM的團隊,它專門用于生物信息計算。Google有自己的Google Genomics,而英特爾、斯坦福和微軟則是基于GATK進行加速,不過目前還沒有成型。
國內(nèi)目前沒看到對生物信息用的算法進行加速,我們現(xiàn)在對NGS分析流程,基于分布式計算實現(xiàn)了加速。我們在fastQC、Trime、call SNP上都有進展。
最后介紹一下彈性分布式計算的架構(gòu)圖應(yīng)該是怎么樣的。底層是公有云,在這些IaaS上,我們會搭建一個NGS的IaaS層,把適合于HPC、Spark、Graph的集群通過轉(zhuǎn)換器封裝起來成一個計算模式,同時把OSS、SSD等封裝起來(DataHub),為上層的PaaS服務(wù)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。