计算化学公社

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

[Multiwfn资源与经验] 使用Multiwfn一键批量产生各类光谱图

[复制链接 Copy URL]

5万

帖子

99

威望

5万

eV
积分
112543

管理员

公社社长

跳转到指定楼层 Go to specific reply
楼主
本文配有操作演示视频,强烈建议一看https://www.bilibili.com/video/av50818216

使用Multiwfn一键批量产生各类光谱图
Using Multiwfn to batch generate various spectra with one click

文/Sobereva@北京科音  2019-Apr-29


0 前言

如果读者还没看过《使用Multiwfn绘制红外、拉曼、UV-Vis、ECD、VCD和ROA光谱图》(http://sobereva.com/224)请先看此文。波函数分析程序Multiwfn具有非常强大的光谱绘制功能,本文目的是介绍一个小技巧,使用批处理文件,仅通过一条命令就令Multiwfn把当前目录下所有输入文件转化为光谱图。这里说的输入文件是指Multiwfn绘制光谱图的功能支持的输入文件,比如Gaussian、ORCA等程序的电子激发计算、振动分析任务的输出文件等,详见上面提到的文章。

Multiwfn可在主页http://sobereva.com/multiwfn免费下载,读者务必使用2019-Apr-28及之后更新的程序包,否则没有本文中提到的文件。

在程序包的examples\spectra\indigo目录下有四个.out文件,都是Gaussian使用不同级别做电子激发计算的输出文件,我们以这四个文件为例,说明怎么一下子就把它们都转化成UV-Vis光谱图像文件。


1 在Windows下运行

这里首先假设读者用的是Windows版。将四个.out文件都拷到Multiwfn目录下,然后把examples\spectra目录下的UV-Vis.txt和batchspec.bat也拷到Multiwfn目录下。然后把Multiwfn目录下的settings.ini里的isilent设为1并保存文件。直接双击batchspec.bat,马上当前目录下就出现了四个与输入文件同名的png文件,是UV-Vis谱的图像文件,可见极其方便!

原理是什么?首先看batchspec.bat,这是一个Windows下的批处理文件,点击右键选编辑,就可以看到以下内容
for /f %%i in ('dir *.out /b') do (
Multiwfn %%i < UV-Vis.txt > NUL
rename DISLIN.png %%~ni.png
)

其中dir *.out显示当前目录下所有.out文件,利用for循环将每个文件名依次赋值给%%i,并对每个文件调用当前目录下的Multiwfn程序按照UV-Vis.txt文件里记录的指令进行处理。由于输出在屏幕上的信息不是我们需要的,所以将这些信息重定向到NUL,它相当于是个垃圾桶,定向到里面的信息都会消失不见。Multiwfn每次处理完一个文件后,会在当前目录下产生DISLIN.png文件,为了让文件名与输入文件相同,因此用rename重命名一下,%%~ni的写法代表把%%i变量记录的文件名的后缀去除。

再来看记录了在Multiwfn里输入的指令的UV-Vis.txt文件,内容如下,每一行对应在Multiwfn里敲入的一次指令,//后面是注释。如果还有不理解的,启动Multiwfn载入任意一个out文件,照着里面的命令敲一遍就肯定懂了
11  //光谱绘制功能
3  //绘制UV-Vis
0  //显示一次光谱,否则之后无法修改纵坐标
3  //修改横坐标设定
150,850,100  //初值,终值,步长
4  //修改左侧坐标轴(对应摩尔吸收系数)
0,45000,5000  //初值,终值,步长
y  //对右侧纵坐标做相应的缩放/平移
5  //修改右侧坐标轴(对应振子强度)
0,1.0,0.1  //初值,终值,步长
n  //不对左侧坐标轴做相应的缩放/平移
1  //产生图像文件

由于在选择选项0的时候光谱会在屏幕上弹出来,因此要把settings.ini里的isilent设为1使程序处于安静模式,这样就不会蹦出图像,免得到时候还得手动关闭了。

可见批量调用Multiwfn绘制光谱的机理非常简单易懂,想改什么,只要改相应内容就行了。一般需要改的就是坐标轴范围,可以先跑一下,发现范围不合理的话,改一下UV-Vis.txt里的坐标轴设置然后重新跑即可。

在examples\spectra目录下还有个IR.txt。如果你把此文件拷到Multiwfn目录,把batchspec.bat里的UV-Vis.txt改为IR.txt,那么双击batchspec.bat时就会把当前目录下所有.out文件转化为红外光谱的图像文件。IR.txt的内容就不再解释了,因为只要照着IR.txt里的指令在Multiwfn里敲一遍,对照屏幕上的提示,马上就能理解其中的内容。

想用Multiwfn批量绘制其它类型的光谱,如ROA、Raman、VCD、ECD、光电子谱,只要自己创建个记录了绘制命令的.txt文件,按照上述过程使用它来批处理即可。


2 在Linux下运行

如果你用的是Linux版Multiwfn,也想这样通过批处理绘图的话,先按照Multiwfn手册2.1.2节的步骤以正规方式安装Multiwfn,把examples\spectra中的batchspec.sh、UV-Vis.txt以及要绘图的文件都拷到当前目录下,然后在终端里输入./batchspec.sh运行之即可。如果提示没有可执行权限,先运行一下chmod +x ./batchspec.sh。

batchspec.sh是个Bash shell的脚本,内容为:
#!/bin/bash
for inf in *.out
do
Multiwfn ${inf} < UV-Vis.txt > /dev/null
mv -f dislin.png ${inf//out/png}
done

可见和batchspec.bat的内容大同小异,只不过命令改为了Linux下的情况。${inf//out/png}代表把$inf变量记录的文件名的out后缀替换为png。

为了用起来更方便,读者还可以把batchspec.sh和UV-Vis.txt放到比如/sob目录下,把./batchspec.sh里的UV-Vis.txt改为/sob/UV-Vis.txt,然后在~/.bashrc文件里增加一行
alias UV='/sob/batchspec.sh'
alias gUV='gedit /sob/UV-Vis.txt'

重新进入终端后,只要某个目录里有比如Gaussian的电子激发任务的输出文件,就在这个目录下运行UV命令即可将它们全都瞬间转化为UV-Vis光谱文件。如果发现坐标范围不合适,输入gUV命令就可以启动gedit编辑UV-Vis.txt的内容。


3 总结

希望读者举一反三,效仿本文的运行方式,使得Multiwfn实现其它任务的批量处理。笔者的很多与Multiwfn有关的博文都充分利用了批处理文件,比如《使用Multiwfn做空穴-电子分析全面考察电子激发特征》(http://sobereva.com/434)、《使用Multiwfn做自然跃迁轨道(NTO)分析》(http://sobereva.com/377)、《使用Multiwfn绘制跃迁密度矩阵和电荷转移矩阵考察电子激发特征》(http://sobereva.com/436)、《通过键级曲线和ELF/LOL/RDG等值面动画研究化学反应过程》(http://sobereva.com/200)等等,读者可参考之,写出功能更强的批处理脚本。

评分 Rate

参与人数
Participants 3
eV +15 收起 理由
Reason
ezez + 5 赞!
zsu007 + 5 好物!
我本是个娃娃 + 5 大博士为小白们操碎了心

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

32

帖子

0

威望

2886

eV
积分
2918

Level 5 (御坂)

2#
发表于 Post on 2019-4-29 20:52:01 | 只看该作者 Only view this author
这个不错,什么时候升级一下一键绘制构象权重平均的光谱

245

帖子

0

威望

2576

eV
积分
2821

Level 5 (御坂)

3#
发表于 Post on 2019-4-29 21:02:38 来自手机 | 只看该作者 Only view this author
太赞啦,谢谢sob老师!

5万

帖子

99

威望

5万

eV
积分
112543

管理员

公社社长

4#
 楼主 Author| 发表于 Post on 2019-4-30 04:22:24 | 只看该作者 Only view this author
Evanwill 发表于 2019-4-29 20:52
这个不错,什么时候升级一下一键绘制构象权重平均的光谱

我觉得没有好升级的,目前Multiwfn绘制构象平均光谱已经超级方便了
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

286

帖子

0

威望

2685

eV
积分
2971

Level 5 (御坂)

计算化学路人甲

5#
发表于 Post on 2020-4-10 13:16:50 | 只看该作者 Only view this author
本帖最后由 Novice 于 2020-4-10 13:27 编辑

求助社长,我在使用此功能批量产生raman光谱时使用了附件中的执行文件,执行完成后,屏幕上出现了以报错信息:
forrtl: severe (24): end-of-file during read, unit -4, file /proc/66240/fd/0
Image              PC                Routine            Line        Source            
mwfn               0000000001AE486B  Unknown               Unknown  Unknown
mwfn               0000000001B0F412  Unknown               Unknown  Unknown
mwfn               000000000076325D  Unknown               Unknown  Unknown
mwfn               00000000007A613F  Unknown               Unknown  Unknown
mwfn               0000000000430922  Unknown               Unknown  Unknown
libc-2.27.so       0000147E70101B97  __libc_start_main     Unknown  Unknown
mwfn               0000000000430829  Unknown               Unknown  Unknown


虽然报错,但是却产生了我需要导出的光谱文件。请问产生这个报错的原因是什么?还有两个疑问:
1.有的操作需要直接回车,请问我在编写multiwfn执行步骤文件raman时直接回车空一行对吗(比如此文件第6行)?
2.multiwfn执行步骤文件raman中不需写使其正常结束的操作吗?(我考虑我遇到的错误是不是和这个有关?)

注:a. 单独使用multiwfn没有问题;
b.为了方便我将multiwfn手动改名为了mwfn,所用系统为ubuntu 18.04.


raman

37 Bytes, 下载次数 Times of downloads: 3

raman.sh

170 Bytes, 下载次数 Times of downloads: 6

5万

帖子

99

威望

5万

eV
积分
112543

管理员

公社社长

6#
 楼主 Author| 发表于 Post on 2020-4-11 23:13:02 | 只看该作者 Only view this author
Novice 发表于 2020-4-10 13:16
求助社长,我在使用此功能批量产生raman光谱时使用了附件中的执行文件,执行完成后,屏幕上出现了以报错信 ...

1 因为强行退出Multiwfn,所以出现“报错”。如果不想出现这些碍眼的信息,修改脚本,让程序退回到主菜单,然后用选项-10或者命令q优雅地退出

2 不需要
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

3

帖子

0

威望

20

eV
积分
23

Level 1 能力者

7#
发表于 Post on 2020-10-3 20:21:31 | 只看该作者 Only view this author
感谢感谢社长,学习了一下午,终于搞明白批处理了。。。。。
补充一个,因为想输出txt格式的UV-vis数据后,再自己做图,批处理文件.bat我这么设定的:
for /f %%i in ('dir *.log /b') do (
Multiwfn %%i < UV-Vis.txt > NUL
rename spectrum_curve.txt %%~ni.txt
)

UV-Vis.txt我的设定是:
11
3
0
8
0.4
2

很快一键搞定所有UV-Vis曲线的txt文件了

评分 Rate

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

查看全部评分 View all ratings

99

帖子

0

威望

3305

eV
积分
3404

Level 5 (御坂)

8#
发表于 Post on 2023-3-13 14:46:12 | 只看该作者 Only view this author
本帖最后由 LittlePupil 于 2023-3-13 15:20 编辑

《使用Multiwfn绘制红外、拉曼、UV-Vis、ECD、VCD和ROA光谱图》(http://sobereva.com/224)里有这么一句:
吐血建议使用pdf格式保存图像,这样线条和文字都比用png等位图格式清晰平滑得多!

所以对于Linux系统,可以在记录传递给Multiwfn命令的txt文件的保存图像命令前加入下面两行:
-4  //Set format of saved graphical file
7  //pdf format
然后将shell脚本改为
  1. #!/bin/bash
  2. for inf in *.out
  3. do
  4. Multiwfn ${inf} < UV-Vis.txt > /dev/null
  5. pdftoppm -png dislin.pdf dislin
  6. rm dislin.pdf
  7. mv -f dislin-1.png ${inf//out/png}
  8. done
复制代码

即令Multiwfn产生pdf格式的图像文件后利用pdftoppm直接将其转为png格式,其中pdftoppm是poppler-utils的一个组件,安装方法请自行百度,实测图像效果确实有明显提升。
「狩りってのは先に焦せった方の負けだ、ハンターも獲物もな」

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 17:58 , Processed in 0.299328 second(s), 31 queries , Gzip On.

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