自动训练集生成模块
========================================
概述
----
自动化训练集生成模块是 PhyMLP Kit 的核心功能模块之一,提供了一套完整的、自动化的机器学习势训练集构建流程。该模块通过结合材料数据库、第一性原理计算和结构生成算法,实现了从零开始构建高质量训练集的完整工作流。
主要特点
--------
- **全自动流程**:从结构获取到数据集生成的完整自动化流程
- **多数据源支持**:支持从 Materials Project 数据库获取初始结构
- **多尺度采样**:包含晶格形变、原子微扰等多种结构采样方法
- **VASP集成**:自动设置和提交第一性原理计算任务
- **智能后处理**:自动处理计算结果并生成训练集
核心功能
--------
从 Materials Project 获取结构
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit from_mp_structures --input_file config.yaml
从 Materials Project 数据库获取初始晶体结构,支持:
- 通过材料ID(如 mp-12345)或化学式(如 Ni3Al)检索
- 自动下载晶体结构并保存为 POSCAR 格式
- 支持多结构批量下载
结构形变生成
~~~~~~~~~~~
.. code-block:: bash
phymlp-kit deform_structures --input_file config.yaml
生成晶格形变结构,用于采样能量-体积(E-V)曲线:
- Birch-Murnaghan 状态方程驱动的体积变化
- 各向同性/各向异性形变
- 自定义形变范围和步长
原子位置微扰
~~~~~~~~~~~
.. code-block:: bash
phymlp-kit perturb_structures --input_file config.yaml
生成原子位置微扰结构,用于采样构型空间:
- 随机原子位移
- 温度相关的热扰动
- 自定义扰动幅度和方向
VASP 计算设置
~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit setup_vasp --input_file config.yaml
自动设置第一性原理计算环境:
- 生成 INCAR、KPOINTS、POTCAR 等输入文件
- 根据结构自动选择合适的计算参数
- 支持不同的泛函和赝势
VASP 作业提交
~~~~~~~~~~~
.. code-block:: bash
phymlp-kit submit_vasp --input_file config.yaml
自动提交 VASP 计算任务:
- 支持 SLURM、PBS 等作业调度系统
- 批量作业提交和管理
- 作业状态监控和错误处理
POTCAR 生成测试
~~~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit test_potcar --poscar POSCAR --input_file config.yaml
测试 POTCAR 文件生成:
- 验证赝势文件可用性
- 元素匹配检查
- 赝势版本兼容性验证
形变结果处理
~~~~~~~~~~~
.. code-block:: bash
phymlp-kit process_deform --input_file config.yaml
处理形变计算的结构和能量:
- 提取 OUTCAR 中的能量和应力信息
- 结构弛豫结果分析
- 能量-体积数据整理
Birch-Murnaghan 拟合
~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit birch_murnaghan --input_file config.yaml
执行 Birch-Murnaghan 状态方程拟合:
- 从能量-体积数据拟合状态方程参数
- 计算体模量、平衡体积等物理量
- 生成拟合曲线和数据报告
实验 P-V 数据拟合
~~~~~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit exp_pv_structures --input_file config.yaml
基于实验 P-V 数据生成训练结构:
- 导入实验压力-体积数据
- 插值生成对应体积的结构
- 支持多种实验数据格式
数据转 POSCAR
~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit dump_to_poscar --input_file config.yaml
将各类数据转换为 POSCAR 格式:
- 支持多种中间格式转换
- 保持晶体对称性信息
- 原子类型和坐标格式标准化
Extxyz 数据集生成
~~~~~~~~~~~~~~~~
.. code-block:: bash
phymlp-kit generate_extxyz --input_file config.yaml
生成最终的训练数据集:
- 整合所有计算结构
- 转换为 PhyMLP 兼容的 extxyz 格式
- 包含能量、力、应力等信息
完整工作流
~~~~~~~~~~
.. code-block:: bash
phymlp-kit full_workflow --input_file config.yaml
执行从结构获取到数据集生成的完整流程:
- 顺序执行所有步骤
- 支持步骤跳过和断点续做
- 进度监控和错误恢复
配置系统
--------
所有功能都通过 YAML 配置文件控制,配置文件包含以下主要部分:
.. code-block:: yaml
# 示例配置文件结构
materials_project:
api_key: "your_mp_api_key"
materials: ["mp-12345", "Ni3Al"]
structure_generation:
deformation:
volume_range: [0.85, 1.15]
num_structures: 10
perturbation:
displacement: 0.02
num_perturbations: 5
vasp_calculation:
functional: "PBE"
encut: 520
kpoints: [4, 4, 4]
convergence:
ediff: 1e-6
ediffg: -0.02
data_processing:
output_format: "extxyz"
include_forces: true
include_stress: true
工作流程
--------
典型的自动化训练集生成流程如下:
.. mermaid::
graph TD
A[开始] --> B[从MP获取结构];
B --> C[生成形变结构];
B --> D[生成微扰结构];
C --> E[设置VASP计算];
D --> E;
E --> F[提交VASP作业];
F --> G[等待计算完成];
G --> H[提取计算结果];
H --> I[数据处理];
I --> J[生成训练集];
J --> K[完成];
依赖关系
--------
- **Python包**:
- pymatgen: 材料结构处理
- numpy, scipy: 数值计算和拟合
- pyyaml: 配置文件解析
- **外部软件**:
- VASP: 第一性原理计算
- PhyMLP: 机器学习势训练
- **服务**:
- Materials Project API: 材料数据库访问
使用示例
--------
基本使用
~~~~~~~~
.. code-block:: bash
# 1. 准备配置文件
cp auto_generate_set/example_config.yaml my_config.yaml
# 2. 编辑配置文件
# 修改 materials_project, structure_generation 等部分
# 3. 执行完整工作流
phymlp-kit full_workflow --input_file my_config.yaml
分步执行
~~~~~~~~
.. code-block:: bash
# 分步执行以获得更多控制
phymlp-kit from_mp_structures --input_file config.yaml
phymlp-kit deform_structures --input_file config.yaml
phymlp-kit setup_vasp --input_file config.yaml
phymlp-kit submit_vasp --input_file config.yaml
# 等待VASP计算完成...
phymlp-kit process_deform --input_file config.yaml
phymlp-kit generate_extxyz --input_file config.yaml
常见问题
--------
Q1: 如何获取 Materials Project API 密钥?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 访问 https://materialsproject.org
2. 注册账户并登录
3. 在个人设置中生成 API 密钥
4. 在配置文件中添加 ``api_key: "your_key"``
Q2: VASP 计算失败如何处理?
~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 检查 ``vasp_calculation`` 配置参数
2. 验证 POTCAR 文件路径和内容
3. 查看 VASP 输出文件(OUTCAR, OSZICAR)
4. 调整收敛标准和计算参数
Q3: 如何自定义结构生成策略?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
修改 ``structure_generation`` 部分:
- ``deformation.volume_range``: 体积变化范围
- ``deformation.num_structures``: 形变结构数量
- ``perturbation.displacement``: 微扰幅度
- ``perturbation.num_perturbations``: 微扰数量
进阶使用
--------
自定义插件
~~~~~~~~~~
可通过继承基类实现自定义结构生成器:
.. code-block:: python
from phymlp.auto_generate_set.base import StructureGenerator
class MyGenerator(StructureGenerator):
def generate_structures(self, base_structure):
# 自定义结构生成逻辑
pass
批量处理
~~~~~~~~
支持多个材料的并行处理:
.. code-block:: yaml
materials_project:
materials: ["mp-12345", "mp-67890", "Ni3Al", "TiAl"]
parallel:
enabled: true
max_workers: 4
相关文档
--------
- :doc:`/phymlp/converters` - 数据格式转换工具
- :doc:`/phymlp/tools/split_set` - 数据集分割工具
- :doc:`/phymlp/train_and_validation/core` - 训练和验证模块
- `Materials Project 文档 `_
- `VASP 文档 `_