Cactus配置XML深度解析:调优lastz打分、chaining参数与外群策略的完整指南
【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus
Cactus 是基于 Cactus 图概念的基因组比对器(genome aligner),其核心配置文件cactus_progressive_config.xml决定了整个比对流水线的行为:lastz 打分参数、chaining 参数与外群(outgroup)选择策略都在其中。本文带你读懂这份 Cactus 配置XML,并给出针对进化距离、GPU 加速与多外群场景的实用调优建议。
1. Cactus配置XML在哪里,如何生效?
Cactus 的默认配置文件位于仓库中的 cactus_progressive_config.xml,所有运行时参数都从这个文件读取。其顶层节点cactusWorkflowConfig按阶段划分:
| 配置节点 | 作用阶段 | 核心内容 |
|---|---|---|
<constants> | 全局 | 内存/CPU常量、进化距离分档divergences |
<preprocessor> | 预处理 | 头部清洗、RED/FasTAN 重复序列掩码 |
<blast> | 成对比对 | lastz/minimap2 打分、chaining 参数 |
<caf> | 比对图构建 | 退火/熔解轮次、最小链长 |
<bar> | 多序列比对 | abPOA/cPecan 参数 |
<multi_cactus> | 渐进式分解 | 外群策略、分支长度默认值 |
解析逻辑集中在 configWrapper.py:所有字段都是可选的,未配置时回退到类中的静态默认值。因此调优时只需覆盖想改的节点,无需提供完整文件。
2. lastz打分参数:按进化距离分档调优
这是 Cactus 配置XML 中最精细的部分。Cactus 会根据两个基因组在系统树上的"分歧距离"(divergence)自动选择不同强度的 lastz 打分参数。
2.1 距离分档与打分参数联动
<constants>下的divergences定义了分档阈值:one="0.05" two="0.10" three="0.15" four="0.20" five="0.25",即按 5%~25% 的替换率把基因组对分成五档。
对应地,<blast>内的lastzArguments为每一档提供一组 lastz 打分参数:
<lastzArguments one="--step=2 --ambiguous=iupac,100,100 --ydrop=3000 --notransition --queryhspbest=100000" ... default="--step=1 --ambiguous=iupac,100,100 --ydrop=4000 --hspthresh=2200 --gappedthresh=2400 --queryhspbest=100000" />各参数的调优含义:
--step:种子查找步长。越小越敏感、越慢。近距离对用step=2,远距离对用step=1(最敏感档)。--ydrop:延伸衰减阈值,控制种子合并时的"放弃"程度。--hspthresh/--gappedthresh:HSP 与加间隙对齐的最低分数门槛。距离越远门槛越低,以保留更多弱同源种子。--queryhspbest:限制每条 query 最多保留的 HSP 数量,防止低同源区域产生组合爆炸。
选择逻辑见 local_alignment.py:按distance依次匹配 one→five,不匹配则落到default。若divergences设置了useDefault="1",则所有基因组对都使用 default 档。
2.2 身份过滤:identityRatio 与 minimumDistance
<blast>还控制基于系统距离的过滤:identityRatio="3"、minimumDistance="0.01"表示当树路径总长 L 较大时,低于1 - IJC(L)的对齐会被丢弃——远距离对自动放宽、近距离对从严。若你的数据分支长度估计不准,可适当调低identityRatio减少误删。
2.3 GPU加速:kegalign打分参数
将<blast>的gpu设为正数(或all),Cactus 会用 GPU 版 KegAlign 替代 lastz,此时读取的是平行的kegalignArguments节点(参数结构相同,但不含--queryhspbest,因为 KegAlign 对其支持不佳)。GPU 模式在保持默认结果精度 0.2% 以内的同时显著提速,适合大规模渐进式比对。
3. chaining参数:把种子串成链的旋钮
lastz 产出的是 PAF 格式种子,后续由 paffy 完成 chaining(链式连接)。这些参数同样在<blast>节点中:
| 参数 | 默认值 | 调优建议 |
|---|---|---|
chainMaxGapLength | 1000000 | 允许连接的种子间最大间隔。基因组破碎度高(contig 多)时调大 |
chainGapOpen/chainGapExtend | 5000 / 1 | 链打分中的缺口开罚与延伸罚。罚分越低,链越容易"跨过"未对齐区域 |
chainTrimFraction | 1.0 | 链末端按分数裁剪的比例,用于去除边缘游走噪声 |
pafTrimIdentity | 0.2 | 低于此同一性的 PAF 行在链式阶段前被修剪 |
minPrimaryChainScore | 10000 | 主链最低保留分数,过滤弱链;比对结果太碎时调低 |
chainContigGroupSize | 10000000 | 小于该总长(bp)的 contig 会被分组合并,减少小文件开销 |
chainSplitMinSize | 1000000000 | PAF 文件小于 1GB 时跳过切分、单作业直接链式连接 |
另外mapper字段允许在lastz、minimap2、fastga三者间切换,配合minimap2_params="-x asm20"等即可整体更换底层比对引擎。
4. 外群策略:渐进式比对的方向盘
Cactus 按系统发育树自下而上渐进比对,每个内部节点需要选择外群来"锚定"方向。策略参数位于<multi_cactus><outgroup>:
<outgroup strategy="greedyPreference" threshold="0" ancestor_quality_fraction="0.75" max_num_outgroups="3" extra_chrom_outgroups="-1" clade_discount="0.3" overlap_penalty="2" />strategy:可选none、greedy、greedyLeaves、greedyPreference(默认)、dynamic等。greedyPreference在贪心选最近外群的基础上偏好"谱系内"候选,兼顾速度与方向准确性。max_num_outgroups:每个对齐作业最多使用几个外群。默认 3 可提升覆盖率,代价是内存。extra_chrom_outgroups:设为-1时自动为祖先补充性染色体所需的外群数,避免性染色体区域比对"饿死"。clade_discount(0.3):谱系外候选必须比最近的谱系内候选近 30% 以上才有资格竞争,防止远缘外群抢占方向。overlap_penalty(2):已覆盖路径的惩罚倍数,促使后续外群分散到不同分支。
4.1 外群修剪参数组
<blast>中还有一组与外群相关的修剪开关,直接决定输入数据量:
trimOutgroups="1":移除没有任何内群(ingroup)对齐的外群序列;trimIngroups="1":逐轮过滤已对齐的内群,减少后续作业负担;trimOutgroupFlanking="2000"/trimFlanking="100":修剪后保留的外群/内群侧翼长度;includeRootAsOutgroup="1":将钉住的根序列按外群处理,避免其覆盖"挤占"后代序列在 chaining 中的份额;pickIngroupPrimaryAlignmentsSeparatelyToOutgroups="1":内群之间先独立挑选主对齐,再让外群对齐内群,减少相互干扰。
5. 快速上手:3个高频调优场景
- 近缘物种(<5%分歧)追求速度:将
divergences设为useDefault="1",统一用最强过滤档;或调大各档--step、调高--hspthresh,并开启gpu="all"走 KegAlign。 - 远缘物种(>20%分歧)追求敏感:放宽
default档的--ydrop/--hspthresh,调低pafTrimIdentity与minPrimaryChainScore,并适当调大chainMaxGapLength。 - contig 级别输入(基因组未组装完整):调大
chainContigGroupSize与chainMaxGapLength,把minPrimaryChainScore降档,并确认redPrefilterOpts的-m值与你的 contig 平均长度匹配,避免误掩码。
修改建议:始终基于默认文件复制一份再通过
--optionFile指定,只改动必要节点。配置校验与默认值兜底逻辑可参考 configWrapper.py。
掌握 Cactus 配置XML 中 lastz 打分、chaining 参数与外群策略这三类旋钮,就能在精度与速度之间为自己的数据找到最佳平衡点。
【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考