计算化学公社

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

[Multiwfn资源与经验] 调用Multiwfn批量产生cube的脚本MCubeGen 1.0

[复制链接 Copy URL]

908

帖子

37

威望

5435

eV
积分
7083

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 ggdh 于 2020-8-7 12:11 编辑

O. 脚本简介与更新
MCubenGen脚本是python编写,目的就是调用Multiwfn批量产生cub文件。方面后面喂给vcube做渲染。(参见使用vmd批量渲染cube文件的tcl脚本vcube
其实有点linux基础的同学自己临时编写个shell脚本批量调用Multiwfn产生cub文件也挺方便。
这里主要实现用一个命令集成所有的产生cub的方法,并且顺便产生vcube识别的文件名。
Multiwfn产生的cube种类太多,脚本目前没有全部覆盖,但会持续更新,更新的内容放在这里。
大家有任何建议请及时反馈,比如你想用Multiwfn产生某种cube,发现本脚本中没有,记得回帖,我会优先更新


一、环境要求
1.可以在Linux或者windows下运行
2.需要PATH路径中有Multiwfn程序
3.需要有python3的运行环境,注意:不兼容python2版本,推荐anaconda(在这里下载:https://www.anaconda.com/products/individual),确保python命令在PATH变量中。
4.非必须,强烈推荐:把MCubeGen.py所在位置加入PATH变量中(LINUX系统或者WSL,纯windows系统无此便利),提供便利:可以在任意位置使用MCubeGen.py命令
5.非必需,推荐: g09  或者 g16在PATH变量中,提供便利:可以自动formchk,Multiwfn可以调用cubegen使得算静电势速度有一定提升。
6. 不知道怎么设PATH变量的看这个:PATH 环境变量

二、运行方法
LINUX环境:如果已经把本脚本加入PATH中可以直接在有fchk的文件夹下运行(上面第四步已设好)
  1. MCubeGen.py -选项 参数 *.fchk
复制代码
windows环境:把脚本拷贝到含有fchk文件的目录,shift+右键在弹出菜单中选择"在此处打开PowerShell窗口",然后输入命令
  1. python MCubeGen.py -选项 参数 *.fchk
复制代码
运行完成后当前目录下会产生一个MCUBEG文件夹,里面有所有的cube文件,命名方式是文件名_cube类型.cub
下面举例都以LINUX下的方式举例。

三、应用示例
1. 产生分子轨道cube:
  1. MCubeGen.py -n 20 -m 10GB -o H1-L1,10  *.fchk
复制代码
说明:
  • 要求Multiwfn使用20核并行(-n 20)
  • 使用10GB内存(-m 10GB)
  • 对当前目录下所有的fchk文件处理(*.fchk)
  • 产生HOMO-1,HOMO,LUMO,LUMO+1以及10号轨道(-o H1-L1,10)
  • 如果体系是开壳体系,那么会自动产生alpha和beta两套轨道的cube

2. 产生各种常用cube:
  1. MCubeGen.py  -c den,esp,esd,elf,lol,rdg,lmd  -g 2 *.fchk
复制代码
说明:
  • 要求Multiwfn产生各种类型的普通cub (-c 各种cube类型名称用逗号隔开)
  • 并且将格点质量设为2(-g 2格点质量定义同Multiwfn)
  • 其中各种cub名称含义如下:den:电子密度,esp:静电势,esd:自旋密度,elf:电子定域化函数,lol:英雄联盟(elf和lol的含义见电子定域性的图形分析),rdg:约化密度梯度,lmd:电子密度Hessian矩阵的第二大的本征值λ_2和电子密度的乘积(rdg和lmd的含义见使用Multiwfn图形化研究弱相互作用)。

3. 产生激发态的各种cube:
  1. MCubeGen.py -e s1,t1-3:ele,hole,td,cdd -g "4;0.2" *.fchk
复制代码
说明:
  • 产生激发态的cube需要计算激发态的log的文件,并且log文件名和fchk文件名相同
  • -e选项的格式为-e 设定激发态:设定cube类型,上面这个命令产生的是第一单重态,第一到第三三重态(s1,t1-3)的空穴hole,电子ele,跃迁密度td,电荷密度差cdd的cube文件,因为这个计算任务用了td(50-50),所以log文件中同时包含了单,三重态信息,如果只算了单重态,那么用选项-e 1,2:hole,ele可以直接产生第一和第二激发态的空穴电子cube。
  • -g "4;0.2" 选项将格点间距设为0.2。

4. 产生激发态电子密度下的各种cube:
  1. MCubeGen.py -d CI -c den,esp *.fchk
复制代码
说明:产生激发态下的电子密度和静电势cub。这里的-d选项指定了使用激发态下的电子密度。

5.产生nto轨道:

  1. MCubeGen.py -e 1-3:nto  *.fchk
  2. cd MCUBEG
  3. MCubeGen.py -o h,l  *.fchk
复制代码
产生NTO需要两步,第一步产生含有nto的fchk文件,第二步产生nto的cube文件。nto和空穴电子cube比没有任何优势,强烈不推荐。

四、选项说明和默认值
--help 查看所有选项的详细说明和使用示例(见下图)
-m 设定内存,默认值是系统内存的80%
-n 设定Multiwfn使用的核数,默认值是全部的物理核
-d 设定密度,默认是scf密度
-g 设定格点质量,默认是2
-o 设定轨道cube,无默认
-e 设定激发态cube,无默认
-c 设定普通cube,无默认



五、出错的解决方法
1.确保gaussian任务正常结束。
2.当前目录下会产生Multiwfn_com,Multiwfn_out,Multiwfn_err,分别是Multiwfn的输入,输出和报错文件。分别打开分析。
3.打开Multiwfn_com,照着里面的命令手动运行Multiwfn,看看具体那一步出错。
4.回帖或者联系我。

test.tar.gz 中是几个小的示例文件。可以运行本贴中的所有例子,手上没有现成fchk和log的同学可以下载尝试一下。

MCubeGen.py

25.39 KB, 下载次数 Times of downloads: 311

test.tar.gz

634.49 KB, 下载次数 Times of downloads: 150

评分 Rate

参与人数
Participants 15
威望 +1 eV +64 收起 理由
Reason
酥大墙 + 3 谢谢分享
greatqi + 5 多谢
ChunLinX + 5 GJ!
lonemen + 5 太赞啦!
panernie + 5 我很赞同
YuhangJ + 5 赞!
philartist + 5 赞!
winnerwill + 5 GJ!
冰释之川 + 5 好物!
zsu007 + 5 好物!
mars936 + 3 赞!
朙天儿 + 5 赞!
sobereva + 1 精品内容
ldatea + 3 好物!
thanhtam + 5 GJ!

查看全部评分 View all ratings

24

帖子

0

威望

285

eV
积分
309

Level 3 能力者

23#
发表于 Post on 2025-1-21 16:47:31 | 只看该作者 Only view this author
感谢老师的脚本,处理fchk非常方便。后续我还用它处理T激发态的molden,出了点问题。扔GPT里一顿锤,堆出了能够处理molden文件的脚本。不确定对闭壳层结构是否好用,开壳层我试着是没有问题的。

MCubeGen-molden.py

27.64 KB, 下载次数 Times of downloads: 0

68

帖子

0

威望

4418

eV
积分
4486

Level 6 (一方通行)

22#
发表于 Post on 2025-1-3 16:52:28 | 只看该作者 Only view this author
本帖最后由 胡说 于 2025-1-3 16:54 编辑

钟老师,对于open shell体系,当fchk里Number of basis functionsNumber of independent functions数目不一致时,如果要求产生beta的轨道,会出现轨道序号问题。
MCube脚本是通过Number of independent functions来判断轨道数目,这是fchk真实的轨道数,如下图:

但Multiwfn打开fchk显示的轨道数目与Number of basis functions数目一致,如下图:

因此,当两者不一致时,MCube得到的beta_homo的index不对应Multiwfn里的beta_homo轨道,所以最终得到的轨道也不对。
解决方法:MCube脚本里也通过Number of basis functions得到轨道数目。

1

帖子

0

威望

67

eV
积分
68

Level 2 能力者

21#
发表于 Post on 2024-12-13 21:35:58 | 只看该作者 Only view this author
老师你好,请问出现这样的问题如何解决?
PS E:\guass_files\test> python MCubeGen.py -c esp  -g 2 *.fchk
4.0 GB memory avaialbe
10 physical cores detected
Use 10 cores and ompstacksize is set to 0.3 GB
Multiwfn found in E:\Multiwfn_3.8_dev_bin_Win64
Warning!!! Gaussian not d in PATH
settings.ini is modified and copy to E:\guass_files\test
Set Multiwfnpath to E:\guass_files\test

202412132135021552..png (28.09 KB, 下载次数 Times of downloads: 33)

202412132135021552..png

68

帖子

0

威望

4418

eV
积分
4486

Level 6 (一方通行)

20#
发表于 Post on 2022-2-10 13:48:10 | 只看该作者 Only view this author
本帖最后由 胡说 于 2022-2-10 13:50 编辑

钟老师,我发现这个脚本在产生空穴-电子等激发态cube时,会做多次完全一样的空穴-电子分析时,比如我需要S1的hole和ele对应的cube,它需要分别做两次空穴-电子分析来单独得到hole和ele的cube,实际上大部分激发态的cube,比如hole/electron/hole-electron overlap等,一个激发态只需要做1次空穴-电子分析就可以直接导出了,这样可以节省大量时间。另外有时候还需要空穴-电子分析产生的一些激发态指数,我觉得可以顺便就把Multiwfn的输出信息输出到一个文本文件(一个激发态对应一个,目前是只有最后一次运行Multiwfn会保留下来),方便不时之需,否则需要重新手动来做一次得到这些。

41

帖子

0

威望

474

eV
积分
515

Level 4 (黑子)

19#
发表于 Post on 2021-8-24 10:20:07 | 只看该作者 Only view this author
钟老师,我看到只能处理fchk,有时间请把wfn也加进去。

908

帖子

37

威望

5435

eV
积分
7083

Level 6 (一方通行)

18#
 楼主 Author| 发表于 Post on 2021-8-2 17:32:20 | 只看该作者 Only view this author
zhangfuqiang 发表于 2021-8-2 16:06
钟老师,没看到支持wfn。啥时加呀?

好的  我看看哈

41

帖子

0

威望

474

eV
积分
515

Level 4 (黑子)

17#
发表于 Post on 2021-8-2 16:06:23 | 只看该作者 Only view this author
钟老师,没看到支持wfn。啥时加呀?

41

帖子

0

威望

474

eV
积分
515

Level 4 (黑子)

16#
发表于 Post on 2021-7-30 17:25:12 | 只看该作者 Only view this author
感谢作者,想用c++直接调用multiwfn,正为这个事情犯愁,忽然找到了这个脚本。呵呵,直接调用您这个,太感谢了!!!

255

帖子

0

威望

2370

eV
积分
2625

Level 5 (御坂)

15#
发表于 Post on 2021-4-17 11:53:05 | 只看该作者 Only view this author
ggdh 发表于 2021-4-17 11:38
额 这是程序的一个bug,不要在Multiwfn的目录下运行此脚本。

哦哦好的,谢谢钟老师!换个目录就可以了~感谢!!

908

帖子

37

威望

5435

eV
积分
7083

Level 6 (一方通行)

14#
 楼主 Author| 发表于 Post on 2021-4-17 11:38:01 | 只看该作者 Only view this author
万卷书万里路 发表于 2021-4-16 17:31
老师,把Multiwfn和脚本都安在集群上了,但那是运行脚本出错,
能帮忙看下这是什么原因么?谢谢!

额 这是程序的一个bug,不要在Multiwfn的目录下运行此脚本。

255

帖子

0

威望

2370

eV
积分
2625

Level 5 (御坂)

13#
发表于 Post on 2021-4-16 17:31:35 | 只看该作者 Only view this author
老师,把Multiwfn和脚本都安在集群上了,但那是运行脚本出错,
能帮忙看下这是什么原因么?谢谢!

[YS_zhang@041 Multiwfn_3.8_dev_bin_Linux]$ mcubegen.py -n 12 -m 10GB -o H1-L1,10  *.fchk
32.0 GB memory avaialbe
12 physical cores detected
Use 12 cores and ompstacksize is set to 0.7 GB
Multiwfn found in /home-ys/users/YS_zhangzw/software/Multiwfn_3.8_dev_bin_Linux
Gaussian found in /home-ys/users/YS_zhangzw/software/g16
Traceback (most recent call last):
  File "/home-ys/users/YS_zhangzw/software/MCubeGen/mcubegen.py", line 639, in <module>
    pm = prepareM(np=args.np, mem=args.mem)
  File "/home-ys/users/YS_zhangzw/software/MCubeGen/mcubegen.py", line 298, in __init__
    self.modify_Mwfn_ini()
  File "/home-ys/users/YS_zhangzw/software/MCubeGen/mcubegen.py", line 396, in modify_Mwfn_ini
    shutil.copyfile(inifile, 'settings.ini')
  File "/home-yw/soft/packagedir/anaconda3/install/lib/python3.6/shutil.py", line 104, in copyfile
    raise SameFileError("{!r} and {!r} are the same file".format(src, dst))
shutil.SameFileError: '/home-ys/users/YS_zhangzw/software/Multiwfn_3.8_dev_bin_Linux/settings.ini' and 'settings.ini' are the same file

82

帖子

4

威望

2511

eV
积分
2673

Level 5 (御坂)

12#
发表于 Post on 2020-8-19 21:21:22 | 只看该作者 Only view this author
xxzj 发表于 2020-8-18 23:45
老师,您好,我第一次接触python这个程序,按照上述进行设置,运行后出现如下所示:
1.2 GB memory avaial ...

估计你把脚本里面出错的地方对应的os.path.exists改成os.path.isfile就好了。
应该跟我之前发现的情形类似。

353

帖子

0

威望

905

eV
积分
1258

Level 4 (黑子)

11#
发表于 Post on 2020-8-19 16:46:27 | 只看该作者 Only view this author
本帖最后由 xxzj 于 2020-8-19 17:29 编辑
ggdh 发表于 2020-8-19 16:05
你的系统里面是不是装的g03  或者是windows版本的?,你为啥把Multiwfn和formchk放到Anaconda目录下了?

嗯呢,是的,因为刚接触,就乱放位置了然后我系统是windows。现在还么有解决问题,辛苦老师了

908

帖子

37

威望

5435

eV
积分
7083

Level 6 (一方通行)

10#
 楼主 Author| 发表于 Post on 2020-8-19 16:05:02 | 只看该作者 Only view this author
本帖最后由 ggdh 于 2020-8-19 16:08 编辑
xxzj 发表于 2020-8-18 23:45
老师,您好,我第一次接触python这个程序,按照上述进行设置,运行后出现如下所示:
1.2 GB memory avaial ...

你的系统里面是不是装的g03  或者是windows版本的?,你为啥把Multiwfn和formchk放到Anaconda目录下了?

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

GMT+8, 2025-8-13 21:05 , Processed in 0.226136 second(s), 31 queries , Gzip On.

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