计算化学公社

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

[Multiwfn资源与经验] pyforNICS:基于python和multiwfn的NICS(1)ZZ建模和计算工具

[复制链接 Copy URL]

29

帖子

0

威望

905

eV
积分
934

Level 4 (黑子)

本帖最后由 yaonaite 于 2026-7-13 01:18 编辑

置顶:使用这一系列脚本时强烈建议新建工作文件夹,且其中不要放重要的东西的唯一副本。

作为专业有机化学、实验为主的研究生,总是面对一些环数很多的稠环芳烃做计算,这就导致了NICS(1)ZZ的建模非常繁琐,总是耗费很多时间。需要一种方法来方便地进行这种机械化的建模和数据处理。考虑到同门自行建模的需求,又无法让所有同门都部署linux,就使用python结合cmd命令行和Multiwfn写了一个工具。其中最难的一个脚本,也就是根据分子结构找到环在哪里的脚本最初是由 @Infaltion 编写的。目前@Infaltion正在测试适合在linux上运行的具有相同功能的脚本(python+bash),后续计划在他的微信公众号上发布,名为 齐某的计算化学手册(我目前是这个公众号的编辑),期待大家的关注、讨论和批评。


方法主要参考:利用Multiwfn计算倾斜、扭曲环的NICS_ZZ - 思想家公社的门口:量子化学·分子模拟·二次元
部分过程思路来自:使用Multiwfn+VMD快速绘制高质量分子轨道等值面图(含视频) - 思想家公社的门口:量子化学·分子模拟·二次元
使用的Python 开发环境:PyCharm 2025.1.2。实际上多数代码是Deepseek生成的。

由于专业原因实验占时间比较长,占精力比较多,目前这版只是自用脚本,需要自行修改代码来满足不同的文件夹需求,也没有写大小写匹配,需要严格按照下文提到的尾缀和大小写命名文件,可以说非常的屎山。非常期待各位坛友的建议,但抱歉只能说之后有时间的话尽量优化。

建模:见getNICSgjf文件夹。
1.        建立一个纯英文路径的文件夹,在里面放入xx.pdb、未写入虚原子的xxNICS.gjf(xx要一致,NICS要大写)。可以有很多组,但要一一对应。
2.        把所有脚本都放到同一个目录下,运行getNICSgjf.py,成功得到需要的xxNICS.gjf,注意不要运行多次,否则会写入很多组虚原子。

a.        本系列脚本设定了D:\forrings为工作文件夹,D:\Multiwfn_3.8_dev_bin_Win64为Multiwfn所在文件夹。由于是自用脚本,需要自行修改代码来满足不同的文件夹需求。
b.        如果不想删掉过程文件,注释掉getNICSgjf.py运行delNICStem.py的部分即可。delNICStem.py会删除D:\forrings文件夹下除了pdb和gjf以外的其他所有文件,以及D:\Multiwfn_3.8_dev_bin_Win64文件夹下的所有的xxNICS.bat文件,所以强烈建议新建工作文件夹,且其中不要放重要的东西的唯一副本。
c.        getNICSgjf.py中有各个脚本执行的顺序,如果需要debug可以参考。
d.        运行getNICSgjf.py需要首先建立能够下载软件包的python环境(如PyCharm),然后运行getNICSgjf.py(这样会提示下载依赖的包)。如果一定要在命令行中使用,请在cmd中使用,不要直接在windows默认的powershell命令行中使用,或者至少在打开powershell之后输入cmd回车,然后再使用。

得到高斯输出后计算NICS(1)ZZ:见calcNICS1ZZ文件夹。
1.        建立一个纯英文路径的文件夹,在里面放入xxnics.out(nics要小写)、在建模时得到的xxringsringnumbers.txt(xx要一致,此处的尾缀是建模时自动产生的,无需修改)。可以有很多组,但要一一对应。
2.        把所有脚本都放到同一个目录下,运行calcNICS1ZZ.py,成功得到后缀名为.result2的结果文件。用记事本打开即可。
3.        结果文件第一行为组成该环的原子编号,随后两行为NICS(1)ZZ和NICS(-1)ZZ,再下一行为平均值。如此四行为一组。

a.        本系列脚本设定了D:\forrings为工作文件夹,D:\Multiwfn_3.8_dev_bin_Win64为Multiwfn所在文件夹。由于是自用脚本,需要自行修改代码来满足不同的文件夹需求。
b.        如果不想删掉过程文件,注释掉calcNICS1ZZ.py运行delNICScalctem.py的部分即可。delNICScalctem.py删除的是D:\Multiwfn_3.8_dev_bin_Win64中的*nicscalc.bat和D:\forrings中的*nicscalc.result、*nicscalc.ntxt、*nicscalc.result1、*nicscalc.txt、*nicsresult.txt、*ringnumbers.txt,这个删除脚本相对安全。
c.        calcNICS1ZZ.py中有各个脚本执行的顺序,如果需要debug可以参考。
d.        运行calcNICS1ZZ.py需要首先建立能够下载软件包的python环境(如PyCharm),然后运行calcNICS1ZZ.py(这样会提示下载依赖的包)。如果一定要在命令行中使用,请在cmd中使用,不要直接在windows默认的powershell命令行中使用,或者至少在打开powershell之后输入cmd回车,然后再使用。

20260713 虽然修bug修了一天,但vibe coding还是很爽
更新了v3版本(pyforNICSv3.zip)和基于v3加入了图形界面的版本NICShelper.py(v2版本实在是太糟了,我前段时间删了)
v3版本分别将前处理和后处理精简到了一个脚本中,并能够很方便地设定工作文件夹、Multiwfn文件夹和临时文件处理方法。
临时文件处理方法已改善,现在不会把一大堆无关文件删掉了。但仍然建议工作文件夹和Multiwfn所在文件夹中不要放重要的东西的唯一副本。
现在文件名中nics的大小写无关紧要了,相关部分已经修改。
GUI版本进一步用一个脚本实现了两个工作流。

这两个版本只用过下面提供的testnics.out测试,结果与v1版本相同,但没有确认是不是只有这个文件一样(确实是做实验没时间搞这个,每天都有一种毕不了业的挫败感)。
这并不是一个只有NICS(1)zz位置的计算结果,实际上是写出这系列脚本之前做的,所以也建模了NICS(0)zz的位置。所以本文脚本对于这个输出文件输出的数值没有实际意义,仅测试用。

由于我只学会了pyinstaller打包,exe巨大,就不往论坛上传了。实在需要可前往github仓库获取。那个巨大的压缩包NICShelper.zip就是。
GitHub - yaonaite/pyforNICS: 基于python和multiwfn的NICS(1)ZZ建模和计算工具,a tool to calc NICS(1)zz with multiwfn · GitHub

pyforNICSv1.zip (22.6 KB, 下载次数 Times of downloads: 0) pyforNICSv3.zip (11.32 KB, 下载次数 Times of downloads: 0)
NICShelper.py (33.19 KB, 下载次数 Times of downloads: 0) testnics.out (163.33 KB, 下载次数 Times of downloads: 0)





评分 Rate

参与人数
Participants 2
eV +13 收起 理由
Reason
Infaltion + 5 好物!
sobereva + 8

查看全部评分 View all ratings

29

帖子

0

威望

905

eV
积分
934

Level 4 (黑子)

2#
 楼主 Author| 发表于 Post on 2025-9-29 20:21:44 | 只看该作者 Only view this author
本帖最后由 yaonaite 于 2026-7-13 00:54 编辑

好像每次修改原贴会自动重新审核,我在这里贴一下更新(我了解在没人回复的情况下应该在原贴上修改,如果这样不可以,我一定及时改正):
原本的calcNICS1ZZ.py居然少运行了一个脚本NICScalctxt.py,导致不能成功达成预定目标。如果还需要使用,在calcNICS1ZZ.py中加入NICScalctxt.py作为第二个运行的脚本,后续脚本顺延运行即可。即把相关的部分改为:
scripts = [
    "nicsclass.py",
    "NICScalctxt.py",
    "NICScalcbat.py",
    "multiwfncalcNICS.py",
    "NICSget.py",
    "NICSresult.py",
    "NICSfinalresult.py",
    "delNICScalctem.py"
]


20260202发现NICSfinalresult.py也有bug,后附修正。另外,使用的pdb应当是从gjf转换来的pdb,否则由于原结构优化后发生了坐标改变,不能在预期位置产生Bq

20260713更新了v3版本,顺便把这条回复后面贴的那俩并到主贴的压缩包里面了。现在主贴的pyforNICSv1压缩包就是修改后的v1版本


本版积分规则 Credits rule

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

GMT+8, 2026-7-13 09:12 , Processed in 0.252135 second(s), 26 queries , Gzip On.

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