资讯动态

Python aiidalab-qe-pp 包详解与实战案例

发布时间:2026/10/22 12:59:39 来源:尧图企业网站定制
1. 引言aiidalab-qe-pp 是 AiiDA 生态中面向 Quantum ESPRESSO 后处理Post-Processing场景的 Python 扩展包。它基于 AiiDAlab 框架构建旨在把第一性原理计算中常见的能带、态密度、投影态密度、功函数、电荷密度等后处理流程标准化、自动化并直接与 AiiDA 的数据库和计算图provenance打通。本文将从功能、安装、语法、参数、9 个实际应用案例以及常见错误与注意事项六个方面系统介绍 aiidalab-qe-pp 的使用方法。本文面向已经具备 AiiDA 和 Quantum ESPRESSO 基础使用经验的读者默认你已经完成 AiiDA 核心环境与 Quantum ESPRESSO 计算插件的安装配置。2. 功能概述aiidalab-qe-pp 的核心定位是「后处理工作流即服务」。它把 Quantum ESPRESSO 计算结束后常见的分析任务封装为可复用的工作流Workflow和工具函数主要功能包括能带结构后处理从 pw.x 计算结果中提取能带数据生成能带图并支持投影能带fat band分析。态密度DOS与投影态密度PDOS调用 dos.x 和 projwfc.x 生成总态密度和分波态密度支持按元素、轨道类型投影。功函数计算基于静电势VASP 风格的平均静电势自动计算表面体系的功函数。电荷密度分析提取并可视化总电荷密度、差分电荷密度支持二维切片和三维等值面。能带对齐与带隙分析自动识别费米能级、带隙大小和带边位置支持半导体和绝缘体体系。数据持久化与可视化所有后处理结果自动存入 AiiDA 数据库并生成可交互的 HTML 报告。与 AiiDAlab 深度集成提供 Jupyter Notebook 界面下的图形化配置和结果展示组件。3. 安装方法aiidalab-qe-pp 的安装依赖 AiiDA 2.x 和 aiidalab-qe 核心包。推荐使用 conda 或 pip 在独立的 Python 环境中安装。3.1 环境准备建议使用 Python 3.9 及以上版本并先创建独立环境conda create -n aiidalab-qe python3.10 conda activate aiidalab-qe3.2 安装 AiiDA 核心pip install aiida-core2.5.1 pip install aiida-quantumespresso3.3 安装 aiidalab-qe 与 aiidalab-qe-pppip install aiidalab-qe pip install aiidalab-qe-pp如果希望使用最新的开发版本可以直接从 GitHub 安装pip install githttps://github.com/aiidalab/aiidalab-qe-pp.git3.4 初始化 AiiDA 配置文件verdi quicksetup verdi daemon start安装完成后可以通过以下命令验证包是否可用python -c import aiidalab_qe_pp; print(aiidalab_qe_pp.__version__)4. 核心语法与参数说明aiidalab-qe-pp 的语法围绕「工作流」和「后处理工具」两个层次展开。下面介绍最常用的接口和参数。4.1 工作流入口最常用的入口是PpWorkflow它接收一个已经完成的 Quantum ESPRESSO 计算节点通常是PwCalculation的输出结构并自动执行一系列后处理任务。from aiidalab_qe_pp.workflows import PpWorkflow builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(PK) # 已完成的 pw.x 计算节点 builder.post_processing { bands: True, dos: True, pdos: True, work_function: True, charge_density: True, } builder.parameters { bands: {projections: True}, dos: {npoints: 1000}, pdos: {energy_window: [-5.0, 5.0]}, } result PpWorkflow.submit(builder)4.2 常用参数说明参数名所属模块类型默认值说明parent_calc全局orm.Node无已完成的 pw.x 计算节点后处理的数据来源bands后处理开关boolFalse是否执行能带后处理dos后处理开关boolFalse是否执行总态密度计算pdos后处理开关boolFalse是否执行投影态密度计算work_function后处理开关boolFalse是否执行功函数计算charge_density后处理开关boolFalse是否执行电荷密度分析npointsdosint1000态密度能量网格点数energy_windowpdoslist[-5, 5]投影态密度的能量窗口eVprojectionsbandsboolFalse是否生成投影能带fat bandkpoint_pathbandslist自动高对称路径格式为 [[G, M], [M, K]]smearingdosfloat0.01态密度展宽Ryoutput_format全局strhtml报告输出格式支持 html、json、png4.3 独立工具函数除了工作流aiidalab-qe-pp 还提供了一系列可直接调用的工具函数适合在 Jupyter Notebook 中交互式使用from aiidalab_qe_pp.tools import ( extract_bands, extract_dos, extract_pdos, compute_work_function, extract_charge_density, ) 提取能带数据 bands_data extract_bands(parent_calcnode) 计算功函数 wf compute_work_function(parent_calcnode, vacuum_axis2)5. 9 个实际应用案例5.1 案例一金属铜的能带结构后处理本案例演示如何对金属铜的 pw.x 计算结果执行能带后处理并生成投影能带图。from aiidalab_qe_pp.workflows import PpWorkflow from aiida import orm builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(101) # 铜的 pw.x 计算节点 builder.post_processing {bands: True} builder.parameters { bands: { projections: True, kpoint_path: [[G, X], [X, W], [W, L]], } } result PpWorkflow.submit(builder)运行后工作流会自动调用 bands.x 提取能带并生成包含投影权重的 HTML 能带图。结果存入 AiiDA 数据库可通过result.outputs.bands_data访问。5.2 案例二硅的态密度与投影态密度分析本案例演示对硅体系同时计算总态密度和投影态密度并按轨道类型分解。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(102) builder.post_processing {dos: True, pdos: True} builder.parameters { dos: {npoints: 2000, smearing: 0.005}, pdos: {energy_window: [-8.0, 8.0]}, } result PpWorkflow.submit(builder)工作流会依次调用 dos.x 和 projwfc.x生成总态密度曲线和 s、p、d 分波态密度并输出到同一个 HTML 报告中。5.3 案例三金属表面功函数计算本案例演示如何计算 Al(100) 表面的功函数。需要先完成一个包含真空层的 slab 模型 pw.x 计算。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(103) # Al(100) slab 计算 builder.post_processing {work_function: True} builder.parameters { work_function: { vacuum_axis: 2, # 真空层沿 z 轴 planar_average: True, } } result PpWorkflow.submit(builder)工作流会计算沿真空方向的平面平均静电势自动定位费米能级和真空能级输出功函数数值和静电势曲线图。5.4 案例四二维材料 MoS2 的能带对齐分析本案例演示对单层 MoS2 进行能带结构提取并自动识别带隙和带边位置。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(104) builder.post_processing {bands: True} builder.parameters { bands: { band_gap: True, band_edges: True, kpoint_path: [[G, M], [M, K], [K, G]], } } result PpWorkflow.submit(builder)工作流会自动判断体系为半导体计算带隙大小并标记价带顶和导带底对应的 k 点位置。5.5 案例五异质结界面电荷密度差分分析本案例演示对异质结体系计算差分电荷密度分析界面电荷转移。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(105) # 异质结计算 builder.post_processing {charge_density: True} builder.parameters { charge_density: { difference: True, slice_axis: 2, isosurface_value: 0.003, } } result PpWorkflow.submit(builder)工作流会计算总电荷密度与各组分电荷密度之差生成二维切片图和三维等值面图直观展示界面电荷重新分布。5.6 案例六磁性体系 Fe 的投影能带分析本案例演示对磁性金属 Fe 进行自旋分辨的投影能带分析。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(106) builder.post_processing {bands: True} builder.parameters { bands: { projections: True, spin_polarized: True, kpoint_path: [[G, H], [H, N], [N, G]], } } result PpWorkflow.submit(builder)工作流会分别提取自旋向上和自旋向下的能带并按 d 轨道投影生成自旋分辨的 fat band 图。5.7 案例七半导体 GaAs 的态密度与带隙联合分析本案例演示将态密度计算与带隙分析结合全面评估 GaAs 的电子结构。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(107) builder.post_processing {dos: True, pdos: True, bands: True} builder.parameters { dos: {npoints: 3000}, pdos: {energy_window: [-6.0, 6.0]}, bands: {band_gap: True}, } result PpWorkflow.submit(builder)工作流会生成能带图、总态密度图和分波态密度图并在报告中统一标注带隙数值方便交叉验证。5.8 案例八钙钛矿 SrTiO3 的轨道分辨态密度分析本案例演示对 SrTiO3 进行元素和轨道双重投影的态密度分析。builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc orm.load_node(108) builder.post_processing {pdos: True} builder.parameters { pdos: { energy_window: [-10.0, 10.0], project_by_element: [Sr, Ti, O], project_by_orbital: [s, p, d], } } result PpWorkflow.submit(builder)工作流会生成按元素和轨道分解的态密度图清晰展示 Sr-d、Ti-d、O-p 等轨道在费米能级附近的贡献。5.9 案例九批量处理多个结构的能带与态密度本案例演示如何对一组结构批量执行能带和态密度后处理适合材料筛选场景。from aiida import orm parent_nodes orm.QueryBuilder().append( orm.Node, filters{id: {in: [201, 202, 203, 204]}} ).all(flatTrue) for node in parent_nodes: builder PpWorkflow.get_builder() builder.qe_app_code orm.load_code(qe-6.7localhost) builder.parent_calc node builder.post_processing {bands: True, dos: True} result PpWorkflow.submit(builder) print(fSubmitted workflow for node {node.pk})批量提交后可以通过verdi workflow list监控所有后处理任务的运行状态结果统一存入数据库便于后续对比分析。《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑