李雷廷的个人博客分享 http://blog.sciencenet.cn/u/llt001

博文

SAM/BAM/samtools 十岁了

已有 4406 次阅读 2018-12-25 20:09 |系统分类:科研笔记

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



年表


参考资料:


欢迎关注“植物基因组”微信公众号


搜索微信公众号“植物基因组”或“plant-genomes”关注



https://blog.sciencenet.cn/blog-656335-1153502.html

上一篇:R 语言中处理TOML 数据的 packages 有哪些?
下一篇:KrakenUniq: 一个新的宏基因组学聚类软件
收藏 IP: 202.127.144.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的精选博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 13:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部