Guoyi.run
最大简约法(Maximum Parsimony,简称 MP)分析依然是系统发育研究中的核心方法,尤其适用于基于形态学特征的数据分析。TNT 是目前可用于最大简约法分析中最快速、最高效的软件包。它功能灵活,交互性强,可用于多种分析任务,然而也正因如此,其学习曲线较为陡峭。本文介绍了 guoyi.run,这是一款基于 TNT 宏语言开发的脚本,旨在为 MP 分析提供全自动、一站式的解决方案。该脚本可从 GitHub 下载:https://github.com/starsareintherose/TNT_Script ,也可以从自建 Git 站点 https://git.malacology.net/malacology/TNT_Script 获取。
引言
最大简约法(MP)作为一种非模型的系统发育方法,长期以来被广泛应用于基于形态性状的系统发育研究(Kluge & Farris, 1969;Farris, 1970;Fitch, 1971)。此外,MP 方法在基因组数据集中的表现也非常出色,展现出惊人的运算速度与效率,是基于模型方法的有力替代方案(Kolaczkowski & Thornton, 2004;Wheeler 等, 2017;Torres 等, 2022)。TNT(Tree analysis using New Technology)被广泛认为是当前 MP 分析中最快速且最有效的软件工具(Goloboff 等, 2022)。它融合了多种先进的搜索算法,例如 fuse、drift、ratchet 等,能够有效地在庞大的树空间中寻找最优解,即便面对大型复杂数据集也能应对自如(Goloboff 等, 2008;Goloboff & Catalano, 2016;Wheeler 等, 2017;Torres 等, 2022;Goloboff & Morales, 2023)。尽管 TNT 拥有强大的计算性能与丰富的命令集,其命令行界面对初学者而言仍然较为复杂。虽然其图形界面已发布(Goloboff 等, 2008;Goloboff & Morales, 2023),但尚未整合一个包含所有分析步骤的全自动流程。
新开发的 TNT 脚本 guoyi.run 提供了一个完整的、一步式的 MP 分析流程,基于 TNT 的宏语言实现(Goloboff & Morales, 2020)。该流程在数据类型、加权方式、K 值设置、合意树类型与重抽样方法等方面具备高度灵活性。它不仅降低了 TNT 的入门门槛,也鼓励用户跟踪与理解脚本中的每一步骤,从而逐步掌握 TNT 并能够独立使用其高级方法。
基础设置
guoyi.run 被设计为最大简约法分析的集成解决方案,支持多种数据矩阵格式,包括 Hennig86/TNT 原生格式、FASTA 和 NEXUS 格式。该脚本可在两种模式下运行:shell 命令行模式与解释器模式。在 shell 模式中,使用命令 <TNT 可执行文件路径> run <guoyi.run 路径> <数据矩阵路径> <, 或 ;>
运行,其中 Unix/Linux 用户结尾使用逗号(,
),Windows 用户使用分号(;
)。在解释器模式(tnt 内的命令行)中,运行命令为 run <guoyi.run 路径> <数据矩阵路径>;
。如果脚本文件与数据矩阵位于同一目录中,则 run <guoyi.run 路径>
可简写为 guoyi
。路径名中请勿包含中文或空格字符。
高级设置
guoyi.run 的一大亮点在于其灵活的参数配置能力。扩展的命令结构为 <TNT 可执行文件路径> run <guoyi.run 路径> <数据矩阵路径> <数据类型> <加权类型> <0(等权)或 K 值(扩展/标准加权)> <合意树类型> <重抽样方式> <前缀名> <, 或 ;>
。
该脚本支持 TNT 中几乎所有的数据类型(除地标数据外),包括离散数据(2–32
状态)、连续数据(cont
)、核酸(dna
)与氨基酸(port
)等。
在权重设置方面,可选择扩展隐式加权(eiw
)、标准隐式加权(iw
)或等权加权(ew
)。默认配置采用 K 值为 12 的扩展隐式加权,依据 Goloboff 等(2018)推荐,此方式能有效减少同形性特征的影响,提高系统树的可靠性。不过用户也可根据自身数据特点与分析假设,自主选择标准或等权加权。
脚本的树搜索策略具有自适应性,会依据数据集的规模与复杂性进行调整。对于不超过 20 个分类单元且未启用扩展隐式加权的数据集,脚本将使用穷举式的 implicit enumeration 方法,确保找出所有最简约树(MPTs)。对于介于 20 到 75 个分类单元之间的数据,或小数据集下启用扩展隐式加权的情况,脚本将采用 TBR(tree bisection and reconnection)策略,通过 1,000 次分支交换来广泛探索拓扑空间。若数据量较大(≥75 分类单元),则采用新技术搜索方法,直到独立找到 50 次最优树长为止,具体流程包括 20 次复制起始搜索,接着执行 10 个周期的 drift、ratchet 与 fusing 等搜索操作,以进一步优化树搜索。
完成树搜索后,guoyi.run 将构建合意树并计算支持值。默认采用严格合意树(str
),用户亦可选择多数合意(mjr
)或半严格合意(hlf
)。重抽样方法通过数值组合设定:例如 0.1
为相对 Bremer 支持,0.2
为 Bremer 支持,1
表示 Jackknife,2
为 Bootstrap,4
为对称重抽样。默认设定使用值为 7
,表示启用 Jackknife、Bootstrap 和对称重抽样,各重抽样方法重复 1,000 次以获得统计稳健的类群支持评估。此外,脚本还会在合意树上映射特征变异,并计算关键树形指标,如树长(TL)、CI、RI及每个性状的 homoplasy。当采用非等权加权时,还会额外报告各性状的凹函数值(concavity)。
分析完成后,guoyi.run 将生成一系列输出文件,便于进一步解释与后续使用。这些文件包括包含或不包含分类单元名称的树文件,以及可直接导入 WinClada 的 <prefix.>winclada.ss
文件,用于进一步分析同义与同形性状。同时,脚本输出 SVG 格式的矢量图文件,便于在 Inkscape 等图形编辑器中打开与编辑。
外部软件支持
guoyi.run 配套提供了一个由 C++ 编写的命令行工具 tnt2figtree
,可将 TNT 的带支持值 NEXUS 格式输出转换为 FigTree 可直接读取的格式,自动嵌入支持值作为节点标签。该工具支持跨平台运行,兼容多种操作系统。
结语
guoyi.run 脚本以直观友好的方式将强大的 TNT 系统发育分析功能呈现给广大研究者,基于原生 TNT 宏语言实现的自动化流程,让不同计算背景的用户都能利用其高性能算法重建系统发育关系。尽管该脚本的默认策略为相对详尽的搜索方法,但其效率远超 PAUP*(Swofford, 2003)等传统软件。在实践中,大多数 PAUP* 用户仅执行一次随机加权加分支交换操作,而 TNT 即便执行 1,000 次复制仍能在更短时间内完成分析(Goloboff 等, 2022)。脚本支持广泛定制,适配多样化的数据与研究问题,最终推动系统发育分析的高效与规范化发展。脚本与外部程序 tnt2figtree
可通过 GitHub(https://github.com/starsareintherose/TNT_Script)和个人维护的 git 网站(https://git.malacology.net/malacology/TNT_Script)获取。此外,guoyi.run 亦可通过 BioArchLinux 以软件包名 tnt-guoyi-script
进行安装。
如果有任何疑问可以加 QQ 群 118094340 交流,注明来意以及哪里看到的群号信息。
引用
使用该脚本,必须引用 TNT 和本脚本
- Zhang G. guoyi.run: One-step TNT script for maximum parsimony phylogenetic analysis. Zootaxa 5642(1): 96–98. https://doi.org/10.11646/zootaxa.5642.1.10
并且强烈恳请您致谢作者。
致谢
本项目最初旨在支持我师姐 王恩翠 针对鳞翅目形态演化的硕士研究。随着越来越多朋友的使用请求与新数据集的出现,我对脚本进行了全面重构。感谢 王恩翠、冯旗、姜玉荣、赵志鹏 等用户提供的反馈与耐心支持。特别感谢 王治平 在整个开发过程中的鼓励。同时感谢 Pablo Goloboff 提供的反馈与代码建议,以及 Juan J. Morrone 的悉心指导。