乐于分享
好东西不私藏

近缘菌株比对神器 SibeliaZ:安装、参数调优与结果解读一站式

近缘菌株比对神器 SibeliaZ:安装、参数调优与结果解读一站式

今天我们学习软件SibeliaZ的原理安装以及使用方法。

在GitHub上,最新版本为 SibeliaZ 1.2.7 ,最后更新于25年7月7日。作者是宾夕法尼亚州立大学的 Ilia Minkin 和 Paul Medvedev。

https://github.com/medvedevgroup/SibeliaZ

SibeliaZ的简介

SibeliaZ 是一款全基因组比对与共线性局部区块构建流程工具。其区块坐标以 GFF 格式输出,比对结果则采用 MAF 格式。该工具适用于多个相似度较高的基因组数据,例如同一物种的不同菌株。当数据集满足从序列末端到最近共同祖先的位点替换率不超过 0.09(即 9 个 PAM 单位)时,SibeliaZ 运行效果最佳。目前该工具暂不支持长度超过 4294967296 碱基对(bp)的染色体序列(官方指出该问题将在后续版本中修复),不过这个长度对于处理细菌的基因组已经足够的了。

SibeliaZ基于de Bruijn图算法,通过识别基因组间的保守k-mer锚定同源区域,逐步拼接扩展为局部共线性区块,通俗来说,就是先在所有基因组中找共同的短序列作为‘定位锚点’,再将相邻锚点拼接扩展为完整的同源共线性区块,最终完成多基因组全序列比对,适配近缘物种及菌株的高精度比对需求。


SibeliaZ的安装

SibeliaZ的官方给出两种安装方法。

安装SibeliaZ最简单的方法是使用bioconda。 安装好Bioconda环境后,安装 sibeliaz 包:

conda install sibeliaz

如果要自行编译代码,需要最近安装以下代码 软件(仅限Linux):

  • Git

  • CMake

  • 一个支持 C++11 的 GCC 编译器

  • ZLIB库(针对SPOA对齐器)

后续再进行 SibeliaZ 源码下载解压编码配置环境变量等工作。这里我们推荐使用 conda 进行安装,因为这不仅更简单,而且不会有版本冲突环境崩溃等问题,特别是对新手,如果您没有学会使用conda,非常推荐。


SibeliaZ的使用

SibeliaZ 接收一组 FASTA 文件作为输入。最简单的运行 SibeliaZ,为以下命令:

sibeliaz <input FASTA files>

例如:

sibeliaz genome1.fa genome2.fa 

比对结果会依据序列ID生成,因此FASTA文件标题行中的所有输入序列 必须拥有唯一ID。对于这一个 唯一ID ,需要准确理解,这不仅指一个fa文件里的多条序列ID不能有重复,对于你输入到 SibeliaZ 的所有fa文件(无论是两个,还是一百一千个),只要是 > 后面的ID,都不能重复。这一点真的很重要,否则你的分析是会进行报错的。

默认输出至当前工作目录下的 sibeliaz_out 文件夹,内含记录区块坐标的 blocks_coords.gff文件,以及存储比对结果的 alignment.maf 文件。 

SibeliaZ配有多项参数,可调节精度与运行效率,下文将逐一说明。


SibeliaZ 的输出

输出目录包含以下文件:

  1. blocks_coords.gff:记录局部共线性区块坐标。ID 字段相同的行,代表同一区块的不同拷贝。

  2. alignment.maf:输入基因组的全基因组比对结果。

注意:最终比对是对局部共线性区块进行全局比对,该过程内存占用极高。部分区块(尤其拷贝数量多、序列较长时)可能因内存不足比对失败,大内存设备也可能出现此问题。  输出目录下的 blocks 子文件夹,存放所有比对失败区块的 FASTA 文件,每个文件对应一个区块及其全部拷贝。FASTA 标题行记录各拷贝坐标,格式同 MAF 条目,字段以分号分隔。

若后续分析无需比对结果,可使用 -n 参数跳过比对步骤,仅输出区块坐标。此时程序不会生成。


构建共线性块

你还可构建部分分析所需的长共线性区块。SibeliaZ 默认会附带安装由Mikhail Kolmogorov编写的 maf2synteny 工具。若已有 SibeliaZ 输出结果,可直接用该工具处理。

maf2synteny <GFF or MAF file created by SibeliaZ>

一般来说,这是一整套构建共线性块的流程,可以通过调整 maf2synteny 参数大小,构建符合自己数据的大小不同的共线性块。比较只用 SibeliaZ 构建的块,还是太碎太小。


影响 SibeliaZ 的准确性的参数

k 值

该参数设定德布鲁因图的阶数,用于权衡比对灵敏度、运行速度与内存占用。

-k <an odd integer>

通常 k 值越小,比对灵敏度越高,但运行速度越慢。细菌等小型基因组建议设为 15,哺乳动物级别的大型基因组建议设为 25,默认值为 25。

气泡长度阈值

SibeliaZ通过检索图中的长气泡链开展分析。气泡指起止点相同的两条路径,长气泡链一般对应同源序列。但若气泡内路径过长,易产生假同源匹配。

工具会丢弃路径长度超出阈值的气泡,对应参数:

-b <integer>

默认值为 200。增大该值可识别更多分化程度较高的序列,但取值过高会降低比对准确度。

局部共线块大小

SibelaZ 只输出超过指定阈值的块,该阈值由

-m <integer>

默认值是50。警告:提高该参数可能会显著增加 减缓计算速度。


SibeliaZ的技术参数

跳过比对

如需仅输出区块坐标、跳过比对流程,使用参数:

 -n

线程数

设置程序可调用的最大线程数,参数格式: 

-t <integer>

程序默认会占用全部可用线程,你可通过该参数限制线程数量。流程不同阶段的并行能力存在差异:TwoPaCo 最多仅使用16个线程,而图谱分析模块与全局比对模块会充分调用所有线程。

内存分配

图谱构建工具 TwoPaCo 会为布隆过滤器预分配内存。默认情况下,布隆过滤器容量为输入文件总大小的三倍。可通过以下参数手动指定容量:

 -f <memoryamountinGB>

输出目录

自定义结果文件的存放目录,参数格式: 

 -o <directory>

默认输出至当前工作目录下的 sibeliaz_out 文件夹。


实例

先是利用conda安装 SibeliaZ,验证安装成功

# 创建名为 sibeliaz_env 的环境,指定 python3.8(通用兼容版本)conda create -n sibeliaz_env python=3.8 -y
#激活环境conda activate sibeliaz_env#激活成功后,终端前缀会出现 (sibeliaz_env)
#配置 Bioconda 源(首次使用必须配置)conda config --add channels biocondaconda config --add channels conda-forgeconda config --set channel_priority strict
# 安装软件conda install sibeliaz -y# 验证是否安装成功sibeliza -h# 如果输出为 Usage: [-k <odd integer>] [-b <integer>] [-m <integer>] [-a <integer>] [-t <integer>] [-f <integer>] [-o <output_directory>] [-n] <input file># 则表明安装成功

使用SibeliaZ分析数据

sibeliaz -k 15 -n -o salmonella_synteny_out fixed_assemblies/*.fasta

确定好 SibeliaZ 安装成功后,使用这行命令即可使用 SibeliaZ 分析数据。

其中我的数据是细菌的染色体测序结果,所以使用 -k 15,使用 -n 跳过序列比对,使用 -o 指定输出目录,同时后面使用一个正则匹配把所有的fa文件一起输入分析,供大家参考。各参数意义及使用方法前面已经讲解。

SibeliaZ 输出结果解读

输出结果在文件夹 salmonella_synteny_out 里,名为 blocks_coords.gff 

内容如图:

文件解读,如下表:

列
含义
示例解读
1
序列 ID(你输入的基因组 / 序列名称)
T08_1
 / T10_1 / T09_1,代表不同的基因组
2
来源
SibeliaZ
,表示这是 SibeliaZ 生成的结果
3
特征类型
SO:0000856
 是术语 sequence_feature,表示序列特征
4-5
起始 / 结束位置
这个区块在该基因组上的坐标(4 是起点,5 是终点)
6
得分
.
 表示无特定分值
7
链方向
+
 正链 / - 负链,代表该同源片段的方向
8
相位
.
 表示不适用
9
属性
ID=1
,说明这些行属于同一个共线性区块(区块 1)

maf2synteny构建共线性块

运行下面代码,构建不同大小的共线性块。

maf2synteny -b 500 salmonella_synteny_out/blocks_coords.gff

-b 后面跟不同阈值构建不同大小的块,输出结果如下图:

每个阈值文件夹(30/、100/、500/)里的文件,对应 maf2synteny 处理后的结果,解读如下表:

文件名
作用
blocks_coords.txt
过滤后、整理好的共线性块坐标表,是下游可视化(如 plotsr)的核心输入文件
coverage_report.txt
每个基因组被共线性块覆盖的比例统计,用来评估比对的完整性
genomes_permutations.txt
记录基因组间的共线性块排列顺序信息,可用于后续重排分析
注意:blocks_coords.gff 是 SibeliaZ 直接输出的原始数据,而 blocks_coords.txt 是 maf2synteny 整理后的、更适合下游工具使用的格式

到这里,我们了解了 SibeliaZ 的一些背景和原理,学习了SibeliaZ 的安装使用参数调整以及后续处理流程,并且我们还提供了一个实例,想真的学会理解透一个软件,还是得自己动手去找点数据处理一下,实践出真知,如果您在使用软件时遇到问题,欢迎在评论区留言或者私信我们,一起交流学习!

后期我们会陆续推出更多生信软件的教程,期待您的关注。如果您在文献复现以及生信分析时遇到问题,也欢迎联系我们一起交流学习!

多看多学多做,如果您觉得我们写的推文还可以,请给我们点个赞,这是我们前进的最大动力,真心感谢!

相关学习资料