如何快速上手Cactus:5分钟用Docker跑通第一次基因组多序列比对
【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus
Cactus 是一款基于 Cactus 图的无参考基因组多序列比对(Whole-Genome Alignment)开源工具,同时也是构建泛基因组图谱(Pangenome Graph)的主流工具箱。本文不编译、不配环境,直接用 Docker 带你在 5 分钟内跑通 Cactus 的第一次基因组多序列比对,亲眼看到 HAL 比对结果。
Cactus 是什么?两种核心玩法
Cactus 有两个主打场景,覆盖了比较基因组学的两大需求:
| 场景 | 输入 | 输出 | 适用 |
|---|---|---|---|
| 渐进式比对 Progressive Cactus | 多个物种的基因组 + 系统发育树 | HAL 多序列比对文件 | 跨物种比较基因组学 |
| 泛基因组构建 Minigraph-Cactus | 同一物种的多个个体基因组 | 泛基因组图谱 + VCF 变异 | 群体变异分析 |
比对结果是带索引的 HAL 文件,内置工具链可进一步导出 MAF、Chains、phyloP 保守性分数等,无缝对接主流下游流程。下面就是 Cactus 为一批酵母基因组构建的泛基因组图谱(chrI)可视化效果:
Cactus 还有一个很实用的能力:支持在已有比对上增量添加新物种。把新基因组挂到系统的分支或节点上时,只需重算极少量子比对,而不是从零重跑:
准备工作:克隆仓库,拿到官方示例数据
前提只有一个:机器上安装了 Docker。Cactus 官方自带 evolverMammals 示例(5 个模拟哺乳动物基因组,每个约 600kb),几分钟即可跑完,是第一次验证环境的最佳选择。
1️⃣ 克隆 Cactus 仓库(示例数据就在仓库里):
git clone https://gitcode.com/gh_mirrors/cact/cactus cd cactus2️⃣ 看看示例输入文件examples/evolverMammals.txt,格式非常简单:
# 第一行:NEWICK 格式的系统发育树(叶子节点必须唯一命名,单行) ((simHuman_chr6:0.144018,(simMouse_chr6:0.084509,simRat_chr6:0.091589)mr:0.271974):0.020593,(simCow_chr6:0.18908,simDog_chr6:0.16303):0.032898); # 后续每行:基因组名称 + 该基因组的 FASTA 路径(也支持 URL / 目录) simCow_chr6 path/to/simCow.fasta simDog_chr6 path/to/simDog.fasta simHuman_chr6 path/to/simHuman.fasta simMouse_chr6 path/to/simMouse.fasta simRat_chr6 path/to/simRat.fasta💡 分支长度(冒号后面的数字)会驱动 lastz 比对参数:物种越近,参数越快。不确定时直接省略,Cactus 默认按 1 处理。
5 分钟 Docker 快速开始:一条命令跑通第一次比对
Cactus 的标准命令只有 3 个参数:
cactus <jobStore路径> <seqFile输入文件> <输出HAL文件>| 参数 | 含义 |
|---|---|
| jobStore | 中间文件与任务元数据目录(由 Toil 管理,支持断点续跑) |
| seqFile | 上文的examples/evolverMammals.txt |
| 输出HAL | 比对结果文件,如evolverMammals.hal |
把当前目录挂载进容器的/data,一条命令启动比对:
docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it \ quay.io/comparative-genomics-toolkit/cactus:v3.2.1 \ cactus /data/jobStore /data/examples/evolverMammals.txt /data/evolverMammals.hal为什么推荐 Docker 方式?
官方镜像内置 Python 环境以及 lastz、hal、abPOA、red、minigraph、paffy 等全部 C 语言二进制依赖(构建过程见Dockerfile),镜像发布前还会执行cactus --help自检——本地零配置、零依赖冲突,这是新手最省心的上手方式。
运行期间,Cactus 会自动经历预处理打掩码 → 两两比对(blast)→ 渐进式多序列比对(align)三个阶段,控制台持续滚动任务日志。
如何验证比对成功?用 halStats 查看 HAL 结果
运行结束后,当前目录会多出一个evolverMammals.hal和jobStore/目录。用镜像内置的 HAL 工具链验证一下:
docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it \ quay.io/comparative-genomics-toolkit/cactus:v3.2.1 \ halStats /data/evolverMammals.hal输出节选如下:
((simHuman_chr6:0.144018,((simMouse_chr6:0.084509,simRat_chr6:0.091589)mr:0.171974,simGorilla:0.075)AncGorilla:0.1)Anc1:0.020593,(simCow_chr6:0.18908,simDog_chr6:0.16303)Anc2:0.032898)Anc0; GenomeName, NumChildren, Length, NumSequences, NumTopSegments, NumBottomSegments Anc0, 2, 535128, 13, 0, 17165 simHuman_chr6, 0, 601863, 1, 25791, 0 simMouse_chr6, 0, 636262, 1, 62021, 0能看到每个输入基因组、重建祖先(Anc0/Anc1/Anc2)的长度与比对块统计——说明你的第一次 Cactus 基因组多序列比对已经成功 🎉
如果更喜欢边跑边看,可以进入交互式容器,更灵活:
docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.2.1 bash # 进入容器后依次执行: cactus /data/jobStore /data/examples/evolverMammals.txt /data/evolverMammals.hal halStats /data/evolverMammals.hal进阶:把 HAL 比对结果导出为 MAF 格式
当下游工具(Phast、UCSC 浏览器等)需要列式比对时,用镜像内置的cactus-hal2maf在交互式容器中执行:
cactus-hal2maf /data/jobStore /data/evolverMammals.hal /data/evolverMammals.maf.gz \ --refGenome simHuman_chr6 --chunkSize 1000000 --outType single--outType single保证每个基因组每块至多出现一行,兼容性最好;更多选项(并行、过滤旁系同源)见doc/progressive.md的 "MAF Export" 一节。
举一反三:同一物种?试试泛基因组图谱
如果你的输入是同一物种的多个个体(而非不同物种),应改用 Minigraph-Cactus 流程:用examples/yeastPangenome.txt(一批酵母基因组)作为输入,一条cactus-pangenome命令即可产出泛基因组图谱和 VCF,完整参数说明在doc/pangenome.md。酵母 chrI 图谱用二维布局(odgi draw)画出来是这样的:
新手避坑小贴士
- 断点续跑:重跑相同命令并复用同一个 jobStore,Cactus(底层是 Toil)会自动跳过已完成的任务,大项目不必从头再来。
- 真实基因组要更多资源:示例只有 ~600kb;比对哺乳动物全基因组通常需要 64 核 / 数百 GB 内存,Slurm 集群加
--batchSystem slurm --doubleMem true,必要时用--maxMemory/--consMemory控制内存申请。 - 打掩码是硬需求:真实基因组请先做 soft-mask(如 RepeatMasker),未打掩码的比对可能慢几十倍,重复序列过多还会让 blast 阶段内存爆炸。
- 想调参数:复制
src/cactus/cactus_progressive_config.xml编辑后,用--configFile传入即可覆盖默认值(注意配置文件版本要与 Cactus 版本一致)。 - 进阶文档:
doc/progressive.md(跨物种比对)、doc/pangenome.md(泛基因组)、ReleaseNotes.md(版本动态)是最好的进阶材料。
总结
- Cactus = 无参考基因组多序列比对 + 泛基因组图谱构建二合一,核心命令仅 3 个参数:
cactus <jobStore> <seqFile> <outputHal> - Docker 镜像(当前 v3.2.1)开箱即用,
-v $(pwd):/data挂载 +--user $(id -u):$(id -g)是标准姿势 - 用
halStats验证 HAL 输出,用cactus-hal2maf导出 MAF 下游格式 - 5 个模拟基因组跑通后,把 seqfile 换成你自己的基因组和系统树,就是一次真正的生产级比对
【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考