计算化学公社

标题: 求助,QE跑MD任务时,如何跑出xyz轨迹文件? [打印本页]

作者
Author:
不会扣篮的后卫    时间: 2024-2-3 07:14
标题: 求助,QE跑MD任务时,如何跑出xyz轨迹文件?
大家好,我在用网上的环己烷boat.in,跑QE的MD任务时,成功跑出了boat.out等输出文件。
(, 下载次数 Times of downloads: 27)
但是并没有得到网上的xyz轨迹输出文件(附上xyz轨迹文件的截图)。
(, 下载次数 Times of downloads: 27)
请问各位老师,同学,这个xyz轨迹文件是不是需要一个命令读取boat.out文件来生成的?(附上相关的输入,输出文件)

作者
Author:
卡开发发    时间: 2024-2-3 15:50
这应该是ext-xyz的格式,理论上可以用python的ase来对qe的out进行处理,但是需要小心,qe不同的版本输出做的相当激进,以至于新版本(qe7)的格式未必所有情况都能被ase处理(如自旋极化会遇到mag解析不了以及DFT+U也会出问题)。
作者
Author:
不会扣篮的后卫    时间: 2024-2-4 11:42
卡开发发 发表于 2024-2-3 15:50
这应该是ext-xyz的格式,理论上可以用python的ase来对qe的out进行处理,但是需要小心,qe不同的版本输出做 ...

谢谢老师的建议!
作者
Author:
卡开发发    时间: 2024-2-4 11:48
不会扣篮的后卫 发表于 2024-2-4 11:42
谢谢老师的建议!

还有一种办法,qe的pw的一般会给pwo2xsf,然后用这个转换成axsf,这个格式再去用ase转换到ext-xyz我感觉问题可能少一点。
作者
Author:
不会扣篮的后卫    时间: 2024-2-5 13:40
卡开发发 发表于 2024-2-4 11:48
还有一种办法,qe的pw的一般会给pwo2xsf,然后用这个转换成axsf,这个格式再去用ase转换到ext-xyz我感觉 ...

感谢老师的补充。
老师,我在使用pwo2xsf.sh把输出文件boat.out读取,
  1. bash pwo2xsf.sh --animxsf boat.out>> boat_new.out
复制代码
得到了boat_new.out。

新的问题,我在使用python的ase转换这个boat_new.out,出现了报错,请问老师这个boat_new.out符合axsf格式吗?
(附上相关文件,P.S.我按照老师您之前的第一条回复,成功得到了ext-xyz的格式)

作者
Author:
卡开发发    时间: 2024-2-5 19:26
本帖最后由 卡开发发 于 2024-2-6 11:52 编辑
不会扣篮的后卫 发表于 2024-2-5 13:40
感谢老师的补充。
老师,我在使用pwo2xsf.sh把输出文件boat.out读取,
得到了boat_new.out。

存在两处问题:
1、ase识别文件的机制是通过扩展名,什么尾缀相应就调哪个函数来读取对应的格式。pwo2xsf的操作其实是将qe的out文件转为xsf格式(如果是轨迹应该是axsf,但尾缀也应当写成xsf)。然后再通ase convert xxx.xsf [目标格式],这个目标格式可以是xyz或更多格式。
2、我不确定这个文件是你后复制到文本中还是产生出来就这样。对于你上传的文件读取的时候编码不是utf-8(这个可以找一个文本编辑器来看下编码格式),然后可以用用如下脚本:
  1. f=open('boat_new.out',encoding='utf-16',errors='ignore')
  2. data=f.read()
  3. f.close()
  4. f=open('boat_new.xsf','w+')
  5. f.write(data)
  6. f.close()
复制代码

然后再用ase转换即可。我建议最好检查一下ase转换的结果是否正确,比如晶胞信息,如果还不行只能手动解析一下。
作者
Author:
不会扣篮的后卫    时间: 2024-2-7 11:52
卡开发发 发表于 2024-2-5 19:26
存在两处问题:
1、ase识别文件的机制是通过扩展名,什么尾缀相应就调哪个函数来读取对应的格式。pwo2xs ...

感谢老师的建议,我使用您给的代码,转换流程,成功得到xyz文件!boat_new.out是产生出来就这样。我发现来自于网上的export_trajectory.py,是只用于通过读取QE的MD输出文件,结合ase,直接生成ext-xyz文件,跳过了中间步骤(生成xxx.xsf文件)。(P.S.附上export_trajectory.py)
作者
Author:
卡开发发    时间: 2024-2-7 12:16
不会扣篮的后卫 发表于 2024-2-7 11:52
感谢老师的建议,我使用您给的代码,转换流程,成功得到xyz文件!boat_new.out是产生出来就这样。我发现 ...

1、网上这个python脚本其实只是把io的过程用argparse重新折腾了一下,他的实际用法是:
python3 export_trajectory.py -f boat.out -o trajectory.xyz --trim N,其中N是截取的image的位置。

2、这个脚本实际是完全多余的,因为你这个体系可能直接ase convert boat.out boat.xyz就能得到,如果要分割可以用-s的参数(详细可以参考ase convert --help)

3、这两种做法的问题是,如果遇到我上面说的问题很可能仍然解决不了(也就是前面说的磁矩等问题),这是因为QE的团队自身比较激进对out输出做了一些不那么向前兼容的调整,导致其他后处理程序可能会失效,当时猜xsf可能不会改的那么离谱,所以其实还是建议xsf。

4、out转换到xsf的应该可以通过pwo2xsf或者qeout2axsf,后者我没测试过,转成utf16的原因我不太清楚。除了上述方法理论上你也可以用shell的iconv去转换。
作者
Author:
aff    时间: 2024-8-21 17:32
不会扣篮的后卫 发表于 2024-2-7 11:52
感谢老师的建议,我使用您给的代码,转换流程,成功得到xyz文件!boat_new.out是产生出来就这样。我发现 ...

请问如何结合ase生成ext-xyz文件呢? 我尝试使用ase convert,但是显示     ase convert new.out new.xyz
        
SyntaxError: invalid syntax 显示识别不了convert




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