计算化学公社

标题: 调用Multiwfn做批量化学结构文件,波函数文件转化,输入文件格式化 [打印本页]

作者
Author:
imasen    时间: 2023-9-24 05:31
标题: 调用Multiwfn做批量化学结构文件,波函数文件转化,输入文件格式化
本帖最后由 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支持的化学结构文件和波函数文件之间的批量转化。

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

1. 环境设置
为了在Windows下更便捷地使用这个脚本,需要做一些准备,首先需要安装cmder,安装设置可以参考(量子化学程序ORCA的安装方法),安装并设置好后就可以在任意目录下右键cmder here打开cmder命令行窗口了。
另外还需要进行以下任意一种操作:
以上设置是为了在任意目录下都能方便快捷地调用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
复制代码
主要分为三个部分,内容相当简单。

       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删去文件头)去替换,比较容易实现。






作者
Author:
zsu007    时间: 2023-9-24 21:24
楼主威武!
作者
Author:
xsc6    时间: 2023-9-24 23:27
楼主功德无量
作者
Author:
胡说    时间: 2023-9-25 09:46
本帖最后由 胡说 于 2023-9-25 09:54 编辑

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

作者
Author:
imasen    时间: 2023-9-25 12:37
胡说 发表于 2023-9-25 09:46
很实用的脚本,感谢楼主。
不过发现一个小问题,利用Gaussian输出文件产生ORCA输入文件,如果使用template, ...

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

作者
Author:
胡说    时间: 2023-9-25 14:57
imasen 发表于 2023-9-25 12:37
谢谢您指出问题,已经更改了。您可以下载更新后的脚本。

好的,感谢!




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