|
SAM、BAM 数据格式及 samtools 工具已经发布十年了。近日,SAM/BAM/samtools 的作者 Heng Li 发表博文回顾了 SAM/BAM/samtools 十年的发展历程,“植物基因组” 公众号对此做了编译,点击文末“阅读原文”查看 Heng Li 的博客原文。
01
—
SAMtools 的第一个版本
SAMtools 工具是于 2018 年 12 月 22 日首次发布在 SourceForge 的,第一个版本号为 0.1.1,现在依然可以下载和使用(目前最新的版本号为 1.9)。
02
—
2008 年的 1000 个人类基因组计划
2008 年启动的 “1000 个人类基因组计划“(1KGP),致力于在随后的三年对 1000 个不同的人类个体做全基因组重测序,以研究人类的遗传变异。当时已经有很多 short-read aligners 及 variant caller,不过这些软件都在使用各自的输入和输出格式,相互之间难以整合。有些软件使用的格式还可以通过程序转换为别的软件可识别的格式,而有些则不能。这使得合作不是很顺畅,拖延项目的进展,也阻碍着开发更高级的数据分析算法。
03
—
设计 SAM/BAM 格式
在 2008 年 10 月 21 日的一次 1KGP 的会议上,Heng Li 等决定要解决这个问题,并将多种 alignment 格式标准化为 Sequence Alignment/Map format,简称 SAM。而到 2008 年底,第一个版本的 SAM 格式说明及其对应的二进制形式(BAM)就发布了。很快 SAM/BAM 就成为了事实上的高通量测序数据的标准格式。而如今,SAM/BAM 不仅限于是定义 short-read 数据的格式,也支持 long-read 数据,可以作为存储 IonTorrent 和 PacBio 信号数据的主要格式。
04
—
开发 htslib
在 SAM 生态系统的演化过程中,应用程序接口(API)逐渐从命令行工具中分离出来成为独立的项目,这成为了最具影响力的一个事件。SAM/BAM 格式发布的时候, samtools 作为处理 SAM/BAM 数据的工具也一同发布了。虽然 samtools 提供了解析 SAM/BAM 文件的简单 API,但 samtools 把 API 与软件混在一起其实不利于长期的稳定性,第三方程序在使用解析 SAM/BAM 的 API 也比较困难。为了解决这些问题,2014 年,Heng Li 及 samtools 开发团队和 HTS 文件格式委员会等创建了 htslib 项目——一个独立的 C 代码库,用于处理高通量测序常用的数据格式。这一代码库提供了稳定、高效的 API,供其它软件调用。这使得一些流行的编程语言,比如 Python 和 R,可以高效地访问 SAM/BAM 数据,进而加速开发序列分析工具。
05
—
强大的 htslib
Htslib 不单作为 samtools 的一个分支存在,其还为 samtools 和依赖于 htslib 的第三方软件引入了很多强大的特性。Htslib 支持多线程并使用了速度更快的数据压缩库。相比于早期的 samtools,最新版本的 samtools 可以在多核的计算机上成倍地降低运行时间,性能匹及 sambamba。Htslib 还可以直接访问远程的 HTTP/FTP 协议的服务器或云存储,比如 Dropbox、Google Cloud 和 Amazon Web Services。对于有些比较大的 SAM/BAM 文件,现在用户不需要等待把所有数据都下载下来才能查看,而可以直接从远程服务器上提取并可视化其中一个小的区域的 alignments。基于这一特性设计的 htsget 协议已经发布,其论文发表于 2019 年第一期的 Bioinformatics 杂志。Htslib 还可以无缝地支持 CRAMv3 格式(一个压缩率更高的二进制形式的 SAM 格式)。对于测序深度较高的数据,CRAM 格式的文件大小可以达到 BAM 文件的一半。目前 htslib, samtools,以及包含 htslib 源代码的工具(比如 Pysam 和 Rsamtools)在过去十年已经被下载了超过 300 万次。
06
—
持续的兼容性
尽管 SAM 格式在过去十年经历了多次修订,但几乎所有的修订都是向后兼容的——也就是说,如今支持最新版 SAM 格式的工具依然可以无缝处理旧版的 SAM 格式的数据。同时,SAM/BAM 格式也在很大程度上是向前兼容的——最早版本的 samtools (版本 0.1.1)目前依然可以处理绝大部分今日产生的short-read SAM/BAM 数据。SAM/BAM 格式的长期稳定性可以防止社区的碎片化,也是 SAM/BAM 最重要的特性之一。对于许多人而言,现在的 SAM 格式和十年前的 SAM 格式看起来似乎没有什么差异。但如果没有对这一格式及生态系统的强化,许多常规的任务可能都很难或不能完成,比如 structural variant calling、long read alignment、云计算和 online genome browsing。
07
—
活跃的开发社区
SAM、BAM、CRAM 和其它 htslib 支持的格式目前由 Global Alliance for Genomics and Health initiative 的 Large Scale Genomics work stream 维护,不断地修复 bug、增强性能及添加新特性,相信在接下来的若干年里,这些格式会持续助力高通量测序数据的分析。
08
—
年表
参考资料:
https://lh3.github.io/2018/12/21/sambamsamtools-is-10-years-old
https://sourceforge.net/projects/samtools/files/samtools/0.1.1/
https://bioconductor.org/packages/release/bioc/html/Rsamtools.html
欢迎关注“植物基因组”微信公众号
搜索微信公众号“植物基因组”或“plant-genomes”关注
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-25 22:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社