文献阅读 | 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在一些读写性能评估项目上的表现。测定的因素包括:

  • 单个tile包含不同cell数
  • 并行读取
  • 不同segment长度
  • 压缩级别
  • 分区数量
  • 样本数
posted @ 2020-09-19 17:06  esctrionsit  阅读(455)  评论(0编辑  收藏  举报