天天看點

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

雷鋒網按:當基因檢測變得越來越普及,所得資料越來越多,對資料解讀的需求也由此誕生,而這就是生物資訊技術的作用。本文整理自華點雲技術總監于偉文在雷鋒網硬創公開課上的演講,主題為如何用雲計算模式實作生物資訊分析。

于偉文,進階工程師,上海華點雲生物科技有限公司技術總監。是北京航空航天大學國家示範學科——“移動雲計算”專業的首批畢業生。擁有十餘年

it 領域從業經驗,主要關注于臨床、生物、金融等領域。作為課題負責人,曾主持過國家“十一五”

重大專項子課題;參與多項國家自然科學基金、國家重點實驗室專項資訊化建設項目。在nature 子刊、sci等權威刊物上發表學術論文10 餘篇。

公開課視訊如下:

以下為雷鋒網(公衆号:雷鋒網)整理的演講主要文字内容。

華點雲專注于高通量基因資料分析的公司,研發了一系列基因高通量生物分析工具,有基于ngs的資料傳輸、分析、報告、解讀為一體的雲端協同分析解決方案。這次的公開課則主要講講,如何用雲計算模式實作生物資訊分析。這次公開課分四部分:

一是生物資訊學發展的曆程,以及目前面臨的挑戰。擷取資料的成本越來越低,資料量越來越大,現在的生物資訊學面臨的痛點,包括資料傳輸、計算及安全等方面。今天主要講高性能計算的痛點。 二是分析ngs标準的生物資訊分析的模式,中間資料處理的格式是怎麼樣的。你可能知道,科研機關主要是單樣本分析,時間長且占資源。企業一般是多樣本分析,痛點是ngs分析流程比較複雜,分析時間長,對內建帶來壓力。現在有兩種計算模式:一種是彈性計算,基本能解決八成的問題;二是分布式計算。 三是雲計算模式的特點與優勢。 第四部分會以我們的乳腺癌檢測産品為例,看如何在雲端實作生物資訊分析流程。
如何用雲計算模式,實作生物資訊分析 | 硬創公開課

1953年,沃森和克裡克提出了dna 雙螺旋結構,标志着生物科學的發展進入了分子生物學階段,使遺傳的研究深入到分子層次,“生命之謎”被打開,人們清楚地了解遺傳資訊的構成和傳遞的途徑。這也開啟了生物資訊學的紀元,雖然當時還沒這種叫法。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

生物資訊學之父是林華安,他提出了bioinfomatics這種詞。右圖是人類基因組計算,自1990年正式實施,是生命科學的“登月計劃”,也讓生物資訊學走向高潮。

人類基因組計劃中有一個關鍵人物克雷格·文特爾,到1997年時整個計劃隻完成了3%,但時間和經費都用去了一半多。文特爾說有方法在3年内完成基因組測序,他以一己之力單挑6國科學家,采用“鳥槍法”以更快的速度完成人類。他本想為自己的方法申請專利,但在克林頓總統的要求下和其它6國科學進行了合作。

那什麼叫測序?簡單來說昌通過中間的測序儀,可以産生actg這樣的資料,而生物資訊學就是分析這些資料。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

基因測序分為三代。

第一代測序技術的主要特點:優點是測序讀長可達1000bp,準确性高達99.999%,從頭測序,從頭組裝;而缺點是測序成本高,通量低,難以大規模的應用。 第二代測序的特點:大大降低了測序成本的同時,大幅提高了測序速度,維持了高準确性,但序列讀長方面起第一代測序技術則要短很多。 第三代測序的特點:不需要pcr,避免了pcr錯誤的引入,讀長可達3k,且速度快。
如何用雲計算模式,實作生物資訊分析 | 硬創公開課

目前第二代測序是行業主流,後面的分析也是基于第二代。總結如上圖。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

上圖是測序成本的趨勢。在2001年時測一個人的基因組花費近1億美元,而2015年時隻需要1000美元。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

上圖左側是人基因組個數,右側表示資料量,橫坐标是時間。圖中黑線是真實統計資料,藍色是摩爾定律預測資料,紅線是曆史推測。可以看出,從2017年開始,每年的基因組資料會呈線性增長。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

接下來看下資料量的大小。直接看圖最後的資料,用最新的測序儀,在19-40個小時即會産生167gb到6tb資料,這還隻是一台測序儀。

是以,目前考慮的不是基因測序本身的成本,而是資料傳輸、存儲與分析的成本。目前面臨的挑戰主要包括(公開課主要涉及高性能計算方面):

資料解讀 大規模的存儲:大規模的存儲:  混亂、缺乏行業标準 大量的計算資源:資料量大,計算複雜,時間長、成本高昂 高效的資料傳輸 安全穩定的運作環境 資料壓縮,這也是行業難點
如何用雲計算模式,實作生物資訊分析 | 硬創公開課

上圖是ngs行業通用全基因組分析流程。測序後,通過标準化的基因組流程分析,然後與對應的資料庫比對,就能形成标準的分析報告。

而标準的基因分析流程包括:質控,mapping,call snp,注釋。最重要的是mapping和call snp,這是指它們對計算要求是非常高的。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

ac和trime是質控,當得到測序資料後,通過這兩步把低品質資料去掉。mapping是指整個染色體資料拼成一條。最後就是去找突變位點在哪,找到定位後即可評估是什麼樣的病種,給出一個應對措施。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

接下來看看每個階段對應的資料格式是怎麼樣的。從qc到trime都是fastq格式,具體如上圖所示。接下來會形成fasta格式。而通過mapping會再形成bam/sam格式。sam實質還是文本檔案,隻是對檔案格式的定義;bam檔案是對sam檔案的二進制壓縮,占用存儲,後續處理速度快。通過call

snp則會生成文本。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

接下來以微生物組學為例看ngs資料計算特征。如上圖所示,微生物組學中,呈現單個樣本資料量小、樣本數量多,及單個樣本資料量大,樣本數量少等特征。同時看到,微生物組學與參考序列的比對過程中,計算量大。微生物組學全基因組資料的組裝和聚類,對記憶體的消耗也很大。海量樣本微生物組學資料的比較,也需要高io。是以可以看到,整個ngs資料是計算密集型,記憶體密集型,io交換密集型。

目前行業生物計算的業務場景是:

1.單樣本資料量小,樣本量很大:應該用彈性計算模式,能解決八成的需求。 2.單樣本資料量大,樣本量很小:采用分布式計算模式。 3.單樣本資料量大,樣本量較大:彈性+分布式計算模式。

雲計算的特點與優勢

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

整個雲計算企業主要分為iaas、paas、daas、saas。在雲計算下整個醫療與健康廠商的劃分如上,其中包括了各主要服務商。

雲計算整個特點是:

成本低,以前完成一百個樣本可能需要幾萬元,現在已經降到幾元了。 彈性,即可以動态伸縮,滿足動态的使用者增長的需要。 以及高可靠性、通用性、虛拟化和超大規模等特點。

站在生物資訊雲端

第四部分最為重要,主要關于如何用雲計算解決生物資訊分析中存在的問題。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

首先是“單樣本資料量小,樣本量大”的業務場景雲端實作,這主要用彈性計算來實作。

上圖是以乳腺癌檢測應用為例,它基本代表整個ngs标準的分析流程。資料特點是單樣本100m,有100個樣本。

傳統sge叢集計算模式單樣本運作時間約15分鐘,共約22小時,而我們的目标是15分鐘全部完成。實作彈性計算,要要求業務需求選擇雲廠商,這裡隻需要從iaas上選擇即可。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

先看百度雲,它提供批量計算。上圖是百度技術架構圖。第一步是先把資料傳到對象存儲bos中,之後把作業投到batch compute計算叢集裡面。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

再看下阿裡雲,它也有batch compute計算模式,也适用于并行批處理作業的分布式計算。aws由于網絡問題,不太好用。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

下面以阿裡雲為例,講解如何去對rocky.pl做彈性計算。做彈性計算,是讓機房中的多台機器同時運作,把結果寫到指定的oss裡。我們的任務寫一個程式,快速讓它在機房建立一排排機器(vm1-100),每個vm運作rocky.pl,輸入與輸出都放到oss上。這就是主要思路。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

在寫程式前,要做四件事,一是做環境搭建,二是把現有測試資料傳到oss上,三是正式寫程式,四是檢視測試結果。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

環境搭建第一步是建立虛拟機,讓它運作rocky.pl的話,要先做鏡像。例子中搭建的是centos6.5,當然這可根據需求自行決定,另外就是安裝生物資訊流程包。通過鏡像可擴充100台機器。

第二是準備開發工具。這裡以java為例,需要的環境是jdk與eclipse。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

準備工作完成後,要把資料傳到oss。剛才有三個檔案,首先要将它們傳到oss。上傳方式如上圖所示,可以通過網頁形式,或sdk的方式。

oss中有幾個概念。

一是bucket,即存儲空間,用于存儲對象(object)的容器,所有的對象都必須隸屬于某個存儲空間。可以了解成windows下的c盤、d盤。

region是指地區,根據自己所在地域決定。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

頁面開發人員的sdk方式如上所示,需要輸入賬号密碼,建立oss用戶端。具體細節不再詳細展開。

接下來可通過sdk和控制台的方式檢視是否上傳成功。網絡不穩定的情況下可選擇斷點續傳。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

下一步是寫一個小程式,通過封裝一步步實作彈性計算。做之前,要準備節點,讓jar包中代碼使用這個節點,這裡會用到前面準備的鏡像,并配置節點。然後是開發jar包,分别要構造job對象,構造dag對象,構造task對象,以及oss與節點的映射關系,最後封閉job的其他對象,并啟動job。

這裡有幾個名詞要解釋。

job(作業)是batchcompute的名詞,每次分析操作都可以看成是一個作業。比如說我們要分析100個樣本資料,那麼當我們将100個樣本當成一個整體,隻需要執行一次,那麼job就是1個。如果将這100個樣本拆分成多個組,每組n個(n<100),那麼就會有m個job(m=100/n)。例如每組5個樣本,總共拆分成20個組,那麼job個數就是20。

dag是directed acycline praph的縮寫,即有向無環圖,通過它可以把業務流程切分成小的節點。

任務(task)也是batchcompute的名詞,是業務流程。我們可以将業務流程細分成n份,那麼就可以有n個task。如果僅僅使用粗糙的業務流程,那麼task設定成1即可。另外,每個job可以包含多個task,每個task單獨用1台計算節點。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

oss與節點的映射關系,是将oss上的資料挂載到節點上,以後此節點上的任何操作都是讀取本地目錄上的資料。這麼做的好處在于減少了頻繁和oss進行互動,防止互動過于頻繁,挂載連接配接斷掉。而這種方式隻需要最後關閉節點的時候,才和oss互動。

原始dag的缺點是,每台計算節點運算時間很短,但是等待資源時間很長。一般情況下,每個節點資源需要等待3-5分鐘,而計算的時間可能僅僅幾十秒。總的運作時間可能達到20分鐘。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

是以,一個想法是在一個task上運作所有步驟。要這麼做,其中的步驟會如上圖所示。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

僞代碼則如上所示,具體不再詳細展開。程式非常簡單,也有python和java等各個版本。

前面講述的是一個job的運作流程。現在我們有100個樣本,每個task運作2個樣本,那麼共需要50個task,每個task對應1個job,那麼就需要50個job。測試階段,我們可以使用for循環,執行50次。每個都運作一次job。僞代碼如下:

for (int i = 1; i<=50; i++ ) {       //運作job  }

實際應用中,我們是通過一個排程系統,來判斷當出現2個樣本資料時,則建立一個job,并啟動job,讓這個job運作1個task,每個task裡面執行2個樣本資料。當有100個樣本資料時,我們會啟動50次job。僞代碼如下:

//1.排程器發現有2個樣本 //2.1構造job對象       //2.2構造task對象       //2.3将2個樣本 set到task對象中 //3.建立job并啟動
如何用雲計算模式,實作生物資訊分析 | 硬創公開課

上圖是真實測試資料,藍色是開始時間,黃色是結束時間。可以看出,總耗時8分鐘,費用是3元(阿裡 雲結果)。

用彈性計算方式,有兩個問題。頻繁對oss讀寫,會造成oss挂掉;另外,彈性資源有限制 ,比如阿裡雲限制是300台機器。

接下來是單樣本資料量大,樣本很小的業務場景,這又應該怎麼去做呢?

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

再來看一下之前出現過的這一張圖。如果單樣本資料量大,相對它進行加速,不适用彈性計算,必須對ngs流程中的算法進行優化(如各流程中所示)。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

再來看看國際上,針對分布式計算的研究進展。spark是伯克利大學的研究結果,而它還有一個adam的團隊,它專門用于生物資訊計算。google有自己的google genomics,而英特爾、斯坦福和微軟則是基于gatk進行加速,不過目前還沒有成型。

國内目前沒看到對生物資訊用的算法進行加速,我們現在對ngs分析流程,基于分布式計算實作了加速。我們在fastqc、trime、call snp上都有進展。

如何用雲計算模式,實作生物資訊分析 | 硬創公開課

最後介紹一下彈性分布式計算的架構圖應該是怎麼樣的。底層是公有雲,在這些iaas上,我們會搭建一個ngs的iaas層,把适合于hpc、spark、graph的叢集通過轉換器封裝起來成一個計算模式,同時把oss、ssd等封裝起來(datahub),為上層的paas服務。

本文作者:張馳