计算化学公社

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

[Multiwfn资源与经验] 调用Multiwfn做批量化学结构文件,波函数文件转化,输入文件格式化

[复制链接 Copy URL]

49

帖子

1

威望

1189

eV
积分
1258

Level 4 (黑子)

吃猫咪的鱼

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 imasen 于 2023-9-25 12:40 编辑

更新 09/25/2023
之前的代码里为了方便,当前目录下没有Gaussian或ORCA的输入文件模板就会生成模板,调用后再删掉,导致不去自动调用输入文件的电荷和自旋多重度。现在已经修改了这个逻辑,仅当有模板时再调用。已更新下载链接。感谢用户@胡说 指出这个问题。




利用Multiwfn做批量文件格式转化可以借助类似这样的shell脚本完成。(参考一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本
  1. #Convert all .log files to .xyz file by Multiwfn
  2. #!/bin/bash
  3. icc=0
  4. nfile=`ls *.log|wc -l`
  5. for inf in *.log
  6. do
  7. ((icc++))
  8. echo “Converting ${inf} to ${inf//log/xyz} ... ($icc of $nfile)”
  9. Multiwfn ${inf} << EOF > /dev/null 2>&1
  10. 100
  11. 2
  12. 2
  13. ${inf//log/xyz}
  14. 0
  15. q
  16. EOF
  17. done
复制代码
这个脚本十分简单,修改起来也很方便,进入Multiwfn主功能100/2,然后按提示操作,并将需要键入的内容替换上述脚本EOF部分内容即可。我也仿照上面写了很多格式转换的小脚本,但是总有遗漏,发现要用的还没写,慢慢累积的太多了。所以想索性写个脚本可以进行所有Multiwfn支持的化学结构文件和波函数文件之间的批量转化。

脚本下载( Mconvert (4.02 KB, 下载次数 Times of downloads: 28)

1. 环境设置
为了在Windows下更便捷地使用这个脚本,需要做一些准备,首先需要安装cmder,安装设置可以参考(量子化学程序ORCA的安装方法),安装并设置好后就可以在任意目录下右键cmder here打开cmder命令行窗口了。
另外还需要进行以下任意一种操作:
  • 将Mconvert拷贝置Multiwfn的主目录,然后将Multiwfn的主目录添加到PATH环境变量。具体操作为右键我的电脑/属性/高级系统设置/环境变量/系统变量中选择Path/编辑/新建/将Multiwfn的主目录复制进去/确定/确定/确定。这样就可以在终端/shell脚本中直接使用Multiwfn和Mconvert而不用在前方加上绝对路径。
  • 分别将Multiwfn和Mconvert路径添加到PATH环境变量。
  • 将Mconvert路径添加到PATH环境变量,用记事本打开Mconvert,将Multiwfn=Multiwfn等式右侧改为Multiwfn的绝对路径。
以上设置是为了在任意目录下都能方便快捷地调用Multiwfn进行文件格式转换。

2. 使用说明
在需要进行文件格式转换的目录下打开cmder命令行,输入Mconvert可查看使用说明,内容如下:
Multiwfn-assisted Chemical Structure and Wavefunction File Batch Conversion Tool.
Below paper Should Be Cited if this help:
        Tian Lu, Feiwu Chen, J. Comput. Chem., 33, 580-592 (2012)
To batch convert files in the current directory, you can use the following command:
  1. Mconvert [input_file_type]2[output_file_type]
复制代码
e.g. Mconvert log2oif (oif stands for orca input file in Mconvert, the output file name will use .inp instead of .oif suffix)
To convert a single file in the current directory, you can use the following command:
  1. Mconvert [input_file_name] [output_file_name]
复制代码
e.g. Mconvert Benzene.fchk Benzene.molden
When files <template.gjf> or <orca_template.inp> exist in the current directory, the template will be used when generating the Gaussian/ORCA input file.
You can generate the template through the following command and modify it manually:
  1. Mconvert gau_template
复制代码
主要分为三个部分,内容相当简单。
  • 文件格式的批量转换。比方说当前目录下有大量几何优化完的Gaussian输出.log/.out文件,想在chimeraX中打开作图,就可以在命令行中cd到当前目录,再输入Mconvert log2pdb,就会在当前目录下生成同名的pdb文件。
  • 单个文件的格式转换。运行Mconvert [输入文件名] [输出文件名] 就行了。其中转换成orca的输入文件需要输入的是oif(ORCA input file)而不是inp,主要是为了让用户把它和其他程序的输入文件区分开,实际生成时的后缀还是inp。
  • 批量格式化生成Gaussian/ORCA的输入文件。比方说当前目录下存在大量在B3LYP/6-31G**精度下完成的几何优化输出.log文件,现在需要去做高精度单点,就可借用Mconvert调用Multiwfn快速完成,以下为使用步骤。

       a. 运行 Mconvert gau_template,在当前目录下会生成一个template.gjf的文件。记事本打开后内容如下:
  1. %chk=[name].chk
  2. #P B3LYP/6-31G*

  3. Generated by Multiwfn

  4.   0  1
  5. [geometry]
复制代码
        将#P行替换成#p m062x/def2TZVP scrf=smd em=gd3。
       b. 运行Mconvert log2gjf。这样就会调用模板内容生成所需的输入脚本,节约时间的同时规避了手动调整造成的关键词不一致。

产生ORCA输入文件的方法相似,运行Mconvert orca_template也会生成ORCA的输入模板。

3. 其他
暂时没有支持其他计算程序输入文件的格式化,主要原因是我不用。CP2K这样的程序输入文件格外复杂,生成模板再手动更改很不合理,可以向帖子开头的提到的脚本一样,将流程写入EOF,专门用一个脚本来操作。而其它程序借助模板来更改,也可以参考卢天老师用[geometry]这样的字段在模板里定位,然后用生成的单纯的坐标信息(比如xyz删去文件头)去替换,比较容易实现。





评分 Rate

参与人数
Participants 7
威望 +1 eV +28 收起 理由
Reason
leichuang + 3 谢谢
chuan437 + 5
hdhxx123 + 5 精品内容
xsc6 + 5 牛!
mizu-bai + 5 好物!
zsu007 + 5 赞!
sobereva + 1

查看全部评分 View all ratings

343

帖子

1

威望

7002

eV
积分
7365

Level 6 (一方通行)

2#
发表于 Post on 2023-9-24 21:24:35 | 只看该作者 Only view this author
楼主威武!

112

帖子

0

威望

882

eV
积分
994

Level 4 (黑子)

3#
发表于 Post on 2023-9-24 23:27:56 | 只看该作者 Only view this author
楼主功德无量
不羡大神不羡仙,努力学习每一天

64

帖子

0

威望

4056

eV
积分
4120

Level 6 (一方通行)

4#
发表于 Post on 2023-9-25 09:46:08 | 只看该作者 Only view this author
本帖最后由 胡说 于 2023-9-25 09:54 编辑

很实用的脚本,感谢楼主。
不过发现一个小问题,利用Gaussian输出文件产生ORCA输入文件,如果使用template,那么产生的inp文件中电荷和自旋多重度将始终和template中一样,而不会根据实际情况修改。原因是Multiwfn本身如此,但如果不用template,则电荷和自旋多重度则是根据log中来的。对于产生gjf则无论是否使用template都不存在该问题。
事实上,Multiwfn产生inp并不一定需要template,选择某一计算级别即可。所以逻辑或许可以改成这样,如果用户没有提供template,那么就按照无template的方式产生inp,如果有则利用template,而不是一直产生一个默认的template。这样就不存在以上小问题了。

49

帖子

1

威望

1189

eV
积分
1258

Level 4 (黑子)

吃猫咪的鱼

5#
 楼主 Author| 发表于 Post on 2023-9-25 12:37:13 | 只看该作者 Only view this author
胡说 发表于 2023-9-25 09:46
很实用的脚本,感谢楼主。
不过发现一个小问题,利用Gaussian输出文件产生ORCA输入文件,如果使用template, ...

谢谢您指出问题,已经更改了。您可以下载更新后的脚本。

64

帖子

0

威望

4056

eV
积分
4120

Level 6 (一方通行)

6#
发表于 Post on 2023-9-25 14:57:58 | 只看该作者 Only view this author
imasen 发表于 2023-9-25 12:37
谢谢您指出问题,已经更改了。您可以下载更新后的脚本。

好的,感谢!

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 09:52 , Processed in 0.268825 second(s), 25 queries , Gzip On.

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