计算化学公社

标题: Windows下Multiwfn批处理生成填色图的脚本 [打印本页]

作者
Author:
exity    时间: 2018-8-3 08:05
标题: Windows下Multiwfn批处理生成填色图的脚本
本帖最后由 exity 于 2018-8-3 09:36 编辑

今天社长刚刚教了一次怎么用bat脚本实现multiwfn快速输出填色图的方法,非常方便,而且不会出错,掌握后可以提升N个数量级的效率,分享给大家,共同进步。
以批量生成LOL填色图为例,过程如下:


注意1:以下提到的所有文件都必须放在multiwfn文件夹中。
意2:可以修改下文中的LOL.txt文件来实现其他图形批量输出的功能。


1 下载最新版的Multiwfn,http://sobereva.com/multiwfn/,目前最新稳定版是3.5,测试版为3.6(dev),建议总是下载最新版本。

2 解压缩,把计算好的"*.wfn"文件放在Multiwfn文件夹中,wfn的生成参考“详谈Multiwfn支持的输入文件类型、产生方法以及相互转换”一文。

3 在解压好的Multiwfn文件夹中找到"settings.ini"文件,用记事本,notepad++等文本编辑器打开,搜索"silent"关键词,定位到"isilent= 0"一行,把0改为1,保存退出。(这一步是为了开启Multiwfn的silent模式,在此模式中,不会有窗口弹出导致运行中断)

4 在Multiwfn文件夹内新建一个LOL.txt文件,此文件是Multiwfn读取输入命令的顺序,即和你手工输入的命令的顺序一致,此文件可以命名为任何你想要的名字,保证半角,没有奇怪的字符即可,LOL.txt内容如下:(紫色字体,不包括===)
===
4
10
1
1000,1000
1
1.2
2
3
5
0,0
3
0.5
11
5
12
1,0
8
1
0
===

5 在Multiwfn文件夹内新建批处理LOL_batch.bat文件,内容如下:(不包括上下的===号)
===
for /f %%i in ('dir *.wfn /b') do (
Multiwfn %%i < LOL.txt >
rename dislin.png %%~ni.png
)
===

DONE!

最终效果是,如果你有一系列命名为abc.wfn, bca.wfn, cba.wfn的文件放在multiwfn文件夹下,双击LOL_batch.bat后就能得到abc.png, bca.png, cba.png的LOL填色图,非常方便。

PS:
如果为了清爽,希望把"*.wfn"文件全部集中在一个文件夹里,例如 “c:\LOL”,则需要对LOL_batch.bat进行改写,内容如下

===
for /f %%i in ('dir c:\LOL\*.wfn /b') do (
Multiwfn c:\LOL\%%i < LOL.txt >
move dislin.png c:\LOL\%%~ni.png
)
===

这样就可以把图片输出到“c:\LOL”里面了,此bat文件还是要放在Multiwfn文件夹里的。

这次真的DONE!

还在研究怎么把bat也放到其他文件夹里的方法,貌似需要写入multiwfn的环境变量之类的,还不会弄。
反正下面这样写是不行的,期待大神出现

===
for /f %%i in ('dir c:\LOL\*.wfn /b') do (
c:\multiwfn所在的路径\Multiwfn c:\LOL\%%i < LOL.txt >
move dislin.png c:\LOL\%%~ni.png
)
===



李博士@liyuanhe211 提供了最后一个问题的解决方案
===
cd c:\multiwfn所在的路径
for /f %%i in ('dir c:\LOL\*.wfn /b') do (
Multiwfn c:\LOL\%%i < LOL.txt >
move dislin.png c:\LOL\%%~ni.png
)
===
这样的bat文件就能和wfn一起放在另外的文件夹里了(貌似这个bat文件放在任何地方都行了。)!Problem solved!



DONE!













作者
Author:
liyuanhe211    时间: 2018-8-3 08:45
最后一个在脚本最上面写“cd c:\multiwfn所在的路径”就可以了
作者
Author:
exity    时间: 2018-8-3 08:54
liyuanhe211 发表于 2018-8-3 08:45
最后一个在脚本最上面写“cd c:\multiwfn所在的路径”就可以了

厉害,problem solved!
作者
Author:
sobereva    时间: 2018-8-3 09:08
刚在主页更新了Multiwfn 3.6(dev)版手册,把之前介绍silent方式和批处理运行的章节5.2、5.3做了扩充,并且添加了在Linux下批处理运行对应的脚本,在linux下运行的人可以看看。

掌握批处理方式运行是极其重要的。之前也有很多Multiwfn的博文利用了批处理方式运行Multiwfn,例如以下文章,有兴趣者可以看看
使用Multiwfn做自然跃迁轨道(NTO)分析
http://sobereva.com/377
制作动画分析电子结构特征
http://sobereva.com/86
通过键级曲线和ELF/LOL/RDG等值面动画研究化学反应过程
http://sobereva.com/200

PS:凡是用过批处理执行Multiwfn的人,就肯定不会说:“要是做成全图形界面多好”这种话。

对DOS下批处理文件编写感兴趣者可以看看
从高斯windows下的批量执行谈dos批处理文件
http://sobereva.com/6

建议总是下载最新版本(目前是3.6(dev)),对3.5做了极大的改进,而且也修复了不少bug(见主页update history的说明)
作者
Author:
exity    时间: 2018-8-3 09:19
sobereva 发表于 2018-8-3 09:08
刚在主页更新了Multiwfn 3.6(dev)版手册,把之前介绍silent方式和批处理运行的章节5.2、5.3做了扩充,并且 ...

已做修改!
1 下载最新版的multiwfn,http://sobereva.com/multiwfn/,目前最新稳定版是3.5,测试版为3.6(dev),建议总是下载最新版本

批处理实在是方便,但我脑补了一下,貌似函数的和、差、积等操作似乎不太容易用批处理来实现,社长有没有现成的脚本例子?:D
例如fukui function里的 f+,f0,f-之间的操作。

作者
Author:
朙天儿    时间: 2018-8-3 20:56
Linux下和、差、积可通过echobc命令实现批处理。
DOS下等待各路大神指点。
作者
Author:
sobereva    时间: 2018-8-4 02:43
exity 发表于 2018-8-3 09:19
已做修改!
1 下载最新版的multiwfn,http://sobereva.com/multiwfn/,目前最新稳定版是3.5,测试版为3. ...


比如计算双描述符,等价于计算f+和f-的差值,稍微推导一下就知道应该怎么利用Multiwfn的自定义操作(custom operation)进行相互运算来得到,看Multiwfn手册4.5.4节的例子

另外,对于没法一次通过Multiwfn里自定义操作实现的函数间的运算,可以算完一个函数格点数据后就导出一次cub文件,利用Multiwfn主功能13里的格点文件相互运算功能来处理,手册4.13.2节有例子。

Multiwfn的设计极度灵活,对实空间函数的分析没有做不到的。

作者
Author:
hokking    时间: 2018-8-20 10:37
本帖最后由 hokking 于 2018-8-20 13:28 编辑

已解决,把“>”改成“&”可用

--------------------------------------------------

我用您给的例子试着做了一下,发现可以生成一批dislin.png文件,但重命名操作或者文件移动操作无法进行,同时出现“forrtl: severe (24): end-of-file during read, unit -4, file CONIN$”错误(按照multiwfn手册中所讲似乎可以忽略?),不知如何解决?

作者
Author:
Aridea    时间: 2021-7-13 21:00
hokking 发表于 2018-8-20 10:37
**** 作者被禁止或删除 内容自动屏蔽 ****

才看到哈哈,折腾半天了,这个>号一定要改了或者删掉
作者
Author:
Aridea    时间: 2021-7-13 21:00
多谢奇异哥的脚本,好用好用!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3