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