SeqKit2:序列和比对数据操作的瑞士军刀
iMeta主页:http://www.imeta.science
方法论文
● 原文链接DOI: https://doi.org/10.1002/imt2.191
● 2024年4月5日,重庆医科大学附属第二医院沈伟在iMeta在线发表了题为 “SeqKit2: A Swiss army knife for sequence and alignment processing” 的文章。
● 本文介绍已被广泛使用的序列分析工具SeqKit新的版本SeqKit2,它具有更多的功能、更高的性能并增加对更多压缩格式的支持。
● 第一作者:沈伟
● 通讯作者:沈伟(shenwei356@cqmu.edu.cn)
● 合作作者:Botond Sipos、赵浏阳
● 主要单位:重庆医科大学附属第二医院、欧洲生物信息研究所
● SeqKit2扩展了其功能,子命令的数量从19增加到38个,并且增加支持3种压缩文件格式;
● SeqKit2性能优于先前版本并保持与其它工具有竞争力的性能;
● SeqKit2通过增加如自动补全、显示进度条和增强的错误处理等新特性改善了用户体验。
当前高通量测序研究日益普及,人们对于测序数据处理和分析工具的需求逐渐增加且要求也越来越高:这些工具不仅需要有较高的性能,还需要功能全面和易于使用,以同时满足初学者和高级用户的需求。本文介绍已被广泛使用的序列分析工具SeqKit新的版本SeqKit2,它具有更多的功能、更高的性能并增加对更多压缩格式的支持。SeqKit2延续了其易用、易扩展的软件架构,通过添加19个新的子命令,将其共计扩展到属于8个类别中的38个子命令。这些新的子命令增加了大量分析功能,例如扩增子测序数据分析与FASTQ数据的修复。此外,它还增加了3个用于实时分析的子命令,比如可以周期性监控实时生成的FASTQ和BAM文件的多种指标。另外,我们将SeqKit2与旧版本的SeqKit、Bioawk、Seqtk和SeqFu进行了基准测试,结果显示SeqKit2性能优于旧版,同时保持着与其它工具相似的运行时间。鉴于SeqKit2丰富的功能、经过用户验证的易用性和由用户反馈驱动的持续开发,我们希望SeqKit2成为生物信息研究者进行序列和比对数据处理的一把“瑞士军刀”——无论是在简单的即时分析还是集成于更大的分析流程中,SeqKit2均能娴熟应对。
引 言
主要以FASTA和FASTQ格式存放的高通量测序数据和基因组数据的规模日益增长,生物信息研究者迫切需要能在不同分析场景中高效处理这类数据的软件。近年来,Bioawk、Seqtk、BBMaps和SeqKit被广大生物信息研究者广泛使用,在在线问答平台(如BioStar)上有很高的欢迎度。Bioawk将通用的表格数据工具awk进行扩整,增加了对FASTA和FASTQ等生物数据格式的灵活支持。Seqtk具有较高的处理速度但仅提供有限的功能。BBMaps和SeqKit均提供多种分析功能,但具有完全不同的命令结构和命令行参数风格。最近,一些新的软件为用户提供了更多的选择。Pyfastx作为一个Python包提供了未压缩和gzip压缩的FASTA/Q文件的随机访问功能。SeqFu提供了一些通用的功能和专有的工具。BigSeqKit对SeqKit的命令进行了并行化处理以提高在集群环境中对大规模数据的处理速度。
SeqKit最初是设计成为生物信息研究者提供高效和便捷的日常FASTA/Q文件处理功能。随着早期版本的发布,我们持续优化其性能、增加更多功能和提高易用性。因此本文推出SeqKit2,它具有更快的速度、更多的功能,且对用户更加友好。
结 果
SeqKit2延续了前一个版本的“命令-子命令”的软件架构,因此用户可以方便的定位特定的子命令,同时便于开发者扩展其功能。SeqKit2增加了19个子命令(图2A)并增加了3种压缩文件格式的支持(图2B);同时,现有的子命令也增加了新的特性。此外,FASTA/Q文件的读写速度也大幅提高。
SeqKit2增加了大量新功能并扩展了现有功能
SeqKit2的子命令数量相对7年前的版本翻了一番,目前总共有分属8个类别的38个子命令。为了满足用户的分析需要,我们增加了19个子命令。比如“sana”用于对数据传输过程引起的FASTQ文件异常进行修复。“amplicon”用于在扩增子测序数据中提取扩增子或上下游序列。连接多个文件中具有相同标识符的序列是BioStar上新手中常见的问题,“concat”可以轻松完成此任务。“sum”提供MD5一样的消息摘要计算,可以用于判断多个FASTQ文件中的序列是否一致,即使这些序列的顺序被完全打乱;同时也可以判断序列拼接产生的多个起始位点不同的环形基因组(如细菌/病毒/质粒)是否一致。
SeqKit2中增加了3个用于测序数据实时分析的子命令。在具有较强时效性的分析中(如用Naonopore测序平台进行病原菌检测),在测序数据生成过程中监控数据的某些指标具有重要的意义。“watch”子命令可以对reads的多项指标进行周期性监测、包括序列长度、平均质量值和GC含量。这些统计数据周期性地以直方图的形式显示于终端中,也可以输出为PDF或TSV文件。与“watch”类似,“bam”子命令为BAM序列比对数据提供实时监控,其指标包括比对质量、比对准确性、比对的长度等等。我们希望“seqkit bam”能与其它现有的BAM处理工具(如Samtools)互补。此外,“scat”子命令用于对指定文件夹中实时增加的FASTA/Q数据进行读取和输出,方便下游分析工具进行进一步处理。
图 2. SeqKit2子命令与支持的文件格式概览
(A)SeqKit2的子命令,蓝色字体表示新增的子命令;(B)SeqKit2支持的文件格式。
SeqKit现有子命令的功能也得到了扩展。比如“locate”和“grep”现在支持线性和环状序列的正链和反向互补连上的搜索,且可以允许错配。与“samtools faidx”类似的子命令“faidx”支持输出完整序列名称且支持返回反向互补序列,还支持从文件中读取大量的坐标位置信息。“replace”新增新的替换功能,支持序列编号和键-值替换。“common”不仅能识别完全一致的序列,也能检测相互包含的序列。
除了功能的增加外,SeqKit2也增加了对3种压缩格式的支持(图2B),包括XZ、Zstandard和Bzip2。XZ和Zstandard因较高压缩率常用于冗余序列(如SARS-CoV-2基因组)的存储。SeqKit2自动识别不同压缩文件格式的FASTA或FASTQ序列文件,并能根据输出文件后缀自动输出为指定的压缩文件格式。
SeqKit2的性能测试
我们将SeqKit2与上一个发表版本、Bioawk、SeqFu与Seqtk在3个常见的序列文件处理中进行测试,每个测试中同时采用分别为纯文本和Gzip压缩格式的3个数据集(人类基因组、长读长测序数据和短读长测序数据)。由于无法在我们的集群中安装BigSeqkit,我们未能将BigSeqkit纳入测试。结果(图3)显示SeqKit2在所有测试中均比旧版本更快,不过内存稍高。当输入文件为纯文本文件时Seqtk速度最快,除了在短读长测序数据的读写测试中SeqKit2稍快。在Gzip压缩序列文件的统计中,Seqtk最快,其次是SeqFu,SeqKit2和Bioawk。而在Gzip压缩序列文件读写和反向互补序列计算中,SeqKit2最快,其次是Seqtk+pigz、Bioawk+pigz和Seqfu+pigz。
图 3. SeqKit v2.8.0与Bioawk (commit fd40150)、Seqtk v1.4、SeqFu v1.20和SeqKit v0.3.1.1在三个常见分析任务中的性能比较
Bioawk、Seqfu与Seqtk均使用单线程,SeqKit默认使用4线程。SeqKit_j1表示SeqKit v2.8.0使用单线程。SeqKit_old表示SeqKit v0.3.1.1。Bioawk+pigz、SeqFu+pigz和Seqtk+pigz 表示这些软件的结果被输出到pigz v2.4进行压缩,因为这些软件仅支持输出纯文本格式。
SeqKit2进一步提高了易用性
SeqKit2的易用性也得到大幅提升。我们积极维护SeqKit2,频繁发布新的版本;版本的编号遵循“语义版本”规范,方便用户查看软件的兼容性变化,从而确保分析的可重复性。我们为SeqKit2的子命令和命令行参数提供了命令行自动补全功能,这大幅提高其易用性方便用户快速输入。此外,对于涉及大量文件的操作(如“stats”和“sum”),SeqKit2显示进度条以方便用户直观地查看分析进度。SeqKit2增加了一个全局选项“--infile-list”,允许用户提供包含输入文件的列表文件,从而克服命令行对参数长度的限制。SeqKit2允许并忽略空的输入文件,从而使得使用SeqKit2的分析流程更加健壮。SeqKit2还能检测并提示一些常见的参数或输入数据的误用,比如新手可能将“>”或“@”符号作为序列名称的一部分用来在“grep”子命令中提取序列;“grep”检测到后将对用户进行提示。
方 法
SeqKit2中对FASTA/Q序列解析性能的提升主要通过改进序列名称的解析和对序列对象的复用实现,同时SeqKit2继续兼容多行FASTA和FASTQ序列格式。涉及大量CPU密集任务采用多线程进行加速,比如“grep”、“locate”和“amplicon”中的序列非精确匹配。对于使用散列表/字典的子命令,我们用xxhash哈希值代替字符串,从而减少内存占用。Gzip和Zstd压缩格式支持由 http://github.com/klauspost/compress提供;Bzip2和XZ 分别由 https://github.com/dsnet/compress和https://github.com/ulikunitz/xz提供。BAM 文件解析和Smith-Waterman比对由bíogo提供。子命令“watch”和“bam”中终端的在线直方图绘制由https://github.com/botond-sipos/thist提供。
在性能测试中,使用了Bioawk (commit fd40150)、Seqtk v1.4、SeqFu v1.20.0、SeqKit v0.3.1.1和SeqKit v2.8.0。分别在纯文本和 gzip 压缩文件上对人类基因组、长读长和短读长测序数据集进行了3项常见任务的测试。所有测试均在运行 Intel(R) Xeon(R) Gold 6336Y CPU @ 2.40GHz、内存为500GB的单个群集节点上重复进行三次,并记录平均时间和内存使用情况。
讨 论
持续的软件开发对生物信息学软件的准确性至关重要。包括错误报告和功能建议在内的用户反馈促使了SeqKit2的持续维护和更新。自SeqKit的第一个公开发表版本以来,SeqKit2的子命令数量从19增加到了38个。SeqKit2不单单是一些单独工具的集合,它的绝大多数子命令均支持标准输入/输出,从而能让用户将这些子命令串成流水线实现多种丰富的操作。此外,SeqKit2保持了与其它工具的有竞争力的性能,在涉及gzip压缩格式的FASTA/Q文件读写中速度最快。
SeqKit2的设计思想时刻以用户友好性为主,旨在帮助用户方便快速处理序列数据,这对于生物信息初学者特别有帮助。SeqKit2也有需要改进的空间,比如缺乏对纯文本和Gzip压缩的FASTQ文件的随机快速提取,从而限制了它的一些应用场景。
代码和数据可用性
SeqKit2的源代码和预编译可执行二进制文件可在https://github.com/shenwei356/seqkit获得。包括例子、教程、FAQs在内的软件文档在https://bioinf.shenwei.me/seqkit/。基准测试脚本、代码和生成图表所需的数据可在以下位置获得:https://github.com/shenwei356/seqkit2_benchmark (v0.2.0)。所有的补充材料(文本、图、表、中文翻译版本或视频)也可从线上获取。
引文格式:
Wei Shen, Botond Sipos, Liuyang Zhao. 2024. SeqKit2: A Swiss army knife for sequence and alignment processing. iMeta 3: e191. https://doi.org/10.1002/imt2.191
沈伟(第一/通讯作者)
● 重庆医科大学附属第二医院副研究员,硕士生导师。
● 研究方向为大规模序列索引、搜索与比对,微生物基因组、宏基因组算法;主持国家自然科学基金青年项目与中国博士后科学基金;作为第一/共同第一作者在Bioinformatics、mSystems、Journal of Genetics and Genomics、iMeta等期刊发表学术论文8篇,其中2篇为ESI高被引论文,单篇最高引用1600余次;目前受国家留学基金委员会资助在欧洲生物信息研究所(EMBL-EBI)访问学习。
(▼ 点击跳转)
高引文章 ▸▸▸▸
iMeta | 引用14000+,海普洛斯陈实富发布新版fastp,更快更好地处理FASTQ数据
高引文章 ▸▸▸▸
iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法
高引文章▸▸▸▸
iMeta | 高颜值绘图网站imageGP+视频教程合集
1卷1期
1卷2期
1卷3期
1卷4期
2卷1期
2卷2期
2卷3期
2卷4期
3卷1期
2卷2期封底
2卷4期封底
3卷2期
3卷3期
3卷3期封底
3卷4期
3卷4期封底
1卷1期
“iMeta” 是由威立、肠菌分会和本领域数百千华人科学家合作出版的开放获取期刊,主编由中科院微生物所刘双江研究员和荷兰格罗宁根大学傅静远教授担任。目的是发表所有领域高影响力的研究、方法和综述,重点关注微生物组、生物信息、大数据和多组学等。目标是发表前10%(IF > 20)的高影响力论文。期刊特色包括视频投稿、可重复分析、图片打磨、青年编委、前3年免出版费、50万用户的社交媒体宣传等。2022年2月正式创刊发行!发行后相继被Google Scholar、SCIE、ESI、PubMed、DOAJ、Scopus等数据库收录!2024年6月获得首个影响因子23.7,位列全球SCI期刊前千分之五(107/21848),微生物学科2/161,仅低于Nature Reviews,同学科研究类期刊全球第一,中国大陆11/514!
“iMetaOmics” 是“iMeta” 子刊,主编由中国科学院北京生命科学研究院赵方庆研究员和香港中文大学于君教授担任,是定位IF>10的高水平综合期刊,欢迎投稿!
iMeta主页:
http://www.imeta.science
姊妹刊iMetaOmics主页:
http://www.imeta.science/imetaomics/
出版社iMeta主页:
https://onlinelibrary.wiley.com/journal/2770596x
出版社iMetaOmics主页:
https://onlinelibrary.wiley.com/journal/29969514
iMeta投稿:
https://wiley.atyponrex.com/journal/IMT2
iMetaOmics投稿:
https://wiley.atyponrex.com/journal/IMO2
邮箱:
office@imeta.science