用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第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格