计算化学公社

 找回密码 Forget password
 注册 Register
Views: 26|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[辅助/分析程序] 用广义旋转门转动研究配位化合物多面体重排:gTA 方法与程序简介

[复制链接 Copy URL]

293

帖子

8

威望

1702

eV
积分
2155

Level 5 (御坂)

本帖最后由 smutao 于 2026-7-2 19:40 编辑

用广义旋转门转动研究配位化合物多面体重排:gTA 方法与程序简介

文 / smutao

2026年7月

本文介绍笔者最近发表在 Journal of Computational Chemistry 的工作:

Generalized Turnstile Rotation: Formulation, Visualization, Workflow Implementation, and Application for Modeling Polytopal Rearrangements

论文信息:

Tao, Y.; Wang, X.; Zou, W.; Kraka, E. Journal of Computational Chemistry 2026, 47, e70432.

DOI:https://doi.org/10.1002/jcc.70432

预印本:ChemRxiv preprint

PyMOL 插件 gTA:https://github.com/smutao/gTA-plugin

命令行工具与工作流 gTA-workflow:https://github.com/smutao/gTA-workflow


1. 为什么需要一个新的结构坐标?

在计算化学中,寻找反应路径和过渡态通常要先选一个合适的反应坐标。对于普通的键断裂、键形成、构象变化,键长、键角、二面角等内坐标往往已经够用。然而在配位化合物的动态立体化学里,很多重排并不是某一个键长或某一个二面角的简单变化,而是一组配体围绕中心原子发生协同的大幅度运动。

这类运动在文献中常被归入多面体重排(polytopal rearrangement)。典型例子包括 Berry pseudorotation、turnstile rotation、Bailar twist、Ray-Dutt twist,以及一些高配位主族或过渡金属化合物中的快速位置交换过程。它们的共同特点是:如果只盯着某一个键角或二面角,往往看不出整个结构在“怎样动”;如果强行用多个传统内坐标组合,又会遇到坐标选择不唯一、自动化困难、约束扫描不稳定等问题。

笔者这项工作关注其中一类特别直观的集体运动:turnstile rotation。中文可以暂译为“旋转门转动”。现实中的旋转门有一个轴和若干条 arm;在分子中,我们也可以把中心原子看作 anchor,把若干个直接配位原子看作 arm atoms,然后描述这些 arm 围绕某条自动定义的轴发生转动。



图1. 现实中的三臂旋转门可以帮助理解 turnstile rotation:关键是先定义旋转轴,再描述若干条 arm 的协同转动。


2. 广义旋转门转动的基本思想

传统 turnstile rotation 最早是在五配位化合物重排机制中提出的概念。后来的研究表明,不同体系里可能出现二臂、三臂甚至更多 arm 参与的类似运动。因此,若想把这种运动真正做成通用程序,就不能只服务于某一种配位数或某一个理想几何构型,而需要一个更一般的数学定义。

在本文中,我们提出了 generalized N-arm turnstile rotation。给定一个中心原子 O 和按顺时针或逆时针顺序排列的一组 arm atoms A1, A2, ..., AN,程序会根据这些点的空间分布自动确定一条旋转轴。直观地说,算法会寻找一个最能代表这些 arm 周期性分布的参考圆,并由此确定穿过中心原子的旋转轴。



图2. 广义旋转门转动的旋转轴定义示意图。实际配位环境并不一定是理想对称结构,因此需要用一个可优化的参考几何来定义轴。

这个定义带来的好处是明显的:

  • 它不依赖某一个具体化学体系,也不要求严格的理想多面体对称性;
  • 它把一类集体运动压缩成一个直观的角度参数;
  • 它可以用于可视化、手动结构编辑、批量结构生成和后续过渡态搜索;
  • 它不需要修改主流量子化学程序的源码,因此比较容易和 ORCA、xTB 以及其他计算引擎衔接。



3. PyMOL 插件 gTA:先用眼睛看清楚这个运动

为了让用户能够直观看到 generalized turnstile rotation 到底是什么,笔者开发了一个 PyMOL 插件 gTA,全称是 generalized Turnstile Assistant。它适合做两件事:一是交互式检查某个结构中是否存在合理的 turnstile-like motion;二是手动生成一个旋转后的结构,作为后续计算或演示的起点。



图3. gTA PyMOL 插件界面。用户通过鼠标选择中心原子和 arm atoms,插件自动确定旋转轴并根据滑块角度更新结构。

3.1 安装 PyMOL 和依赖

gTA 插件需要 PyMOL 3.0 或更新版本,并依赖 scipy。开源版 PyMOL 可以从 conda-forge 安装,例如:

  1. conda create -n pymol-opensource
  2. conda activate pymol-opensource
  3. conda install -c conda-forge pymol-open-source
  4. conda install -c conda-forge scipy
  5. pymol
复制代码


3.2 安装插件

下载 gTA-plugin 后,打开 PyMOL,进入菜单 Plugin -> Plugin Manager,在 Install New Plugin 标签页中点击 Choose file...,选择插件目录中的 gTA-src/__init__.py。一路确认后,PyMOL 的 Plugin 菜单里会出现 generalized Turnstile Assistant。

3.3 基本使用流程

  • 在 PyMOL 中载入需要分析的分子结构;
  • 打开 Plugin -> generalized Turnstile Assistant;
  • 点击插件窗口中的 Start;
  • 在 PyMOL 显示窗口中点击中心原子;
  • 点击一个 arm atom,然后在右侧 wizard 菜单里点 Arm Atom Selection Done;
  • 按同样方式依次选择剩余 arm atoms,注意顺序应保持顺时针或逆时针一致;
  • 选择至少两个 arm 后,点击插件窗口中的 Picking Finished;
  • 拖动角度滑块,或在输入框中写入角度并点击 Set Angle;
  • 如果想回到初始结构,可以点击 Revert Changes。


需要注意的是,鼠标选择的是直接连接中心原子的 arm atoms。对于每条 arm 后面连着的配体片段,插件会根据连通性自动判断哪些原子应当跟随转动。


4. gTA-cli:把旋转门转动放进脚本

PyMOL 插件适合交互式观察,但如果要做一串角度的扫描、批量生成结构、或者把这个坐标接入量子化学工作流,图形界面就不够方便了。因此另一个仓库 gTA-workflow 中提供了命令行工具 gTA-cli。

gTA-cli 读取一个 JSON 配置文件,识别一个或多个 turnstile,对指定角度施加广义旋转门转动,并把旋转后的结构写成 XYZ 文件。它支持两种输入模式:

  • SDF 输入:可借助 RDKit 的连通性信息,旋转整个配体片段;
  • XYZ 输入:由于 XYZ 不含键连信息,需要设置 first_coord_sphere_only = true,只旋转显式列出的第一配位层 arm atoms。


4.1 安装依赖

基本依赖为 Python 3、numpy 和 scipy。如果要使用 SDF 模式,还需要 rdkit。

  1. pip install numpy scipy
  2. # rdkit 推荐通过 conda-forge 等适合自己环境的包源安装
复制代码


4.2 运行方式

在 gTA-cli/ 目录下,可以显式传入 JSON 文件运行:

  1. python3 code/gTA-cli.py examples/g1/g1-babel-1.json
  2. python3 code/gTA-cli.py examples/g2/g2-co-2.json
复制代码


4.3 一个 XYZ 模式的 JSON 示例

下面这个输入定义了两个 turnstile groups。程序会对两个角度列表做笛卡尔积组合,并为每个组合写出一个 XYZ 文件。

  1. {
  2.   "input_xyz": "g2-co.xyz",
  3.   "index_start_from": 1,
  4.   "first_coord_sphere_only": true,
  5.   "transformations": [
  6.     {
  7.       "alias": "arm_x",
  8.       "anchor_atom": 1,
  9.       "arm_atoms": [3, 4],
  10.       "angle": [10, 20, 30]
  11.     },
  12.     {
  13.       "alias": "arm_y",
  14.       "anchor_atom": 1,
  15.       "arm_atoms": [2, 7],
  16.       "angle": [10, 20, 30]
  17.     }
  18.   ]
  19. }
复制代码


常见输出包括主 XYZ 文件和 debug 目录中的辅助文件。debug 文件对于检查程序推导出的参考几何、旋转轴和选中片段很有帮助。

实际使用时建议优先明确 index_start_from。读者之间常见的编号习惯不同,1-based 和 0-based 混用很容易导致选错原子。

5. 从结构旋转到过渡态搜索:relaxed scan 工作流

仅仅生成旋转后的结构还不够。对于研究 fluxional rearrangement 的用户来说,更重要的是:如何利用这个坐标找到过渡态?本文给出的实用策略是 turnstile rotation-driven relaxed scan。

工作流的核心循环如下:

  • 从优化后的初始结构出发;
  • 定义中心原子、turnstile arm atoms,以及后续约束优化中需要固定的原子;
  • 用 gTA-cli 让结构按一个小角度 Delta theta 旋转,常用步长为 5 度;
  • 对旋转后的结构做受约束几何优化;
  • 记录能量和优化后结构;
  • 把当前优化结构作为下一步扫描的起点,重复上述过程。




图4. 基于 gTA 的 turnstile rotation relaxed scan 工作流。扫描得到的 aTS 可以继续走直接 TS refinement 路线,也可以作为 NEB 路线中的内部参考结构。

这个扫描得到的能量最高点可以作为 approximate transition state,简称 aTS。之后有两条常用路线:

  • TS refinement route:直接把 aTS 作为初猜,进行过渡态优化,最后通过频率分析确认是否为一阶鞍点;
  • NEB route:如果直接 TS 优化不收敛,或体系较大、反复算 Hessian 代价太高,可以用起始结构、产物结构和 aTS 构造 NEB 路径,再从 NEB 结果中提取过渡态候选结构。


需要强调的是,aTS 的能量不一定接近最终真实过渡态 rTS 的能量。原因是 relaxed scan 中为了强制体现目标集体运动,会固定第一配位层中的某些原子位置,因此 aTS 可能包含额外几何应变。实际判断 aTS 是否有用时,更关键的是它在结构上是否接近后续 rTS,而不是扫描曲线上的相对能量是否已经很精确。

5.1 ORCA 工作流示例

gTA-workflow 中提供了基于 ORCA 的迭代扫描脚本。核心入口为:

  1. cd gTA-orca-workflow/sf4/2_scripts/
  2. bash ./run-workflow.sh [options]
复制代码


常用参数包括:

  • -m:扫描/优化迭代次数;
  • -a:每一步旋转角度,单位为度;
  • -c:中心原子编号;
  • -r:arm atoms 编号,例如 "2,4,5" 或 "2-4,7";
  • -q 和 -u:分子电荷和自旋多重度;
  • -f:约束优化中固定的原子编号;
  • -i:初始 XYZ 结构;
  • -n:每一步几何优化的最大循环次数;
  • -k:ORCA 执行命令,可用于传入容器包装命令。


  1. bash ./2_scripts/run-workflow.sh \
  2.   -m 24 \
  3.   -a "5" \
  4.   -c 1 \
  5.   -r "2,4,5" \
  6.   -q 0 \
  7.   -u 1 \
  8.   -f "2-5" \
  9.   -n 50 \
  10.   -i 1_inputs/opted_sf4.xyz \
  11.   -k "/path/to/orca"
复制代码


5.2 xTB 工作流示例

对于初筛或较大体系,也可以先用 xTB 做类似扫描。入口为:

  1. cd gTA-xtb-workflow/sf4/2_scripts/
  2. bash ./run-workflow.sh [options]
复制代码


xTB 版本常用参数与 ORCA 版本类似,其中 -x 用于指定 xtb 可执行文件,-g 用于传递 --gfn 参数。

  1. bash ./run-workflow.sh \
  2.   -m 25 \
  3.   -a '-5' \
  4.   -c 1 \
  5.   -r 2,3,5 \
  6.   -q 0 \
  7.   -u 0 \
  8.   -f 2-5 \
  9.   -i 1_inputs/sf4-stable.xyz \
  10.   -x /path/to/xtb \
  11.   -g 2
复制代码


脚本运行后会生成工作目录,保存能量表、逐步结构、合并后的 XYZ 轨迹以及每一步的原始日志。读者可以先用较便宜的方法找出大致路径和 aTS,再用更高精度方法做后续 TS 优化和频率确认。


6. 什么时候适合使用 gTA?

这个方法不是为了替代所有反应坐标,而是用于那些“看起来就是一组配位原子在协同转动”的问题。以下情况尤其值得尝试:

  • 研究对象是配位化合物或主族高配位化合物的 fluxionality;
  • 怀疑存在二臂、三臂或多臂 turnstile-like rearrangement;
  • 传统二面角扫描无法自然描述整个重排;
  • 直接 TS 搜索很难给出合理初猜;
  • 希望在不修改量子化学程序源码的情况下构建专门的扫描坐标。


相反,如果反应路径本质上是简单键断裂、质子转移、单键旋转或小幅构象变化,用常规内坐标可能更直接,不必强行套用 turnstile 模型。


7. 常见问题 Q&A

    1. gTA 和普通二面角扫描有什么本质区别?

二面角扫描描述的是四个原子定义的扭转,而 gTA 描述的是若干 arm atoms 围绕自动确定的旋转轴做协同运动。对于多面体重排,后者更接近整个第一配位层的实际集体运动。

    2. arm atoms 的顺序重要吗?

重要。arm atoms 应按顺时针或逆时针顺序给出。顺序混乱会影响参考圆和旋转轴的定义,从而得到不符合预期的结构操作。

    3. 为什么 constrained optimization 时不能只固定正在旋转的 arm atoms?

如果固定原子太少,后续优化可能把目标运动“消掉”,甚至导致整个分子发生近似刚体转动。实际工作中通常需要固定第一配位层中更多关键原子,以维持扫描坐标的含义。

    4. 扫描得到的 aTS 能量很高,是否说明方法失败?

不一定。aTS 是受约束扫描中的近似结构,可能包含额外应变。它的主要价值是提供结构上合理的 TS 初猜,而不是直接给出最终势垒。

    5. 直接 TS refinement 和 NEB route 应该优先用哪个?

如果体系不大、aTS 结构看起来合理,可以先尝试直接 TS refinement。若优化失败,或者体系较大导致 Hessian 代价很高,则建议转向 NEB route。

    6. gTA-cli 是否只能处理一个 turnstile?

不是。JSON 中可以定义多个 transformation groups。只要不同 turnstile 对应的旋转片段没有不合理重叠,程序可以生成多个角度组合的结构。

    7. XYZ 模式为什么限制更多?

XYZ 文件本身不包含键连信息,程序无法可靠判断某个 arm 后面连着哪些原子。因此 XYZ 模式下要求 first_coord_sphere_only = true,只旋转用户显式指定的 arm atoms。

    8. 这个方法能不能接机器学习势?

原则上可以。gTA-cli 只负责生成结构和推进扫描坐标,后面的能量/力计算可以由量子化学程序、半经验方法或机器学习势提供。只要能做受约束优化并输出结构与能量,就可以考虑接入类似流程。

    9. 我在运行的过程中还遇到其他问题怎么办?


如果遇到大模型也解决不了的问题,可以在GitHub issue发帖或者给我发邮件(论文第一作者邮箱)。因为平时很少上论坛,所以在论坛回复问题会有困难。


8. 小结

广义旋转门转动的意义在于,它把一类原本需要大量化学直觉和手工调坐标的多面体重排,写成了一个明确、可视化、可脚本化的结构操作。PyMOL 插件 gTA 负责让用户直观看到运动本身;gTA-cli 负责批量生成结构;ORCA/xTB 工作流则展示了如何把这个坐标真正用于 relaxed scan 和过渡态搜索。

对于从事配位化学、主族高配位化合物、动态立体化学或 fluxional mechanism 研究的用户,这套工具可以作为寻找复杂重排过渡态的一个实用入口。欢迎感兴趣的读者下载试用,也欢迎在 GitHub 或论坛中反馈使用中遇到的问题。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-7-2 22:42 , Processed in 0.281891 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list