请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 1799|回复: 16

[molclus] 将多帧xyz文件转化成量子化学输入文件的工具:xyz2QC

[复制链接]

1万

帖子

25

威望

2万

eV
积分
42527

管理员

公社社长

发表于 2019-3-17 12:16:14 | 显示全部楼层 |阅读模式
将多帧xyz文件转化成量子化学输入文件的工具:xyz2QC

文/Sobereva@北京科音
First release: 2019-Mar-17  Last update: 2019-May-15

1 前言

笔者开发的免费的做构象搜索和团簇构型搜索的Molclus程序已经有很多人在用了,介绍和下载见官网http://www.keinsci.com/research/molclus.html。Molclus做搜索过程一般流程是先用十分廉价但粗糙的级别(如调用Openbabel跑MMFF94、调用xtb跑GFN-xTB)做结构优化和初步筛选,将其中能量最低的、为数不多的一批体系保留,最后再调用量子化学程序用更准确的方法算能量或做进一步优化。在整个过程中,初筛的耗时很低,在个人计算机上跑也没有任何压力,而最后对为数不多的筛出来的体系进一步做DFT/后HF量子化学计算才是占整个搜索过程的大头,才是真正有必要弄到超算上跑的(对于那些没有自己的像样的服务器的人而言)。然而,在超算上,计算任务一般是以提交方式进行的,而molclus这样自动调用其它程序去运行的方式在超算上不方便使用。为了解决这个矛盾,本文介绍笔者开发的xyz2QC程序。xyz2QC作为Molclus程序(1.7版及之后)的一个子程序发布,在Molclus压缩包里就可以找到。


2 xyz2QC介绍

xyz2QC可以基于Gaussian和ORCA的模板文件,将含有多帧的.xyz文件中指定的一批帧转化成Gaussian和ORCA输入文件。

模板文件的格式要求和molclus的完全一样,Gaussian的必须叫template.gjf,ORCA的必须叫template.inp,运行xyz2QC前必须将之放在当前目录下。

读进xyz2QC的多帧的.xyz可以是genmer、gentor直接产生的,也可以是molclus跑完后产生的isomers.xyz,也可以是isostat筛选、排序、归簇后产生的cluster.xyz。

转化出的Gaussian/ORCA的输入文件,既可以是所有被选择的结构作为多步任务出现在同一个输入文件里的,也可以要求拆分成一个个独立的文件,比如000001.gjf、000002.gjf...文件名是.xyz里的帧号,文件名数字前头可以自行定义前缀。


3 例子

xyz2QC使用极其简单,下面是一个简单例子。

假设我们之前用molclus对某个有机分子在粗糙的半经验方法PM7下做了批量优化,并用isostat做了处理,得到了按照能量排序后的cluster.xyz文件(可以这里下载:http://sobereva.com/attach/472/cluster.xyz)。这里我们想把其中能量最低的三个转化成.gjf文件,之后弄到超算/服务器上算更准确的能量,于是我们准备一个Gaussian模板文件template.gjf,内容为比如

%nproc=4
# M06-2X/TZVP

Template file

0 1
[GEOMETRY]
<---此处有空行
<---此处有空行


我们将cluster.xyz、template.gjf都放到xyz2QC目录下,然后进入此目录,启动xyz2QC,按照屏幕操作,依次输入:

1  //产生含多步的单一Gaussian输入文件
cluster.xyz  //输入.xyz的实际路径,因为此文件就在当前目录,因此这里不用输绝对路径
1-3  //我们只需要算能量最低的三个结构,由于cluster.xyz里已经按照能量排序,所以这里我们选择xyz文件里的第1~3帧

此时程序提示Gaussian.gjf已经产生在了当前目录,按回车退出即可。这个文件的内容是这样的:

%nproc=4
# M062X/TZVP

Template file

0 1
O          -2.30907426      1.90383755      0.11387296
...略
H          -3.80099226     -1.36391720      0.45491869

--link1--
%nproc=4
# M062X/TZVP

Template file

0 1
O          -2.47455224      1.86708010     -0.16509991
...略
H          -3.70656780     -1.42641602      0.64335011

--link1--
%nproc=4
# M062X/TZVP

Template file

0 1
O          -2.34444893      1.89718026      0.06136974
...略
H          -3.75360804     -1.39079507      0.53898348


有一定Gaussian基础的人都知道,在Gaussian的输入文件里可以用--link1--来将多步任务进行分隔,因此直接执行Gaussian.gjf,这三个结构的能量就都会挨个算出来了。之后我们可以用比如Ultraedit或者Linux下的grep命令直接把带有SCF Done字样的行都提取出来,就直接得到这三个结构的能量了,非常方便!

注意--link1--前头的空行数目必须对,否则多步任务将运行不成功,上面产生的Gaussian.gjf这样是没问题的。--link1--前面空行数目取决于template.gjf末尾的空行数。

xyz2QC还允许将.xyz里的指定帧拆分成产生单独的.gjf文件,这有何意义?一般来说,像上面这样把多个结构弄到一个.gjf里运行起来最方便,但有一个缺点是如果其中一个任务失败了(如SCF不收敛、几何优化不收敛),那么整个任务就会停了,后面的步骤也不算了。如果拆成单独的.gjf文件,那就没这个问题了。另外,xyz2QC拆分成的单独的.gjf文件里面有%chk段落,运算后会在当前目录下产生与输入文件名相同的chk文件,因此比如你有多帧的xyz文件,想对里面每个结构都用Multiwfn做波函数分析,可以这么拆分完了后批量执行,然后再批量转换成fch。怎么批量执行和转换见《使用Gaussian时的几个实用脚本和命令》(http://sobereva.com/258)。

类似地,xyz2QC还可以产生ORCA的输入文件,也是可以作为多步任务构成单一文件,或拆分成不同的文件。对于多步任务,强烈建议在模板文件template.inp里加入noautostart关键词,要不然下一个任务的初猜会自动用前一个任务收敛的波函数,然而你选定的那些结构的几何差异可能不小,因此这样得到的初猜可能会很糟糕。noautostart代表不自动从与当前文件同名的.gbw文件中读取初猜波函数,就可以确保没这个问题。

评分

参与人数 9eV +42 收起 理由
常轩豪 + 4 хорошо!
ggdh + 5 赞!
fallleave + 5 好物!
ZCSco + 5 GJ!
greta2009 + 4 谢谢分享
kulaomega + 5 赞!
Novice + 5
yeahhanpei + 5 赞!
杨小狗 + 4 GJ!

查看全部评分

北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社QQ群,1号:18616395,2号:466017436。达5000人,专门交流理论、计算化学。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

41

帖子

0

威望

1280

eV
积分
1321

Level 4 (黑子)

发表于 2019-3-26 16:25:28 | 显示全部楼层
Sob老师,斗胆提一个请求,能否增加一个功能,就是在生成独立的gjf或者inp文件的时候,能够把这些文件统一命名成“前缀(用户指定)+编号.gjf”这种模式。当然,如果您没时间或没兴趣做这件事,就当我没说,非常感谢您

1万

帖子

25

威望

2万

eV
积分
42527

管理员

公社社长

 楼主| 发表于 2019-3-27 04:33:41 | 显示全部楼层
happyknighthawk 发表于 2019-3-26 16:25
Sob老师,斗胆提一个请求,能否增加一个功能,就是在生成独立的gjf或者inp文件的时候,能够把这些文件统一 ...

我感觉一般用户用不着这点,而且还会额外增加一个操作步骤
如果你需要这个功能,我可以给你源码自行添加,也就几行语句的事
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社QQ群,1号:18616395,2号:466017436。达5000人,专门交流理论、计算化学。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

41

帖子

0

威望

1280

eV
积分
1321

Level 4 (黑子)

发表于 2019-3-27 09:55:00 | 显示全部楼层
sobereva 发表于 2019-3-27 04:33
我感觉一般用户用不着这点,而且还会额外增加一个操作步骤
如果你需要这个功能,我可以给你源码自行添加 ...

谢谢Sob老师回复,我的邮箱是hukun@mail.kib.ac.cn,麻烦您了

3

帖子

0

威望

37

eV
积分
40

Level 2 能力者

发表于 2019-5-6 18:47:47 | 显示全部楼层
采用sob老师提供的GauIRC2xyz.exe将IRC中每个点的坐标转为.xyz文件后,通过本文提供的方法将xyz转为QC时,遇到所有转换的结构与template.gjf的结构相同,请问大家有遇到这样的问题吗?请问是如何解决的呢?谢谢!麻烦啦!

1万

帖子

25

威望

2万

eV
积分
42527

管理员

公社社长

 楼主| 发表于 2019-5-7 08:12:10 | 显示全部楼层
chemqzx 发表于 2019-5-6 18:47
采用sob老师提供的GauIRC2xyz.exe将IRC中每个点的坐标转为.xyz文件后,通过本文提供的方法将xyz转为QC时, ...

template.gjf里根本就没有结构信息,结构信息部分被[GEOMETRY]所代替
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社QQ群,1号:18616395,2号:466017436。达5000人,专门交流理论、计算化学。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

21

帖子

0

威望

207

eV
积分
228

Level 3 能力者

发表于 2019-5-7 11:18:07 | 显示全部楼层
社长能否开发个小软件,将xyz轨迹文件转换成晶体文件(如cif文件),每次CP2K结果出来,手动建立晶胞可麻烦了

1万

帖子

25

威望

2万

eV
积分
42527

管理员

公社社长

 楼主| 发表于 2019-5-8 09:48:12 | 显示全部楼层
莫落 发表于 2019-5-7 11:18
社长能否开发个小软件,将xyz轨迹文件转换成晶体文件(如cif文件),每次CP2K结果出来,手动建立晶胞可麻烦 ...

暂时不在考虑范畴之内,等我什么时候研究涉及到相关问题时可能才会写
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社QQ群,1号:18616395,2号:466017436。达5000人,专门交流理论、计算化学。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

1521

帖子

3

威望

5579

eV
积分
7160

Level 6 (一方通行)

Ab Initio Amateur

发表于 2019-5-8 12:04:02 | 显示全部楼层
莫落 发表于 2019-5-7 11:18
社长能否开发个小软件,将xyz轨迹文件转换成晶体文件(如cif文件),每次CP2K结果出来,手动建立晶胞可麻烦 ...

我不知道你的晶格是否固定尺寸,xyz文件我不确定是否会丢失晶格信息。对于vesta的情况,cif只需要alpha、beta、gamma、a、b、c、原子的符号和坐标即可,我不知道cp2k读取的cif只要这些信息就能读取结构。如不涉及对称性问题,实现起来不是很难,我可以用python帮你试试看。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

21

帖子

0

威望

207

eV
积分
228

Level 3 能力者

发表于 2019-5-8 15:25:17 | 显示全部楼层
卡开发发 发表于 2019-5-8 12:04
我不知道你的晶格是否固定尺寸,xyz文件我不确定是否会丢失晶格信息。对于vesta的情况,cif只需要alpha、 ...

CP2K可以直接读取cif格式的晶体文件,晶格参数在inp文件里。CP2K优化后的结构输出到.xyz文件里,而晶格参数输出到.out文件中,所以要结合两个文件提供的信息重新建立晶胞,比较麻烦。

1521

帖子

3

威望

5579

eV
积分
7160

Level 6 (一方通行)

Ab Initio Amateur

发表于 2019-5-8 16:21:51 | 显示全部楼层
莫落 发表于 2019-5-8 15:25
CP2K可以直接读取cif格式的晶体文件,晶格参数在inp文件里。CP2K优化后的结构输出到.xyz文件里,而晶格参 ...

能够提取到晶格参数的话这个也不是问题,这个可以讨论下。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

1521

帖子

3

威望

5579

eV
积分
7160

Level 6 (一方通行)

Ab Initio Amateur

发表于 2019-5-13 14:06:20 | 显示全部楼层
本帖最后由 卡开发发 于 2019-5-16 11:53 编辑
莫落 发表于 2019-5-8 15:25
CP2K可以直接读取cif格式的晶体文件,晶格参数在inp文件里。CP2K优化后的结构输出到.xyz文件里,而晶格参 ...

这里以xtl为例子,因为同样能够被M$识别。python实现CP2K做cif或xtl格式转换的要点在于:
1、原子坐标由直角坐标转换为分数坐标,转换过程需要倒格矢量,参考Callaway的《Quantum Theory of the Solid State》的$1.2

2、通过晶格矢量计算计算晶格参数,涉及到简单的矢量模长和夹角计算。
附件中的CrysFormat.py能够实现上述过程。

读取out、xyz和写入xtl比较简单,核心技巧在于python正则表达式的使用,附件中的CP2K_io.py能够实现。CP2K的问题在于晶格矢量保留的小数太少了,因此转换过程会有数值误差。

最后,主程序读取out和xyz的文件名和指定xtl的文件名,调用前面两个py程序即可,附件中的CP2K_xtl是一个例子,根据需求原则上也能写出转换成cif的格式。

CrysFormat.tar.gz

1.79 KB, 下载次数: 0

满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

37

帖子

0

威望

220

eV
积分
257

Level 3 能力者

发表于 2019-5-14 16:59:03 | 显示全部楼层
happyknighthawk 发表于 2019-3-26 16:25
Sob老师,斗胆提一个请求,能否增加一个功能,就是在生成独立的gjf或者inp文件的时候,能够把这些文件统一 ...

批处理脚本,满足你的要求。
http://bbs.keinsci.com/thread-13238-1-1.html

57

帖子

0

威望

1286

eV
积分
1343

Level 4 (黑子)

发表于 2019-5-14 17:39:19 | 显示全部楼层
莫落 发表于 2019-5-8 15:25
CP2K可以直接读取cif格式的晶体文件,晶格参数在inp文件里。CP2K优化后的结构输出到.xyz文件里,而晶格参 ...

你有没有尝试通过 MOTION / PRINT / CELL 把晶格参数单独输出出来?
输出的文件结合 xyz一起读入,应该不再需要 cif 了吧。

1万

帖子

25

威望

2万

eV
积分
42527

管理员

公社社长

 楼主| 发表于 2019-5-15 20:42:43 | 显示全部楼层
happyknighthawk 发表于 2019-3-26 16:25
Sob老师,斗胆提一个请求,能否增加一个功能,就是在生成独立的gjf或者inp文件的时候,能够把这些文件统一 ...

刚更新了Molclus 1.8.2版,这次的xyz2QC组件产生独立的Gaussian和ORCA输入文件时已经允许用户输入前缀了。
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社QQ群,1号:18616395,2号:466017436。达5000人,专门交流理论、计算化学。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-6-17 15:48 , Processed in 0.171102 second(s), 28 queries .

快速回复 返回顶部 返回列表