extxyz数据集生成模块
本模块用于从VASP计算结果和Birch-Murnaghan拟合结果生成extxyz格式数据集。
模块概述
该模块提供了一组函数,用于:
从VASP的OUTCAR文件中提取结构信息
从Birch-Murnaghan拟合结果生成扩展结构
从fit_a_P.data数据生成晶格常数-压力对应结构
合并不同来源的结构数据
主要函数说明
find_outcar_files(search_dir, recursive=True)
在目录树中查找所有的OUTCAR文件。
参数:
- search_dir: 搜索目录路径
- recursive: 是否递归搜索子目录(默认True)
返回: - OUTCAR文件路径列表
extract_structures_from_outcar(outcar_file, output_file, step=10)
从OUTCAR文件中提取结构并保存为extxyz格式。
参数:
- outcar_file: OUTCAR文件路径
- output_file: 输出extxyz文件路径
- step: 提取步长(默认10,即每10个结构提取一个)
返回: - 提取的结构总数
generate_vasp_extxyz(config)
从VASP计算结果生成extxyz文件。
参数:
- config: 配置字典,包含VASP相关设置
返回: - 提取的结构总数
load_birch_murnaghan_fitting_results(bm_dir, recursive=False)
加载Birch-Murnaghan拟合结果。
参数:
- bm_dir: Birch-Murnaghan拟合目录
- recursive: 是否递归搜索子目录(默认False)
返回: - 拟合结果信息字典
extract_structures_from_outcar_scale(outcar_scale_dir, output_file, step=10)
从OUTCAR_scale目录中的OUTCAR文件提取结构。
参数:
- outcar_scale_dir: OUTCAR_scale目录路径
- output_file: 输出文件路径
- step: 提取步长(默认10)
返回: - 提取的结构总数
find_reference_structure(outcar_scale_dir)
在OUTCAR_scale目录中查找参考结构。
参数:
- outcar_scale_dir: OUTCAR_scale目录路径
返回: - 参考原子结构(ASE Atoms对象)
filter_data_by_pressure(data_file, pressure_range)
根据压力范围筛选数据。
参数:
- data_file: 数据文件路径
- pressure_range: 压力范围 [最小值, 最大值]
返回: - 筛选后的数据(DataFrame)
calculate_pressure_from_birch_murnaghan(params, volume)
根据Birch-Murnaghan方程计算压力。
参数:
- params: [E0, V0, B0, B1] 拟合参数
- volume: 体积
返回: - 压力值(GPa)
generate_structures_from_fitting_curve(reference_atoms, fitted_data, output_file, structure_name, n_structures=50, pressure_range=None, original_data=None, scaling_factors_range=None, bm_params=None)
根据拟合曲线数据生成扩展结构。
参数:
- reference_atoms: 参考原子结构
- fitted_data: 拟合数据DataFrame
- output_file: 输出文件路径
- structure_name: 结构名称
- n_structures: 生成的结构数量(默认50)
- pressure_range: 压力范围筛选
- original_data: 原始数据用于压力筛选
- scaling_factors_range: 缩放因子范围
- bm_params: Birch-Murnaghan拟合参数
返回: - 生成的结构总数
generate_birch_murnaghan_extxyz(config)
从Birch-Murnaghan拟合结果生成extxyz文件。
参数:
- config: 配置字典
返回: - 生成的结构总数
load_fit_a_P_data(fit_a_P_file)
加载fit_a_P.data文件数据。
参数:
- fit_a_P_file: fit_a_P.data文件路径
返回: - 包含晶格常数、缩放因子和压力的数据(DataFrame)
gpa_to_ev_per_ang3(pressure_gpa)
将压力从GPa转换为eV/ų。
参数:
- pressure_gpa: 压力值(GPa)
返回: - 压力值(eV/ų)
generate_structures_from_fit_a_P(config)
根据fit_a_P.data数据生成extxyz结构。
参数:
- config: 配置字典
返回: - 生成的结构总数
merge_extxyz_files(config)
合并VASP、Birch-Murnaghan和fit_a_P的extxyz文件。
参数:
- config: 配置字典
返回: - 合并后的结构总数
generate_extxyz_dataset(config_path)
生成完整的Extxyz数据集。
参数:
- config_path: 配置文件路径
返回: - 合并后的结构总数
generate_extxyz_from_config(config_path)
从配置文件生成extxyz数据集的入口函数。
参数:
- config_path: 配置文件路径
返回: - 合并后的结构总数
使用示例
# 直接运行脚本
python generate_extxyz_dataset.py --input_file input.yaml
# 或在Python代码中调用
from generate_extxyz_dataset import generate_extxyz_from_config
total_structures = generate_extxyz_from_config('input.yaml')
配置文件说明
需要提供YAML格式的配置文件,包含以下主要部分:
paths: 路径配置vasp: VASP提取配置extxyz_generation: extxyz生成配置birch_murnaghan_fitting: Birch-Murnaghan拟合配置
输出文件
模块将生成以下文件:
Extxyz_set/vasp/vasp.extxyz- VASP提取的结构Extxyz_set/birch_murnaghan_fitting/birch.extxyz- Birch-Murnaghan生成的结构Extxyz_set/fit_a_P/fit_a_P.extxyz- fit_a_P生成的结构Extxyz_set/merged_dataset.extxyz- 合并后的完整数据集