Cactus基因组比对器源码构建教程:make三步构建、15个子模块与evolver模拟基因组测试全指南
发布时间:2026/8/25 9:56:02 作者:尧图编辑部 阅读量:1,286

Cactus基因组比对器源码构建教程make三步构建、15个子模块与evolver模拟基因组测试全指南【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactusCactus 是一个基于 Cactus 图cactus graphs概念的多基因组比对工具genome aligner用于将多个基因组/测序序列对齐成统一的多序列比对图并支持泛基因组pangenome构建。本文由浅入深介绍它的源码工程组织如何用make一键从源码构建、子模块是如何分层的以及它如何用evolver 模拟基因组来量化验证比对准确率。项目结构一览7个核心模块各司其职Cactus 仓库顶层由 7 个 C 语言功能模块 15 个 git 子模块组成Makefile中用一行定义了模块清单modules api setup caf bar hal reference pipeline preprocessor目录职责api/Cactus 图核心数据结构Block、Flower、Chain 等编译为cactusLib.acaf/比对主流程退火annealing、过滤、大组件构建、phylogenybar/花朵局部比对POA 多序列比对与挽救比对hal/将 Cactus 图输出为 HAL 格式reference/参考基因组坐标映射与递归线程构建pipeline/坐标转换与花朵遍历preprocessor/序列预处理软掩码、red 过滤等每个模块内部遵循统一的分层约定impl/放实现、inc/放公共头文件、tests/放 C 单元测试例如api/Makefile会把impl/cactus*.c编成cactusLib.a同时用api/tests/allTests.c链出单元测试可执行文件cactusAPITests。源码构建一条 make 命令搞定全部依赖获取源码并构建git clone --recursive https://gitcode.com/gh_mirrors/cact/cactus cd cactus makemake的执行顺序在顶层Makefile中定义得非常清晰分三个阶段先构建子模块suball1包括 sonLib、lastz、paffy、abPOA、red、FASTGA 等第三方库再编译静态库all_libs依次进入 7 个模块目录编译出stCaf.a、cactusBarLib.a、cactusLib.a等最后链接可执行程序all_progs产出cactus、cactus_pangenome等二进制到bin/。所有产物统一输出到根目录的bin/、lib/、include/三个目录构建变量集中在include.mk中管理——它会按 CPU 架构自动选择 SIMD 指令集x86 默认 AVX2、ARM 用 armv8-asimd并可在 macOS 上自动关闭 jemalloc。常用构建目标速查命令作用make完整构建子模块 → 库 → 程序make static静态链接构建需自编译 hdf5 静态库make check-static用ldd校验bin/全部为静态二进制make clean递归清理自身模块与全部子模块make test运行全部测试见下文make docker构建 Cactus 官方 Docker 镜像 小技巧DEVELOPMENT.md说明可以在根目录创建include.local.mk文件覆盖任意 make 变量该文件不应提交到版本库方便调试时加编译选项。子模块组织两遍构建解决依赖顺序submodules/下共有 15 个子模块其中大部分是基因组比对生态的经典组件sonLibSanta Cruz 基因组学 C/C 基础库其他子模块编译前必须先于它构建lastz / paffy局部序列比对与 PAF 比对输出abPOA多序列比对加速库构建时按 SSE2/AVX2/AVX512 多版本链接red、cPecan、matchingAndOrdering、pinchesAndCacti、FASTGA、FASTAN、alntools、collapse-bubble、hal、cactus2hal重复过滤、比对后处理、图压缩与 HAL 输出等。注意Makefile里把子模块拆成了submodules1和submodules2两遍构建因为cactus2hal同时依赖hal和主程序产物必须放在第二遍。这种按依赖拓扑分轮次的组织方式是理解该项目的关键细节。测试体系C 单元测试 Python pytest 双层设计make test会并行调度两类测试见Makefile中testModules与unitTests两个清单1️⃣ C 单元测试针对核心数据结构每个模块的tests/目录通过allTests.c汇总入口构建为独立可执行文件cactusAPITestsapi、cactus_barTestsbar、stCafTestscaf、referenceTestsreference、stPipelineTests、sonLibTests、matchingAndOrderingTests等。例如bar/tests/包含endAlignerTest.c、flowerAlignerTest.c、poaBarTest.c分别验证端点比对器、花朵比对器与 POA 流程的正确性。2️⃣ Python 集成测试针对流程与输出格式pytest 覆盖multiCactusTreeTest.py、cactus_preprocessorTest.py、cactus_panpatchTest.py等 6 个模块级测试pytest.ini与conftest.py支持--suiteblast|nonblast|all按是否依赖 BLAST 拆分套件。测试运行时长可用环境变量SONLIB_TEST_LENGTH过滤SHORT默认 /MEDIUM/LONGCI 环境TRAVIS/GITLAB_CI下日志直接输出到终端。evolver 模拟基因组测试用标准答案量化比对准确率这是 Cactus 测试体系最有意思的部分——它不满足于能跑通而是用进化模拟器制造已知真实演化历史的模拟基因组再反向检验比对结果。测试数据带进化树的模拟物种examples/evolverMammals.txt定义了 5 个模拟哺乳动物基因组simHuman、simMouse、simRat、simCow、simDog 的 chr6 片段及其分支长度树((simHuman_chr6:0.144,(simMouse_chr6:0.085,simRat_chr6:0.092)mr:0.272):0.021, (simCow_chr6:0.189,simDog_chr6:0.163):0.033);准确率如何判定make evolver_test_local会执行以下闭环下载模拟序列与ground-truth MAFtest/mammals-truth.maf即模拟器产生的标准答案比对运行完整 Cactus 对齐流程产出 HAL再转回 MAFtest/evolverTest.py的_check_maf_accuracy调用mafComparator将结果与标准答案比对抽样 1 亿位点计算准确率并与基线准确率比较阈值如delta(0.05, 0.13)。Makefile还按场景细分了十几个目标方便开发者只跑关心的链路evolver_test_local基础对齐、evolver_test_poa_localPOA 比对、evolver_test_minigraph_local基于 Minigraph 的输入、evolver_test_refmap_local、evolver_test_primates_pangenome_local灵长类泛基因组以及yeast_test_local酵母全基因组泛基因组等。总结新手上手路线git clone --recursivemake完成源码构建产物在bin/、lib/、include/改核心数据逻辑 → 跑对应模块单元测试如cactusAPITests改比对流程 → 用make evolver_test_local等目标做端到端准确率回归想改编译选项 → 在include.local.mk中覆盖变量参考DEVELOPMENT.md。理解了模块 Makefile 分层 子模块两遍构建 evolver 真值比对这三条主线你就能在 Cactus 代码库中快速定位任何功能与测试了。【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考