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