计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2525|回复 Reply: 11

[辅助/分析程序] 模板化Multiwfn运行的一种途径

[复制链接 Copy URL]

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

发表于 Post on 2025-11-1 16:37:34 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 wal 于 2026-3-31 23:19 编辑

Multiwfn提供了便捷的批量运行方式,只是没法注释每一步是做什么的,修改已有序列会有些难度;同时有些处理需要根据体系手动操作,笔者觉得需要一个办法能让程序执行到一半停下来让自己接手。
这里分享一个自用的套壳程序BaneWfn,用于调用Multiwfn进行波函数分析。这是一个大项目里的子程序,不过笔者觉得它单拎出来对于上述两个问题应该也有点价值,所以就单独发个贴。

260219:在个人blog里开了介绍页banewfn | 纯白纱陵,比本贴的新,也有脚本集。
260331:写了个手册,大家有兴趣的可以看看。同样比本贴新,有些新的特性。
BaneWfn_Project_Manual_zh.pdf (701.63 KB, 下载次数 Times of downloads: 24)

评分 Rate

参与人数
Participants 16
威望 +2 eV +69 收起 理由
Reason
KanameMadoka + 2 好物!
cyh时代 + 2 好物!
djjj148 + 5
yzh + 5 233333
sobereva + 2
wangyj + 5 谢谢
hebrewsnabla + 5
〇66 + 5 牛!
huangxc82 + 5 好物!
leleyi + 5 精品内容
SharkYYX2025 + 5 好萌好萌好萌!
北大-陶豫 + 5 好物!
Uus/pMeC6H4-/キ + 5 好物!
student0618 + 5 谢谢分享
wzkchem5 + 5
Stardust0831 + 5 GJ!

查看全部评分 View all ratings

某不知名实验组从苞米地里长出来的计算选手

541

帖子

5

威望

3474

eV
积分
4115

Level 6 (一方通行)

发表于 Post on 2025-11-1 16:57:21 | 显示全部楼层 Show all
最近在写multiwfn和vesta的接口,刚刚写完调用multiwfn部分的代码,一上论坛发现有了现成工具
屏幕截图 2025-11-01 165508.jpg

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
wal + 5 没事python的更容易套工作流555

查看全部评分 View all ratings

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2025-11-2 11:51:42 | 显示全部楼层 Show all
本帖最后由 wal 于 2025-11-4 17:11 编辑

再贴几个例子(11.4更新后这些example已包含在主楼压缩包内) examples2.7z (10.95 KB, 下载次数 Times of downloads: 8)

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
SharkYYX2025 + 3 233333

查看全部评分 View all ratings

某不知名实验组从苞米地里长出来的计算选手

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2025-11-4 12:55:12 | 显示全部楼层 Show all
本帖最后由 wal 于 2025-11-4 17:12 编辑

还是小小地更新一下,这个比较重要
今天移除了command块内的空行删除与#注释移除逻辑,因为自己写的时候经常发现cat生成高斯输入文件时很头疼。。
另外添加了git bash支持,如果有高级用户希望通过git bash在Windows下执行shell脚本,可以在banewfn.rc内指定gitbash_exec,然后在希望通过bash执行的command块首行写入#!/bin/bash的shebang,脚本就会通过git bash来执行它,"C:\Program Files\Git\bin\bash.exe" -c "scripts.sh"。给个自动处理静电势的example(主楼压缩包内有对应文件):
  1. [grid]
  2. %process
  3.     electron
  4.     esp
  5. %command
  6. #!/bin/bash
  7.     mkdir -p ESP
  8.     mv density.cub ESP/density1.cub
  9.     mv totesp.cub ESP/ESP1.cub

  10.     cat << EOF > ESP/esp.bat
  11.     vmd -e esp.vmd
  12. EOF

  13.     cat << EOF2 > ESP/esp.vmd
  14.     source D:/program/VMD/scripts/ESPiso.vmd
  15.     source D:/program/VMD/scripts/ESPext.vmd
  16.     set colorlow -20
  17.     set colorhigh 20
  18.     puts "unit: kcal/mol"
  19. EOF2
  20. end

  21. [surface]
  22. %process
  23.     espext
  24. %command
  25. #!/bin/bash
  26.     mv vtx.pdb ESP/vtx1.pdb
  27.     mv mol.pdb ESP/mol1.pdb

  28.     unit=$(grep "REMARK.*Unit of B-factor field" surfanalysis.pdb | awk '{print $NF}')
  29.     if [ -z "$unit" ]; then unit="unknown"; fi
  30.     printf "%5s %6s %4s %15s\n" "index" "serial" "type" "Unit($unit)" > index.txt
  31.     index=0; while IFS= read -r line; do
  32.         if [[ $line =~ ^HETATM ]]; then
  33.             serial=$(echo "$line" | awk '{print $2}')      # 第2列:原子编号
  34.             type=$(echo "$line" | awk '{print $3}')        # 第3列:原子类型
  35.             value=$(echo "$line" | cut -c61-66 | awk '{print $1}')  # 第11列:B-factor值(固定位置61-66)
  36.             printf "%5d %6d %4s %8s\n" "$index" "$serial" "$type" "$value" >> index.txt
  37.             ((index++))
  38.         fi
  39.     done < surfanalysis.pdb

  40.     mv index.txt *.out surfanalysis.pdb ESP
  41. end
复制代码

202511041246362814..png
双击ESP.bw并提供波函数文件,运行完毕后,ESP的所有文件均已产生在当前目录下的ESP文件夹内(不过win下grep这一步有点点慢):
202511041248356888..png
ESP文件夹:
202511041256472472..png
index.txt里记录了刚刚用bash脚本提取的静电势极值点index:
202511041251588467..png
注意,这里没有直接生成包含实际命令的.vmd文件,而是引用了我本地存对应文件的路径,如果你也想一键可视化的话要改一下bw文件里的这两个东西的路径
  1. source D:/program/VMD/scripts/ESPiso.vmd
  2. source D:/program/VMD/scripts/ESPext.vmd
复制代码

202511041254271330..png



某不知名实验组从苞米地里长出来的计算选手

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2025-11-6 19:26:33 | 显示全部楼层 Show all
加个IFCT的例子。看见有人想做,顺手写了一下,也往这里发一份。

IFCT.7z

1.06 MB, 下载次数 Times of downloads: 1

某不知名实验组从苞米地里长出来的计算选手

1160

帖子

0

威望

4773

eV
积分
5933

Level 6 (一方通行)

发表于 Post on 2025-11-6 21:13:33 | 显示全部楼层 Show all
wal 发表于 2025-11-2 11:51
再贴几个例子(11.4更新后这些example已包含在主楼压缩包内) 各位如果用上了欢迎贴出来自己的小脚本呀,虽然 ...

钟成老师的脚本在 5 年前已经有类似的功能了
http://bbs.keinsci.com/thread-18150-1-1.html

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2025-11-6 21:17:20 | 显示全部楼层 Show all
本帖最后由 wal 于 2025-11-6 21:18 编辑
乐平 发表于 2025-11-6 21:13
钟成老师的脚本在 5 年前已经有类似的功能了
http://bbs.keinsci.com/thread-18150-1-1.html

嗯嗯 我个人用的输入里都用的是vcube命名风格 包括hole那个example也是纯方便vcube的命名这里只是贴个无依赖的懒狗模式
某不知名实验组从苞米地里长出来的计算选手

13

帖子

0

威望

80

eV
积分
93

Level 2 能力者

发表于 Post on 2026-6-20 19:20:17 | 显示全部楼层 Show all
本帖最后由 zllin 于 2026-6-20 19:38 编辑

您好,鸩羽老师。我想请教一个问题,我下载您https://bane-dysta.top/_file/banewfn/bwc/脚本集的ESP.bwc后运行出现如下情况,我查了一下这是 Fortran 程序的经典报错,意思是输入流已经全部读完了,但程序还在等待新的指令输入流的,我尝试修改菜单层级、操作步数和匹配Multiwfn 实际需求,但没有解决问题。在您的ESP文件中我只进行了banewfn位置和输入文件类型的更改,作为初学者,非常感谢您的指导和帮助。
e0463d46-1329-4ef3-9b02-aec62ce678d4.png
ScreenShot_2026-06-20_190250_813.png

ESP.bwc

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

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2026-6-20 19:46:41 | 显示全部楼层 Show all
本帖最后由 wal 于 2026-6-20 19:47 编辑
zllin 发表于 2026-6-20 19:20
您好,鸩羽老师。我想请教一个问题,我下载您https://bane-dysta.top/_file/banewfn/bwc/脚本集的ESP.bwc后 ...

你的Multiwfn版本是最新的吗?如果是最新的,把你用的fch文件传一个上来吧,我复现一下试试。
这个报错就是Multiwfn处理的时候炸了引起的,更多的信息不太好判断,还是要看实际断在哪里。
某不知名实验组从苞米地里长出来的计算选手

13

帖子

0

威望

80

eV
积分
93

Level 2 能力者

发表于 Post on 2026-6-20 20:01:59 | 显示全部楼层 Show all
wal 发表于 2026-6-20 19:46
你的Multiwfn版本是最新的吗?如果是最新的,把你用的fch文件传一个上来吧,我复现一下试试。
这个报错 ...

是的,2026.4.10的最新版本;文件大小超过9.7MB,我使用夸克网盘链接给您,如有不便之处请您指出。我用夸克网盘给你分享了「新建文件夹-260620-200014595」,点击链接或复制整段内容,打开「夸克网盘APP」即可获取。
/~4a6a3Z98f3~:/
链接:https://pan.quark.cn/s/cedbc35e8239

880

帖子

15

威望

4006

eV
积分
5186

Level 6 (一方通行)

鸩羽

 楼主 Author| 发表于 Post on 2026-6-20 22:29:17 | 显示全部楼层 Show all
本帖最后由 wal 于 2026-6-20 22:31 编辑
zllin 发表于 2026-6-20 20:01
是的,2026.4.10的最新版本;文件大小超过9.7MB,我使用夸克网盘链接给您,如有不便之处请您指出。我用夸 ...

202606202218249706..png
我这边一切正常,banewfn正确地导出了cubs并打开了可视化。我也用最新的Multiwfn照着banewfn生成的序列手敲了一遍,确认Multiwfn没有改变菜单结构,正确生成了静电势相关cubs。这里我觉得最可能的原因是你的机子内存不够导致在计算密度矩阵/格点等地方内存溢出崩溃。两个建议:
1.换一个更简单的分子测试,比如水,氢气之类的,看看还会不会崩溃。如果这样也崩溃,我觉得可能你的Multiwfn存在安装问题。如果这样没问题,看下一步。
2.在bwc文件顶部增加dryrun=on再双击运行,本次不会执行波函数分析,会留下Multiwfn的命令序列。然后你对着生成的grid_开头的那个txt文件手动操作Multiwfn,看看最终是在哪一步崩溃的。如果手动操作没有问题但banewfn操作会崩溃,可能是banewfn在某些机器上存在兼容问题。如果你自己Multiwfn计算也崩溃,那就大概率是你机子内存问题/Multiwfn安装问题,可以开一贴问问社长。


某不知名实验组从苞米地里长出来的计算选手

13

帖子

0

威望

80

eV
积分
93

Level 2 能力者

发表于 Post on 2026-6-20 23:27:58 | 显示全部楼层 Show all
wal 发表于 2026-6-20 22:29
我这边一切正常,banewfn正确地导出了cubs并打开了可视化。我也用最新的Multiwfn照着banewfn生成的序列 ...

感谢老师解答和帮助!按照您的方法先换用H2分子手动掐敲了一次后,发现了问题所在。是cub文件的命名不符,由于我在Multiwfn中setting的iaddprefix 设置了加前缀,所有totesp.cub变成了我的输入文件名字_totesp.cub导致卡在这一步找不到文件,后面我调整取消了前缀可以正常运行,只是需要较长时间等待Multiwfn计算完成!非常感谢您!

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
wal + 1 能帮上忙就好

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2026-8-7 18:36 , Processed in 0.238548 second(s), 26 queries , Gzip On.

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