用cython编写的vasp dft代码输出的xml文件的快速解析器。

quantum_esperanto的Python项目详细描述


quantum esperanto是用cython编写的dft代码(vasp截至目前)输出的xml文件的快速解析器。 它利用了lxml(libxml2库的python包装器)及其cython接口。 XML文件以透明的方式解析为Python字典。它真的很快,比 pymatgen项目使用的分析器。

安装

由于量子世界语尚未在pypi上,因此可以从GitHub

$ git clone https://github.com/tilde-lab/quantum_esperanto
$ cd quantum_esperanto
$ pip install .

软件包的python先决条件是numpylxml(应与pip一起自动安装)。 此外,系统中必须存在c编译器,如gcc

可以在开发模式下安装包。这将安装Cython以及nose测试套件。 要执行此操作,请在克隆存储库并更改目录后发出以下命令:

$ cd quantum_esperanto
$ pip install -e .[dev]

安装后,可以运行几个测试来检查安装是否成功完成。可能是 使用quantum_esperanto目录中的以下命令完成:

$ python setup.py test

如果一切正常,就可以开始使用这个包了。

用法

解析器可以非常简单的方式使用。首先,必须实例化解析器,然后parse_file 解析器的方法返回已分析值的字典:

fromquantum_esperanto.vaspimportVaspParserparser=VaspParser()d=parser.parse_file('vasprun.xml')

解析器的可能参数是:

恢复
(布尔值,默认值:true)允许恢复损坏的xml的标志。它在未完成的情况下非常有用 但是,它在第一个XML错误上退出,返回的字典包含解析值到 仅第一个XML错误。当需要XML恢复时,将向stderr打印警告。
白名单
(list,默认值:none)只需分析的父标记名列表。如果没有,则分析所有标记。

分析结果

解析的结果是一个遵循vasprun.xml结构的字典。字典的钥匙是 标记名(用于ivvarray标记)或tag:tag name构造(用于具有名称的标记 属性),或者只是标记自己。值是转换为正确类型的标记内容(由^{tt14}指定$ 标记属性)或(对于varray和set)numpy数组。Fortran溢出(用***表示)转换为 浮点值为nan,整数值为maxint。

示例

xml文件

<structurename="primitive_cell"><crystal><varrayname="basis"><v>       1.43300000       1.43300000       1.43300000 </v><v>       1.43300000      -1.43300000      -1.43300000 </v><v>      -1.43300000       1.43300000      -1.43300000 </v></varray><iname="volume">     11.77059895 </i><varrayname="rec_basis"><v>       0.34891835       0.34891835       0.00000000 </v><v>       0.34891835      -0.00000000      -0.34891835 </v><v>      -0.00000000       0.34891835      -0.34891835 </v></varray></crystal><varrayname="positions"><v>       0.00000000       0.00000000       0.00000000 </v></varray></structure>

结果字典(用pprint打印):

{'structure:primitive_cell':{'crystal':{'basis':array([[1.433,1.433,1.433],[1.433,-1.433,-1.433],[-1.433,1.433,-1.433]]),'rec_basis':array([[0.34891835,0.34891835,0.],[0.34891835,-0.,-0.34891835],[-0.,0.34891835,-0.34891835]]),'volume':11.77059895},'positions':array([[0.,0.,0.]])}}

许可证

Quantum世界语获得麻省理工学院许可。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java传递实现接口的内部类   java为什么managedbean方法在post请求中的过滤器调用之前调用   java Android应用程序在Android M,O上崩溃,登录A/libc时出错:tid 17938中的致命信号11(SIGSEGV),代码2,故障地址0x343a2944   java JPA存储库。findByAll()返回null,但数据库中存在所有内容   用于发送电子邮件的java Ant脚本   Java小程序HTML页面发生了奇怪的事情   在Postman的请求正文中传递多个JSON数据,并使用Jersy(JXRS)进入Java Rest API   无法强制转换java DAO类   10分钟后重新连接java   正则表达式如何在java中选择字符串直到某个字符   java我的输出有一些问题   Objective中的java时间段   java如何在新屏幕上基于按钮单击在webview中打开url   java哪个selenium版本与Firefox ESR 45.2.0兼容   java无法使用Apache Camel 3.1.0将XML转换为JSON