py4vasp专题

py4vasp公开方法:从文件到数据对象

查询39类quantity的方法签名,实际使用from_path、from_file、from_data和元数据选择。

更新于 2026-11-11约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

计算结束后,先确认要读哪一类结果,再选择对应方法。下载方法表与实算示例,包含py4vasp0.11.3的39类quantity、101种不同方法签名,以及真实Si能带和20帧短MD读取数据。

这些签名包括共享的读取、导出和构造方法,不等于101种独立物性。各quantity的物性用途与文件前提见完整quantity索引;本篇补充终端里怎样实际调用它们。

1 先查询方法,不要盲目全调用#

mkdir py4vasp-API
python3 -m zipfile -e py4vasp-API-*.zip py4vasp-API
cd py4vasp-API
module load py4vasp/0.11.3
python api.py
python api.py band

第一条查询列出39个名称,第二条列出band的方法、参数和使用前提。也可查询:

python api.py density
python api.py structure
python api.py electron_phonon.transport

本环境使用Python3.11。示例HDF为本站实际VASP结果的读取副本,已移除赝势组,保留科学数组原值;不要把它当作VASP续算文件。

2 最常用的入口是from_path#

python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('sample-band')
print(c.band.read().keys())
print(c.structure.number_atoms())
print(c.band.selections())
PYCODE

从目录构造Calculation后,程序按quantity寻找相应HDF。能带、能量等通常来自vaspout.h5;密度等还可能需要同目录的vaspwave.h5。read()或to_dict()取数据,selections()查询这个实际文件能选择什么。

不要因为某个方法存在就认定文件里有相应数据。缺少的电子声子实例、未输出的密度或没有运行过的响应,不能当成数值0。

3 指定文件与使用已有raw对象#

python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('sample-band')
band = c.band.from_file('sample-band/vaspout.h5')
print(band.read()['bands'].shape)
with py4vasp.raw.access('band', path='sample-band') as data:
    same_data = c.band.from_data(data)
    print(same_data.read()['bands'].shape)
PYCODE

from_file明确指定单个文件;from_data适合把已经读入的真实raw数据交给同类方法,文件上下文关闭前先提取需要的数组。一般客户直接用Calculation.from_path即可,不需要手工构造raw对象。

4 结构、路径与实例筛选#

python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('sample-band')
print(c.structure.volume())
print(c.structure.to_ase())
points = c.kpoint.read()['coordinates']
print(c.kpoint.path_indices(points[0], points[19]))
PYCODE

path_indices的起终点是两个三维k坐标,不是两个整数索引;当前方法寻找共线k点,可能包含路径边界的重复点,需要限定单条线段时再按路径范围筛选。旧式POSCAR若没有元素名,from_POSCAR需提供elements;推荐使用带元素行的新式文件。

电子声子容器先查询selections(),再按真实元数据选择。例如已有相应输运结果时:

c = py4vasp.Calculation.from_path('自己的输运计算目录')
print(c.electron_phonon.transport.selections())
selected = c.electron_phonon.transport.select('scattering_approx=CRTA')
print(len(selected))

本站已有CRTA例子该条件返回2个实例。不要拿不存在的nbands_sum条件筛选后,把空列表解释成零电导。本版本的实例读取器会新建对象,index(obj[0])可能因对象身份不匹配抛ValueError;按物理条件选实例优先用select。

5 可视化方法的前提#

方法 实际使用前提
to_plotly、to_csv、to_frame quantity及对应选择有数据,绘图派生导出继承底层方法的前提
to_image 另需Chrome;没有时先导出HTML
to_view、to_ngl 需要结构/网格数据;NGL图适合Notebook或导出的网页前端
to_vasp_viewer 另需可选vasp_viewer,当前环境未安装,可选to_ngl
effective_coulomb.to_graph 需要相应频率轴或位置字段;本站静态外频张量例应先read()后作矩阵图
partial_density默认求和/视图 需有band0求和数据;分能带文件先查询bands()并指定实际能带

方法表完整保留这些条件,没有把依赖缺失或未计算字段写成已支持。能带自旋纹理和磁性场的实际调用见自旋矢量例子,数据导出见下一篇。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗