• 文献阅读 | 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长度
    • 压缩级别
    • 分区数量
    • 样本数
  • 相关阅读:
    新发地突发新冠病例,我从北京来赶来为疾控软件开发人员分享Azure DevOps,汗
    Azure DevOps Server:还原被删除的分支
    Azure DevOps Server 拉取请求模板(Pull Request Template)
    Azure DevOps Server:使用Postman批量删除测试用例
    Visual Studio Code:在操作系统文件夹或文件上出现Open with Code菜单
    在Windows XP上访问Azure DevOps Server 2019(TFS)
    将团队项目迁移到另外一个团队项目集合中
    快速排序c++实现 快排C++代码实现
    高等代数(第四版) 王萼芳课后答案
    数据结构题集(C语言版)课后答案+源码严蔚敏、吴伟民编著
  • 原文地址:https://www.cnblogs.com/esctrionsit/p/13696910.html
Copyright © 2020-2023  润新知