【ASE+python】实现将poscar格式文件批量转换为xsd格式文件
将poscar格式文件批量转换为xsd格式文件
- ASE介绍
- ASE安装
- ASE的ase.io.read()与ase.io.write()
- ase.io.read()
- ase.io.write()
- 单份poscar文件转换为xsd文件
- 将多份poscar文件转换为xsd文件
ASE介绍
ASE全称为Atomic Simulation Environment,是一款基于python程序语言的工具包合集,可以用于设置、操作、运行、可视化和分析原子模拟。ASE可以与很多DFT程序进行对接(如,Abinit, CP2K, NWChem, Gaussian, Vasp 等)。
ASE安装
与上一篇openbabel的安装相似,可以直接使用命令conda install ase进行安装。
ASE的ase.io.read()与ase.io.write()
在本文主要介绍ase转换文件格式的功能,ase支持很多种文件格式(如,vasp,xsd,xyz,cif等),详细清单可见官网。科研生活中,我们可能得到一系列由vasp产生的poscar文件,需要在Materials Studio(简称MS)上使用,一般操作是使用vesta打开poscar文件,然后输出为MS可以识别的cif文件,MS打开cif文件后,需要保存为xsd文件才能进行计算。那么我想,有没有什么简便的方法可以直接实现将poscar文件转为xsd文件呢。使用openbabel并不能转换为xsd文件,于是我发现了ase的ase.io.read()与ase.io.write()函数。
ase.io.read()
【功能为:Read Atoms object(s) from file】
官方关于ase.io.read()的使用为:
ase.io.read(filename: Union[str, pathlib.PurePath, IO], index: Optional[Any] = None, format: Optional[str] = None, parallel: bool = True, do_not_split_by_at_sign: bool = False, **kwargs)
一般我们只需要提供文件名称及其类型就行,比如:
ase.io.read(filename, format=files_format)
如,我需要读取文件‘POSCAR’,文件类型为‘vasp’,则函数调用时应为:
ase.io.read(‘POSCAR’, format=‘vasp’)
ase.io.write()
【功能为:Write Atoms object(s) to file】
官方关于ase.io.write()的使用为:
ase.io.write(filename: Union[str, pathlib.PurePath, IO], images: Union[ase.atoms.Atoms, Sequence[ase.atoms.Atoms]], format: Optional[str] = None, parallel: bool = True, append: bool = False, **kwargs: dict)
其使用与ase.io.read()的相类似,不同地是需要指定需要写入文件的atoms objects,其实就是原子信息,输入的类型可以是Atoms object or list of Atoms objects。由ase.io.read()函数可以知道,一份有关原子信息的文件其实就是atoms object。所以:
ase.io.write(‘test.xsd’, atoms object,format=‘xsd’)
这里test.xsd是希望得到的文件格式的文件名+后缀名,POSCAR是指读取的文件,format=‘xsd’是指信息写入文件的文件类型。
所以ase转换文件格式的原理是:
- 先读取文件中的所有信息,转为atoms object
- 再将atoms object写入其他格式的文件中
单份poscar文件转换为xsd文件
比如,由VASP得到一份POSCAR文件,这里实现将其文件格式转换为xsd格式的文件,文件名为test。
代码思路就是(调用ase.io模块):
- 使用read()函数读取文件信息,暂存为atoms object
- 接着使用write()函数将该atoms object写入文件
from ase.io import read,write
poscar_file=read('POSCAR',format='vasp')
xsd_file=write('test.xsd',poscar_file,format='xsd')
注意:文件名需要带有文件格式后缀
将多份poscar文件转换为xsd文件
结合for循环遍历文件输入\输出atoms object,即可实现批量操作。
def poscar_to_xsd(file_PATH):
#file_PATH为储存所有待转换格式的文件的文件夹路径tqdm=os.listdir(file_PATH)#文件夹中的文件列表for i in range(0,len(tqdm)):#逐次遍历文件夹下的文件inputfile = os.path.join(file_PATH,tqdm[i])#对应文件夹下的某份文件outputfile=inputfile+'.xsd'#定义转换格式后的文件名字poscar_file=read(inputfile,format='vasp')#读入文件xsd_file=write(outputfile,poscar_file,format='xsd')#将读入的文件写入其他格式的文件
#调用该函数
poscar_to_xsd("C-N-2-defect-1652750340")
【ASE+python】实现将poscar格式文件批量转换为xsd格式文件相关推荐
- python + ffmpeg 将某站的缓存视频文件批量转换为MP4格式
这是一篇很无聊的文章,之所以写它是因为这周还没写博客,但是好像没啥可写的,刚好今天突发奇想,想要把某站的APP缓存视频文件转化为mp4 格式,方便在电脑上看,方法很简答,很快就做完了,所以,又一篇水文 ...
- ogg格式音乐批量转换为mp3
今天我发现在qq音乐客户端下载的音乐是ogg格式的,拿到蓝牙音响上面放的时候不识别. 于是我需要将ogg音乐文件批量转换为mp3格式. 有些网站可以在线转换,但是有个数限制,且上传转换再下载比较慢. ...
- python rtf转txt_将DOC、RTF格式文件批量转为TXT格式文件
Windows 下将目录下所有文件下的文件 拷贝到一个目录中:搜索"." 安装python 及 win32com模块 pip install pypiwin32 创建LDA_RTF ...
- Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式
本文介绍基于Python中Arcpy模块,实现大量HDF格式的栅格图像文件批量转换为TIFF格式的方法. 首先,来看看我们想要实现的需求. 在一个名为HDF的文件夹下,有五个子文件夹:每一 ...
- labeme批量转换json文件_Python实现markdown文件批量转换为word
Python实现markdown文件批量转换为word 正所谓,不会markdown的技术员不是老司机,自从用上markdown之后,人生又到了一波小高峰.有好东西怎么能不共享之,因此随之我不断的普( ...
- word文档批量转换为html格式
有时需要将doc/docx格式的文档批量转换为html格式的网页文件,可以使用以下VBA脚本执行批量转换的操作,需要在安装了宏功能的Word中执行. 以下脚本会搜索指定目录中的doc文档,并逐个进行处 ...
- ogg文件怎么转换为mp3格式?
ogg文件怎么转换为mp3格式?大家好!我专业为大家分享各种办公操作小技巧.今天给大家带来的是ogg文件怎么转换为mp3格式教程,可以说是在各种ogg文件转换为mp3格式的方法中是非常简单的了,即便零 ...
- 将DWG文件批量转换为JPG文件
我们在工作上需要将DWG文件转换为JPG文件,在公司里有很多的DWG文件图纸转换JPG文件,我们不可能一个一个的转换,这时候我们为了提高工作效率需要将DWG文件批量转换为JPG文件,DWG文件批量转换 ...
- arcpy将img栅格批量转换为tif格式:
arcpy将img栅格批量转换为tif格式: img栅格批量转换为tif:完整实例下载 import os #加载os库 import arcpy #加载arcpy库file_dir=r"C ...
最新文章
- 2010年下半年网络工程师考试上午试卷与参考答案(3)
- 谱减法降噪的matlab代码实现
- java监控对话框是否关闭_java – 检查是否可以安全地关闭对话框
- Pwn环境配置(一)——安装虚拟机
- Asp.net動態添加控件(转)
- HTML5学习笔记简明版(9):变化的元素和属性
- jsonobject修改key的值_JSON字符串操作移除空串更改key/value的介绍
- 优麒麟在linux下安装教程,在优麒麟Ubuntu Kylin系统中安装百度网盘Linux版.deb的方法...
- java 共享锁 独占锁_java中的公平锁、非公平锁、可重入锁、递归锁、自旋锁、独占锁和共享锁...
- linux 网络管理
- java web js_JAVA Web JS
- UVA11870 Antonyms【并查集】
- 块级元素水平,垂直居中的两种方式
- Linux下网络通信
- 栅栏密码解密——Java实现
- [电影]《指环王》新老三部曲完全赏析(魔戒再现)
- 微博图床php上传,php利用微博当图床
- 7-5 打印选课学生名单(c++)
- 震灾哀悼期间网页变黑白色调的小技巧
- c语言long double转换,c – 从unsigned long long到double转换,反之亦然更改值
热门文章
- PMI-ACP练习题(15)
- 唐端荣|DSP投放引擎的设计与实现
- springsecurity自定义短信验证码认证登录流程
- Changes to be committed: (use “git restore --staged <file>...“ to unstage)
- ASP.NET知识点总结
- python gui是什么_python的gui是什么
- 只需几步,用Python3实现属于自己的搜索引擎
- android技术学习--Thread.UncaughtExceptionHandler捕获异常崩溃
- 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)
- 心拔凉拔凉五连追问No.58