计算化学公社

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

[Gaussian/gview] 跨平台实现gaussian与xTB程序联用搜索过渡态、产生IRC、做振动分析

[复制链接 Copy URL]

541

帖子

5

威望

3417

eV
积分
4058

Level 6 (一方通行)

本帖最后由 Stardust0831 于 2026-5-27 05:29 编辑

看到社长的第25届北京科音初级量子化学培训班马上就要开办了,不禁想起自己初学量子化学计算时,也正是通过社长的培训班较快建立了基本概念和实际操作经验。
其中,社长的 gau_xtb 接口对我帮助很大。该接口实现了Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析通过比DFT计算便宜2-3个数量级的计算成本,即可完成柔性扫描到TS和IRC的初期摸索。我之前也曾发帖分享过使用柔性扫描与半经验方法辅助搜索有机反应过渡态经验,有一些相关讨论。
原版gau_xtb主要面向 Linux 环境,在集群上使用非常方便。在我经验分享帖发出后,不少同学联系我说组内日常仍然主要在 Windows 上使用 Gaussian/GaussView;即使计算最终放在 Linux 集群上跑,Windows 也常被用作建模、检查结构和提交任务的控制端。通常认为linux高斯的计算效率,尤其是多核场景,是远好于windows版本的;但考虑到在使用接口时,Gaussian主要负责流程控制,实际能量、梯度和 Hessian 由 xTB 计算;且xTB已经有官方支持的windows版。因此,在Windows本地完成这些计算成本较低的初期探索,确实有一定便利性。

基于这一考虑,我参考社长原先的 gau_xtb 思路,用纯 Python 重新实现了一个更容易跨平台使用的版本。这个版本只依赖Python标准库,希望在Windows、Linux和集群环境中都能保持较一致的使用方式。
这是该脚本本体: gau_xtb.py (16.93 KB, 下载次数 Times of downloads: 31)
典型调用形式是:
  1. #P opt(ts,calcfc,noeigen,nomicro) external='python3 /path/to/gau_xtb.py'
复制代码
频率计算可写成:
  1. #P freq geom=allcheck external='python3 /path/to/gau_xtb.py'
复制代码
脚本接收 Gaussian 传入的参数:
  1. layer InputFile OutputFile MsgFile FChkFile MatElFile
复制代码
其中主要使用 InputFile 和 OutputFile。InputFile 里包含原子数、请求的导数阶数、电荷、多重度和坐标;OutputFile 则由脚本写回能量、偶极矩、梯度和 Hessian。
常用环境变量包括:
  1.   GAU_XTB_COMMAND=xtb        # xTB 可执行程序路径
  2.   GAU_XTB_THREADS=8          # xTB 使用的线程数
  3.   GAU_XTB_GFN=2              # 选择 GFN2-xTB
  4.   GAU_XTB_ARGS="--alpb water" # 额外 xTB 参数
  5.   GAU_XTB_TMPDIR=/tmp        # 临时目录
  6.   GAU_XTB_TIMEOUT=600        # 超时时间,单位秒
复制代码
其中GAU_XTB_THREADS会同时设置OMP_NUM_THREADS和MKL_NUM_THREADS,表示xTB程序在计算时的并行核数,而Gaussian 只做流程控制,设1核是合理的,%nproc=1即可。

下面是相关程序的安装方案:

gaussian安装:
见Gaussian的安装方法及运行时的相关问题
xTB安装:
linux版本可以参考社长的帖子
windows版本可以使用官方预编译好的版本Releases · grimme-lab/xtb · GitHub,考虑到连接github需要特殊姿势,我将本例中的xtb-6.6.1-windows-x86_64版本传上了网盘:https://pan.quark.cn/s/6878020db4f6下载解压后,将xTB程序加入系统环境变量,从左下角的搜索图标,输入环境变量 或 env 点击【编辑账户的环境变量】:
随后编辑变量PATH,加入xTB的bin文件夹所在路径:
并新建一个名为XTBPATH的环境变量,变量值为xTB下share文件夹下的xtb文件夹所在路径:
设置完后,按一系列确定即可。

可以开一个终端,输入:
  1. xtb --version
复制代码
如果有正常版本输出,就说明xTB已经装好了。

python安装:
已有较多教程,此处不再赘述,可以自行查看bing搜索结果。特别的,如果python不在环境变量内,也可根据真实文件所在位置使用绝对路径调用,如:
  1. external='C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe D:\work\bbs\gau_xtb\gau_xtb.py'
复制代码

下面给出一个使用该接口做计算的例子,相应的输入输出文件如下:
gau_xtb_example.zip (81.77 KB, 下载次数 Times of downloads: 27)
在本例中,输入文件是这样的:
  1. %chk=D:\work\bbs\gau_xtb\TS.chk
  2. %nprocshared=1
  3. #p opt=(calcfc,ts,noeigen,nomicro) external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'

  4. Title Card Required

  5. 0 1
  6. C                 -1.63584300   -0.21808700    0.18089800
  7. C                 -0.31253400   -0.78768400   -0.12991700
  8. C                 -0.69293200    0.88701800   -0.24226100
  9. H                 -2.44474100   -0.49942200   -0.48067100
  10. H                 -1.93454100   -0.16341300    1.21850400
  11. H                 -0.17138300   -1.46736000   -0.97247900
  12. H                 -0.63822800    1.76626700    0.38321600
  13. H                 -0.66552900    1.13166600   -1.29982000
  14. C                  0.66396300    0.00090100    0.49925300
  15. O                  1.89764600   -0.06104200   -0.13643800
  16. H                  2.53733300    0.42770600    0.39491700

  17. --link1--
  18. %oldchk=D:\work\bbs\gau_xtb\TS.chk
  19. %chk=D:\work\bbs\gau_xtb\freq.chk
  20. %nproc=1
  21. #P freq geom=allcheck external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'

  22. --link1--
  23. %oldchk=D:\work\bbs\gau_xtb\freq.chk
  24. %chk=D:\work\bbs\gau_xtb\IRC.chk
  25. %nproc=1
  26. #P IRC(maxpoints=20,calcfc) geom=allcheck external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'

复制代码
其中,“D:\work\bbs\gau_xtb\”是我本地的这个项目文件所在的文件夹,重复时需要根据真实路径修改。尤其是D:\work\bbs\gau_xtb\gau_xtb.py需要改为改脚本真实所在绝对路径。linux可以用类似/home/stardust0831/work/gau_xtb.py的路径写法
本例中我使用了--link1--连续运行了TS搜索、freq和IRC三个任务。其中%oldchk表示读取旧有的chk文件,%chk是当前任务产生的chk路径。
计算过程中会有一些窗口出现并消失,这是调用程序的正常现象,无需顾虑。
约1min左右后,该example计算结束,我们使用gview载入输出文件。

可以发现本例使用windows版本高斯已经能优雅的重复出原版gau_xtb接口在linux中的表现。

该项目已同步发到github,欢迎来star:https://github.com/Stardust0831/gau_xtb

如果您在研究中使用了该接口,希望能给本帖加些eV,并注意引用原版接口:
Tian Lu, gau_xtb: A Gaussian interface for xtb code, http://sobereva.com/soft/gau_xtb (accessed month day, year)

笔者能力有限,欢迎批评指正!

游客,本帖隐藏的内容需要积分高于 600 才可浏览,您当前积分为 0




评分 Rate

参与人数
Participants 11
威望 +1 eV +50 收起 理由
Reason
玉米猫 + 5
yxplzu + 5 好物!
biier2 + 5 好物!
sarphuart + 5 GJ!
wo335979123 + 5
Aletyx + 5 好物!
小可几何 + 5
SharkYYX2025 + 5 牛!
mizu-bai + 5 とてもいい!
wal + 5
sobereva + 1

查看全部评分 View all ratings

2

帖子

0

威望

13

eV
积分
15

Level 1 能力者

2#
发表于 Post on 2026-6-23 16:34:08 | 只看该作者 Only view this author
会和社长一样与xtb程序同步更新接口吗

66

帖子

1

威望

730

eV
积分
816

Level 4 (黑子)

3#
发表于 Post on 2026-6-24 11:35:28 | 只看该作者 Only view this author
脚本非常实用,感谢您的付出!

541

帖子

5

威望

3417

eV
积分
4058

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2026-6-24 12:51:06 | 只看该作者 Only view this author
arcfool 发表于 2026-6-23 16:34
会和社长一样与xtb程序同步更新接口吗

嗯,我会关注这方面的。如果接口过时可以回帖提醒我,在github仓库提issue或者pr也是欢迎的

372

帖子

0

威望

2449

eV
积分
2821

Level 5 (御坂)

5#
发表于 Post on 2026-6-25 09:03:37 | 只看该作者 Only view this author
请问一下,运行后马上报错,提示 Failed to open output file from external program 是什么原因?
xtb和python都可以正常命令行运行,但是G09W\Scratch\目录下没有生成gxx.EOu这个文件。

541

帖子

5

威望

3417

eV
积分
4058

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2026-6-25 19:20:40 | 只看该作者 Only view this author
sai77 发表于 2026-6-25 09:03
请问一下,运行后马上报错,提示 Failed to open output file from external program 是什么原因?
xtb和p ...

检查一下路径有没有空格或者中文。
确保相关软件/输入文件都在纯英文路径。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
wal + 5

查看全部评分 View all ratings

372

帖子

0

威望

2449

eV
积分
2821

Level 5 (御坂)

7#
发表于 Post on 2026-6-26 08:38:19 | 只看该作者 Only view this author
Stardust0831 发表于 2026-6-25 19:20
检查一下路径有没有空格或者中文。
确保相关软件/输入文件都在纯英文路径。

本来放在Program Files目录下,为了避免空格又挪到Software目录下了,同样报错。路径和输出文件我上传了。

这里有个Linux版的类似问题,说是临时文件导致的
http://bbs.keinsci.com/thread-57334-1-1.html

无标题.png (126.88 KB, 下载次数 Times of downloads: 2)

无标题.png

example.out

17.34 KB, 下载次数 Times of downloads: 2

5

帖子

0

威望

133

eV
积分
138

Level 2 能力者

8#
发表于 Post on 2026-6-26 11:57:54 | 只看该作者 Only view this author
非常感谢

541

帖子

5

威望

3417

eV
积分
4058

Level 6 (一方通行)

9#
 楼主 Author| 发表于 Post on 2026-6-26 21:13:51 | 只看该作者 Only view this author
本帖最后由 Stardust0831 于 2026-6-27 22:02 编辑
sai77 发表于 2026-6-26 08:38
本来放在Program Files目录下,为了避免空格又挪到Software目录下了,同样报错。路径和输出文件我上传了 ...

我本地没有复现这一报错,这个接口在我这边已有的所有受测环境中均正常工作,我非常乐于来远程你电脑来协助排查。

这个项目是开源的,您也可以自行修改代码尝试刚刚帖子里wal老师的那个做法,如果有效,欢迎在github仓库提个pr,我非常乐于在我这边测试也通过后合并你的修改。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
wal + 5

查看全部评分 View all ratings

66

帖子

1

威望

730

eV
积分
816

Level 4 (黑子)

10#
发表于 Post on 2026-6-28 16:01:30 | 只看该作者 Only view this author
Stardust0831 发表于 2026-6-26 21:13
我本地没有复现这一报错,这个接口在我这边已有的所有受测环境中均正常工作,我非常乐于来远程你电脑来协 ...

Stardust0831老师您好,您的 gau_xtb.py 脚本很实用,我把它整合进了一个叫 xTBridge 的 PyQt5 桌面 GUI 里,支持 Gaussian+xTB 联用、xTB 独立计算和 ORCA 提交三个标签页,还加上了 3D 分子可视化。您的原始脚本同时作为高斯 External 调用的 CLI 入口和 GUI 的计算引擎,代码基本没动。感谢您的基础工作!

【xTBridge:用于 Gaussian、xTB 与 ORCA 工作流桥接的桌面前端】 https://www.bilibili.com/video/B ... 988a59bc9b82b995a38

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
Stardust0831 + 5 GJ!

查看全部评分 View all ratings

6

帖子

0

威望

351

eV
积分
357

Level 3 能力者

11#
发表于 Post on 2026-7-11 10:36:01 | 只看该作者 Only view this author
老师好,我想问一下,这个过渡态搜索是给它反应物结构,就可以去搜索过渡态吗?这个单分子体系适用吗?

541

帖子

5

威望

3417

eV
积分
4058

Level 6 (一方通行)

12#
 楼主 Author| 发表于 Post on 2026-7-13 18:15:21 | 只看该作者 Only view this author
whZt 发表于 2026-7-11 10:36
老师好,我想问一下,这个过渡态搜索是给它反应物结构,就可以去搜索过渡态吗?这个单分子体系适用吗?

是给手摆的或者力场简单优化的过渡态初猜结构。具体可以看我帖子开头的博文。典型做法是把反应中要成和断的键调整为平衡状态键长的约1.5倍。
只给反应物结构不是常见做法,因为可以有多个相邻的过渡态,对应的产物也可能不是你想要的。如果只想给反应物结构就看出怎么反应,或许可以考虑势能面全搜索或者增强采样分子动力学,由于刚刚提到“多个可能的生成物”的问题这通常是极其昂贵的。
当前帖子里的过渡态搜索适用于单分子体系。更准确来说是适用于所有电子结构不很复杂的且传统过渡态理论可以描述的场景。

本版积分规则 Credits rule

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

GMT+8, 2026-7-24 15:07 , Processed in 0.235354 second(s), 25 queries , Gzip On.

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