WeGene:存儲、傳輸、計算巧實現,基因數據上雲不再難

WeGene(微基因)是一家主打個人基因測序服務的公司,主要致力於幫助用戶解讀基因的奧秘,遇見未知的自己。

我們現在主要的服務內容包括基於基因組數據的祖源分析、個性化的運動和減肥建議、營養基因組學、基因組醫學等方面的內容。未來,我們會跟合作伙伴一起把基因組數據推向每一個被基因所影響的角落。

解讀基因的秘密,讓自己更加了解自己,這是我們的初衷,也是我們的夢想!

我們在做什麼

先來簡單介紹一下個人基因組的知識。除了細胞核有基因組之外,線粒體上也會存在基因組,線粒體是為細胞提供能量的,每個人的線粒體都來自母系,Y染色體會全部來自父系。這些基因數據全部測試的數據量大約為100G。但是我們通常會認為人與人之間的基因組差異會很小,如果只把人與人之間具有差異的部分挑選出來進行檢測,我們的計算成本就會變得小很多。

WeGene:存儲、傳輸、計算巧實現,基因數據上雲不再難

通過基因組數據,我們可以做很多有趣的事情。比如,在東非把所有人的基因組進行計算,加上化石和遺蹟的考察,我們可以知道我們的祖先最早出現的地點和時間,以及如何一步一步走到這片土地上的。下圖展示了人類的遷移路線。

WeGene:存儲、傳輸、計算巧實現,基因數據上雲不再難

除了上述祖源的檢測,我們還可以根據每個用戶的基因組並且基於現在的文獻和成果做更多的解讀。通過很多的檢測,我們發現很多與基因組有關的疾病並不單單是基因組可以決定的,基因組能決定的事情很少,但是幾乎所有的所謂疾病的風險除了遺傳病以外,基因都只是其中的一個影響因素。

基因組數據不僅僅能夠為個人提供好處,很多基因組研究在中國人身上做的不夠好,最主要的原因是數據不夠。所以,我們希望通過互聯網的技術和手段來推動這方面的研究,比如尼古丁的研究、基因組和睡眠關係的研究。

WeGene雲端架構

下面是我們用到的阿里雲服務,其中包括雲服務器ECS、雲存儲OSS、雲數據庫RDS、API應用網關、批量計算等等。阿里雲的“三大件”(ECS、OSS、OSS、RDS)結合負載均衡、彈性伸縮以及其他的NoSQL數據庫等功能,讓我們能夠為用戶提供健壯的網站服務——無論是在訪問量低峰期,還是在批量交付檢測報告給用戶或市場活動推廣時流量較高的情況下。

WeGene:存儲、傳輸、計算巧實現,基因數據上雲不再難

除了最基本的網站服務以外,由於基因分析需要海量的計算資源,WeGene還與阿里雲平臺上提供生物信息PAAS服務的北京聚道有限公司(GeneDock)進行了合作,在他們提供的計算平臺上運行用戶基因數據的分析。

WeGene:存儲、傳輸、計算巧實現,基因數據上雲不再難

具體來講,用戶的生物樣本在實驗室進行實驗以後,所產生的實驗數據會直接被上傳進入OSS中,並根據不同的計算任務需求被分配到WeGene在ECS上自建的計算服務器、GeneDock、批量計算等在內的計算環境中去進行分析。分析的結果會通過統一管理的API網關服務錄入數據庫,並最終在阿里雲上呈現給全球的用戶。在這一過程中,阿里雲實際幫助我們簡化了數據存儲、傳輸、計算方面的問題,具體情況如下:

1. 數據存儲

  • RDS:主要用於存儲預處理後的基因組數據、表型數據、網站數據,以存儲計算完成的結果數據為主
  • OSS:用於存儲基因組原始數據和大型的計算結果(比如全基因組測序數據,每位用戶會產生約200GB了;芯片測序數據,每位用戶會產生約 200 MB 數據)
  • GeneDock:存儲正在處理中的全基因組數據和芯片數據
  • 阿里雲MongoDB:用於存儲一些數據格式多變的第三方表型數據等
  • 本地存儲及OAS:數據冷備

2. 數據傳輸

  • 生命科學所有的數據都是在測序中心、實驗室中產生的,怎麼把這些數據傳輸到雲上是一個比較麻煩的事情。在上雲的過程中,我們主要會使用三種方式:
  • 芯片數據:數據量比較小,實驗室用OSS客戶端上傳OSS
  • 全基因組數據:數據量比較大,需通過GeneDock的專線上傳GeneDock的系統(位於OSS上)。也有一些專門的壓縮和傳輸算法,儘可能利用數據的帶寬,同時實時壓縮和解壓
  • 海外用戶基因組數據: 通過其他廠商提供的API直接獲取並存儲到RDS中

3. 計算

  • ECS:在ECS上,我們利用一些計算資源調度自建了一些計算節點,用於處理常規的、計算資源相對較小但數量較多的分析任務,並會提供一些小規模實時計算服務,通過API網關進行管理和調用
  • GeneDock:用於並行處理計算資源要求較高的batch任務以及全基因組數據分析
  • 批量計算:類似GeneDock的使用

未來的挑戰

儘管雲計算為基因分析工作提供了諸多便利,但是未來還將面臨下面這幾項大的挑戰。

1. 基因組數據的二次分析

當我們為每一個人提供基因組數據分析的時候,我們只是根據已有的科研結果去一個一個的分析基因組數據。當積累了足夠多的數據之後,希望能夠從數據中發現新的東西。這一過程同樣需要海量的計算資源作為支撐——最終我們希望每獲取一份新的基因組數據時,我們都能夠更新現有的知識庫——這對流式計算、機器學習的要求非常之高。

2. 全基因組數據存儲、分析和可視化

為了能夠更好的查詢、分析和可視化基因組數據數據,我們需要一個高效的數據存儲和查詢系統。“Genomics API”設想對全基因組數據實時查詢提供統一的接口服務,但大規模的基因組數據暫時還不能存儲在關係型(甚至是非關係型)數據庫中 ——在這樣的情況下,如何能夠快速查詢某個基因組上的一小個片段便是一個重大挑戰。

3. 全基因組測序的計算問題

在基因組測序的過程中,每一份基因組首先都會被斷裂成數十萬個片段並檢測,再被拼接起來成為完整的基因組數據。由於這一過程是NP問題,我們無法直接通過算法進行拼接,而需要根據參考基因組數據進行比對拼接。因此,我們希望在整個過程中,引入更好的算法(如基於FPGA的算法)、或使用更多的參考數據進行比對(會帶來更高的計算資源要求),這都對在雲上進行大規模數據的生產提出了問題。

希望隨著雲計算與大數據技術的發展,這些問題都不將再是問題。


分享到:


相關文章: