计算化学公社

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

[辅助/分析程序] EasyShermo: 萌新的全自动用 Shermo 做批处理的脚本

[复制链接 Copy URL]

153

帖子

2

威望

1472

eV
积分
1665

Level 5 (御坂)

计算化学公社外门弟子

本帖最后由 kimariyb 于 2023-8-15 22:41 编辑

前言

各位老师好,学生是入门三个月的萌新。最近在捣鼓用量化计算热力学数据时,用到了卢老师开发的 Shermo 程序计算热力学数据。在拜读完卢老师博文《使用Shermo结合量子化学程序方便地计算分子的各种热力学数据》(http://sobereva.com/552) 后,尽管文中的第五节(5 通过shell脚本调用Shermo做批处理)介绍了如何使用 shell 脚本调用 Shermo 做批处理,但是有一个不足之处在于 getGall.sh 脚本是用 Shermo 直接处理优化和振动分析后的 out 文件。而优化和振动分析所用的级别都不会太高,因此直接这样处理得到的热力学数据精度可能不高。如果想要 Shermo 使用高精度单点来计算热力学数据,一是可以在 Shermo 的配置文件 settings.ini 中将 E= 后面的值修改为所研究体系的单点能;二是在命令行调用 Shermo 时写上 -E xxx 参数。很显然第二种方法更适合用脚本进行批处理,不过学生的 shell 水平不太行,所以用的 Python 来写这个脚本,以实现全自动用 Shermo 做批处理,学生将其命名为 EasyShermo。

实现思路

假如在 B3LYP/6-311G** 级别下做优化和振动分析后得到了 10 个 out 文件,分别为 n_opt.out (n = 1 ~ 10),并在优化好的结构的基础上在 CCSD(T)/cc-PVTZ 级别下做了单点计算,也得到了 10 个 out 文件,分别为 n_sp.out (n = 1 ~ 10)。下面是实现思路

1. 首先读取单点任务的输出文件 n_sp.out (n = 1 ~ 10) 中的最终能量。由于学生只用过 Gaussian 和 Orca 计算能量,所以只考虑了这两个程序。如果读取 Orca 输出文件的单点能,只需要写个正则表达式读取 FINAL SINGLE POINT ENERGY 之后的值就可以了。不过读取 Gaussian 输出文件的单点能就比较麻烦了,学生只考虑了三种情况,一、如果 archive 部分有 CCSD(T)= 则读取后面的值(对应使用 CCSD(T)  计算的情况);二、如果没有 CCSD(T)= 而有 MP2= 则读取 MP2= 后面的值(对应使用 MP2 和双杂化泛函计算的情况);三、如果没有 MP2= 而有 HF= 则读取 HF= 后面的值(对应使用普通泛函和 HF 计算的情况)。通过循环将读取到的每个输出文件能量存储在一个有顺序的容器中,方便 Shermo 之后调用。

2. 之后使用只需要实现如何通过命令行调用 Shermo 做批处理就可以了。例如需要批量执行 Shermo n_opt.out -E xxx,才能实现目的,其中 xxx 为 n_opt.out 对应结构的高精度单点能。由于之前是按照顺序将单点能保存在容器中,并且 n_opt.out 文件名和 n_sp.out 文件名格式上类似,这样就能使 Shermo 批量调用 n_opt.out 文件时,使 n_opt.out 能和 n_sp.out 的能量一一对应,不至于出现名字和内容不对应的情况。(当然这不是完美的解决方法,不过学生水平有限)

3. 最后读取 Shermo 输出的内容,并分别将读取到的内容,写入到和 n_opt.out 同名的文本文件 n_opt.txt 中。这样就完成了全自动调用 Shermo 做批处理。

使用方法

EasyShermo 安装简单,具体信息见 EasyShermo GitHub 主页:https://github.com/kimariyb/easy-Shermo 。EasyShermo 主要由 main.py、config.py、easyShermo.py、settings.ini 以及三个文件夹组成。main.py 不用多说,是调用主函数的,没什么内容。config.py 是读取配置文件 settings.ini 的文件。easyShermo.py 是脚本的业务逻辑具体实现的文件,包括如何读取单点、如何批量调用 Shermo。settings.ini 是用来配置 Shermo 运行时的参数的配置文件,内容 90% 和 Shermo 的 settings.ini 一致,好处在于不用修改 Shermo 本身的 settings.ini。EasyShermo 的 settings.ini 必须根据自身情况配置 Shermo 的可执行文件路径以及单点能的计算程序是 Gaussian 还是 Orca。
  1. ; The path to the Shermo executable file.
  2. shermoPath = D:\\environment\\Shermo\\Shermo.exe

  3. ; The program for performing a single point calculation task.
  4. ; 1. Gaussian
  5. ; 2. Orca
  6. spFile = 1
复制代码

学生这里有 5 个在 B3LYP/def2-TZVP 级别下优化和振动分析的结构:C_opt.out、H2_opt.out、C2H2_opt.out、C2H4_opt.out 和 CH4_opt.out,并用优化后的结构在 CCSD(T)/cc-PVQZ 级别下计算单点,同样得到 5 个输出文件 C_sp.out、H2_sp.out、C2H2_sp.out、C2H4_sp.out 和 CH4_sp.out。分别将优化和振动分析的 5 个文件放入 EasyShermo 的 opt 文件夹中,将单点的 5 个 文件放入 sp 文件夹中。由于单点是在 Gaussian 计算的,所以要将 spFile 设置为 1,如果是 Orca 算的,改成 2 就可以了。



将准备工作都完成之后,在项目文件目录下输入 Python main.py 就可以全自动调用 Shermo 了。EasyShermo 首先会输出基本的一些信息,然后输出 Shermo 的配置信息,接着输出在 sp 文件夹里读取到的单点能,最后批量调用 Shermo 并输出调用 Shermo 的命令。



在每个 Shermo 调用完之后,会在 EasyShermo 的 output 文件夹下写入一个文本文件用来记录调用 Shermo 的输出信息。例如执行完 EasyShermo 之后,就会在 output 文件夹输出 C_opt.txt 、H2_opt.txt、C2H2_opt.txt 、C2H4_opt..txt 和 CH4_opt.txt 5 个文件。这 5 个 txt 文件中的内容就和单独调用 Shermo 计算输出的内容一致,这样就能在 txt 文件中读取你感兴趣的热力学数据了。同时,也可以自己写一个 bat 或 shell 脚本批量读取 txt 文件里,你所感兴趣的热力学数据。不过学生水平有限,这里就没写这个脚本了。



最后

感谢卢老师开发的 Shermo 程序,同时也感谢各位老师、各位同学的浏览。帖中涉及到的优化振动分析、单点以及 EasyShermo 生成的 txt 文件均已附在附件 example.zip 压缩包里。通过 EasyShermo,可以实现全自动调用 Shermo,用户要做的只有计算、改文件名、改配置文件。不过学生水平有限,功能的实现、代码的质量必定有不足之处,还请见谅。


同时学生还用 Go 语言实现了相同的效果,编译成了可在 Windows 下运行的可执行文件,使用 Go 语言编译的可执行文件连 Python 都不用安装,双击 exe 文件即可运行。下载地址:https://github.com/kimariyb/easy ... .2.2/EasyShermo.zip,也可以直接下载附件 EasyShermo.zip

EasyShermo.zip (3.24 MB, 下载次数 Times of downloads: 78)
example.zip (104.06 KB, 下载次数 Times of downloads: 56)

评分 Rate

参与人数
Participants 8
威望 +1 eV +32 收起 理由
Reason
hlmkh + 5
QRD + 4 赞!
alonewolfyang + 5 谢谢
anson + 5 好物!
妙角不脆 + 5 GJ!
sobereva + 1
zsu007 + 5 赞!
indec + 3 好物!

查看全部评分 View all ratings

KimariYB, Postgraduate, XiaMen University
School of Electronic Science and Engineering (National Model Microelectronics College)
Research interests: theoretical and computational chemistry and machine learning

313

帖子

0

威望

3942

eV
积分
4255

Level 6 (一方通行)

秦都王城守卫教头

2#
发表于 Post on 2023-8-28 14:14:13 | 只看该作者 Only view this author
本帖最后由 alonewolfyang 于 2023-8-28 15:08 编辑

有点愚蠢的经历,才发现Shermo必须为最新版的才能用
用心去观察这纷纷扰扰的红尘

153

帖子

2

威望

1472

eV
积分
1665

Level 5 (御坂)

计算化学公社外门弟子

3#
 楼主 Author| 发表于 Post on 2023-8-28 15:31:43 | 只看该作者 Only view this author
alonewolfyang 发表于 2023-8-28 14:14
有点愚蠢的经历,才发现Shermo必须为最新版的才能用

2.3.6 和最新的 2.4 版本应该都可以用,写这个脚本的时候用的是 2.3.6 版本
KimariYB, Postgraduate, XiaMen University
School of Electronic Science and Engineering (National Model Microelectronics College)
Research interests: theoretical and computational chemistry and machine learning

17

帖子

0

威望

374

eV
积分
391

Level 3 能力者

4#
发表于 Post on 2024-4-13 10:41:13 | 只看该作者 Only view this author
🐮的,膜拜

21

帖子

0

威望

373

eV
积分
394

Level 3 能力者

5#
发表于 Post on 2024-11-9 15:42:03 | 只看该作者 Only view this author
本帖最后由 manying 于 2024-11-9 16:13 编辑

我这使用2.6版本的Shermo软件,自己使用单个文件计算时可以正常使用,并且也可以在其文件夹中运行Shermo命令。在使用批量计算脚本却无法调用Shermo软件不知该如何解决

屏幕截图 2024-11-09 154122.jpg (234.86 KB, 下载次数 Times of downloads: 9)

屏幕截图 2024-11-09 154122.jpg

153

帖子

2

威望

1472

eV
积分
1665

Level 5 (御坂)

计算化学公社外门弟子

6#
 楼主 Author| 发表于 Post on 2024-11-9 22:22:37 | 只看该作者 Only view this author
manying 发表于 2024-11-9 15:42
我这使用2.6版本的Shermo软件,自己使用单个文件计算时可以正常使用,并且也可以在其文件夹中运行Shermo命 ...

尝试用 github 里 release 中的试试,帖子中的版本比较老了,没有更新上去。我个人平常用的是 Shermo2.6 和 release 中的可执行文件。如果是 ORCA 单点加 Gaussian 优化是没问题的。一次性处理 20 几个数据也很方便。
KimariYB, Postgraduate, XiaMen University
School of Electronic Science and Engineering (National Model Microelectronics College)
Research interests: theoretical and computational chemistry and machine learning

21

帖子

0

威望

373

eV
积分
394

Level 3 能力者

7#
发表于 Post on 2024-11-10 21:56:15 | 只看该作者 Only view this author
kimariyb 发表于 2024-11-9 22:22
尝试用 github 里 release 中的试试,帖子中的版本比较老了,没有更新上去。我个人平常用的是 Shermo2.6  ...

楼主编写的脚本没有问题,本人的电脑问题居多。后续经过自己尝试发现是easyShermo中的setting.ini文件与Shermo_2.6中的setting.ini,名字冲突,导致无法调用Shermo,自己改了easyShermo中的setting.ini文件名字,以及easyShermo.py中的相关部分就可以实现调用且速度很快。非常感谢楼主分享

202411102156081379..png (158.44 KB, 下载次数 Times of downloads: 8)

202411102156081379..png

351

帖子

0

威望

2083

eV
积分
2434

Level 5 (御坂)

8#
发表于 Post on 2024-12-16 19:53:40 | 只看该作者 Only view this author
本帖最后由 sai77 于 2024-12-16 19:59 编辑

请问一下,我这里怎么显示无法读取能量?
用附件里example里的文件可以正常运行,用我自己的文件就提示无法找到能量?单点是普通泛函算的,图3截取了结束部分的信息,有HF部分的数据。
用了1.3.0的EasyShermo和Shermo_2.6也是同样的报错信息。
多谢。


2.png (124.39 KB, 下载次数 Times of downloads: 5)

example正常运行

example正常运行

1.png (125.68 KB, 下载次数 Times of downloads: 6)

报错信息

报错信息

3.png (44.37 KB, 下载次数 Times of downloads: 6)

单点能结束部分

单点能结束部分

153

帖子

2

威望

1472

eV
积分
1665

Level 5 (御坂)

计算化学公社外门弟子

9#
 楼主 Author| 发表于 Post on 2024-12-22 17:19:00 | 只看该作者 Only view this author
sai77 发表于 2024-12-16 19:53
请问一下,我这里怎么显示无法读取能量?
用附件里example里的文件可以正常运行,用我自己的文件就提示无 ...

你是用高斯算的单点吗?可能是需要修改文件夹中的 settings.ini 中的 spFile,将其设置为 1。不过负责高斯部分的代码也有可能有bug,我目前只能保证用 Orca 的 out 文件是没问题的
KimariYB, Postgraduate, XiaMen University
School of Electronic Science and Engineering (National Model Microelectronics College)
Research interests: theoretical and computational chemistry and machine learning

351

帖子

0

威望

2083

eV
积分
2434

Level 5 (御坂)

10#
发表于 Post on 2024-12-23 19:18:38 | 只看该作者 Only view this author
kimariyb 发表于 2024-12-22 17:19
你是用高斯算的单点吗?可能是需要修改文件夹中的 settings.ini 中的 spFile,将其设置为 1。不过负责高 ...

是高斯算的单点,setting里 的spFile也正确设置了

26

帖子

0

威望

607

eV
积分
633

Level 4 (黑子)

11#
发表于 Post on 2025-1-7 23:33:09 | 只看该作者 Only view this author
manying 发表于 2024-11-10 21:56
楼主编写的脚本没有问题,本人的电脑问题居多。后续经过自己尝试发现是easyShermo中的setting.ini文件与S ...

您好,我想问一下,您具体是怎么修改呢?能否出一个教程呢?本人不太懂编程,所以想咨询以下

21

帖子

0

威望

373

eV
积分
394

Level 3 能力者

12#
发表于 Post on 2025-1-9 12:34:49 | 只看该作者 Only view this author
ncepu-stt 发表于 2025-1-7 23:33
您好,我想问一下,您具体是怎么修改呢?能否出一个教程呢?本人不太懂编程,所以想咨询以下

我这边是将easy-shermozhe这个文件夹中的setting.int文件它的名字改了,文件内容根据自己需求调整。我感觉是命名冲突了导致不运行。C:\Users\10593\Desktop\屏幕截图 2025-01-09 123315.jpg

屏幕截图 2025-01-09 123315.jpg (239.61 KB, 下载次数 Times of downloads: 5)

屏幕截图 2025-01-09 123315.jpg

1

帖子

0

威望

77

eV
积分
78

Level 2 能力者

13#
发表于 Post on 2025-2-15 14:47:17 | 只看该作者 Only view this author
同学您好,您的脚本做的非常有用。但好像不太适合我用超算算出来的log文件后转变的后缀out文件,搜索HF后第一个地方并不像example里的数值,在我的out文件里最后一个HF才是正确数值,所以想问问这种情况应该如何解决,因为exe无法正确读取sp.out文件。“三、如果没有 MP2= 而有 HF= 则读取 HF= 后面的值(对应使用普通泛函和 HF 计算的情况)。通过循环将读取到的每个输出文件能量存储在一个有顺序的容器中,方便 Shermo 之后调用。”想知道怎么样才能设置为搜索out文件中的最后一个HF然后读取数值呢?谢谢老师!

案例文件.png (102.12 KB, 下载次数 Times of downloads: 6)

案例文件.png

我的文件.png (114.2 KB, 下载次数 Times of downloads: 5)

我的文件.png

本版积分规则 Credits rule

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

GMT+8, 2025-8-13 19:02 , Processed in 0.209143 second(s), 31 queries , Gzip On.

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