1. 程式人生 > 實用技巧 >文獻閱讀 | GenomicsDB: storing genome data as sparse columnar arrays.

文獻閱讀 | GenomicsDB: storing genome data as sparse columnar arrays.

Datta, K., Gururaj, K., Naik, M., Narvaez, P. & Rutar, M. GenomicsDB: storing genome data as sparse columnar arrays. https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/genomics-storing-genome-data-paper.pdf (2017).

考慮到VCF等基因組資料格式將基因組資料儲存為片段,而非對整條染色體都進行記錄,作者開發了一款支援分散式儲存的資料庫系統GenomicsDB

。該系統的核心儲存採用了TileDB,作者開發了GenomicsDB以執行從生物基因組資料向TileDB資料的轉換、對分散式儲存的支援等特性。為了便於使用者使用,作者還為GenomicsDB開發了Java、Python和Scala(供Apache Spark分佈計算時使用)語言的介面。

目錄

背景

現在(作者發稿時),高通量測序能夠在幾天內高通量且便宜地測出人類基因組的序列。進而,全世界每年都有成百萬的病人被測序。他們的基因組被用來預測癌症、糖尿病等多種應用。這些進步擁有著從根本上改變我們原本所認為的醫療服務的潛力。

接下來,作者介紹了GATK軟體在測序資料上的處理流程。

在GWAS的廣泛使用之中,存在著許多常見的挑戰:

  • 變異資料十分巨大且在持續增長
  • 需要可擴充套件且高效的資料檢索
  • 需要高效的資料格式轉換

針對這些問題,常見的解決思路有:

  • 採用可擴充套件的檔案系統或物件儲存系統
  • 建立合併的、經索引的VCF/gVCF檔案
  • 使用資料庫引擎

因此,作者開發了GenomicsDB,其主要貢獻有:

  • 高效能的陣列資料儲存管理
  • 提供了快速高效的C++庫,來向TileDB中寫入來自許多樣本的VCF/gVCF資料
  • 提供了快速高效的C++庫,來從TileDB中讀出資料,並傳遞給基因組分析工具,如GATK
  • 為Apache Spark提供了介面以分散式地處理大資料集

儲存細節

首先,變異資料是天然稀疏(sparse)的。作者將變異資料儲存在了一個二維陣列資料結構中。下圖展示了兩條VCF記錄。作者在將VCF向TileDB儲存時,由於索引的差異,需要將基因組物理位置(自1起計數)的值減一,作為TileDB的列索引值(自0起計數)。

下圖為稀疏的變異資料在TileDB中儲存的示意圖。每行代表一個樣本,每列代表一個位點。綠色的代表一條條基因組片段。

作者描述,其基於如下理由採用了TileDB:

  • 變異資料是稀疏的
  • 變異資料可以儲存為二維陣列(2D array)
  • TileDB採用了“柱狀機制”(columnar mechanisms)來儲存。
    • 即TileDB將陣列的每項屬性(each attribute of the array,應該指每一列)儲存在不同的檔案,因此只有相關的檔案會被讀取。相較於按行排序的儲存系統如PostgreSQL,這種策略降低了磁碟訪問次數。
  • 使用者可以指定array中cell的儲存順序(採用按行排序、按列排序、hilbert排序等)
  • TileDB提供了高效的儲存和檢索

檔案匯入與查詢

在檔案匯入中,GenomicsDB支援以多執行緒形式並行讀入VCF檔案,並填充到TileDB緩衝區中。TileDB緩衝區直接被傳遞到TileDB寫入介面中,並被序列化為array cell、寫入磁碟。通過設定引數,使用者可以調整TileDB buffer大小。

檔案匯入過程還支援批處理。例如1000個樣本可劃分為500個樣本分兩次匯入。

作者接著討論了關於TileDB分散式儲存的細節。

隨後,作者解釋了重要引數tile size的設定思路,介紹了批處理特性和分散式儲存時的分割槽管理策略。其中,分割槽管理策略上分為了按行分割槽和按列分割槽。(不同分割槽儲存在不同機器上)

接著,作者表示一些“Mapping Data”將會被儲存在關係型資料庫上。這些資料包括VCF Header資訊、合併方法A combination function (median, concatenation or mean) used while creating a combined VCF from all samples、從基因組物理位置向TileDB列索引的對映關係等。

在查詢策略上,作者舉例了下圖四種情形,闡述了cell的邊界搜尋策略。

效能評估

作者用四頁紙的圖表文字介紹了GenomicsDB在一些讀寫效能評估專案上的表現