🔄 格式转换
格式转换模块用于在常见原子模拟文件格式之间转换,同时提供 group 标签、权重、帧提取等元数据处理功能。
功能简介
本模块在计算材料科学中常用的结构和轨迹文件格式之间进行转换。支持 VASP、LAMMPS、CP2K、ABACUS、CIF、ASE 轨迹和 extxyz 格式。还提供添加 group 标签、权重、提取帧和扩胞等工具。
准备工作
脚本位置: Scripts/format_conversion/
确保已安装 GPUMDkit。安装说明请参见快速入门。
支持的格式
- VASP:
POSCAR、CONTCAR、OUTCAR、XDATCAR - LAMMPS:data 文件和 dump 轨迹
- CP2K:输出 log、坐标、力和晶胞文件
- ABACUS:SCF/MD 输出
- CIF:晶体结构文件
- ASE trajectory:
.traj - extxyz:GPUMD 和 NEP 常用的结构格式
交互模式
打开 GPUMDkit:
选择:
菜单如下:
+-------------------------------------------------------------+
| FORMAT CONVERSION TOOLS |
+-------------------------------------------------------------+
| 101) VASP to extxyz 106) Add group labels |
| 102) MTP to extxyz 107) Add weight to extxyz |
| 103) CP2K to extxyz 108) Extract frame extxyz |
| 104) ABACUS to extxyz 109) Clean XYZ info |
| 105) extxyz to POSCAR 110) Replicate structure |
+-------------------------------------------------------------+
| out2exyz) OUTCAR to extxyz xdat2exyz) XDATCAR to extxyz |
| pos2exyz) POSCAR to extxyz pos2lmp) POSCAR to LAMMPS |
| cif2pos) CIF to POSCAR lmp2exyz) LAMMPS to extxyz |
| cif2exyz) CIF to extxyz traj2exyz) ASE traj to extxyz|
+-------------------------------------------------------------+
| 000) Return to main menu |
+-------------------------------------------------------------+
Input the function number or converter keyword:
每个入口的作用
| 入口 | 调用脚本 | 功能 | 适用场景 |
|---|---|---|---|
101 |
out2xyz.sh |
VASP OUTCAR 转 extxyz,shell 版本 | 批量转换 VASP 计算目录 |
102 |
mtp2xyz.py |
MTP cfg 转 extxyz | 转换 MTP 数据 |
103 |
cp2k_log2xyz.py / cp2k2xyz.py |
CP2K 转 extxyz | 可选择 log/inp 路线或 pos/frc/cell 路线 |
104 |
abacus2xyz_scf.sh / abacus2xyz_md.sh |
ABACUS 转 extxyz | 转换 ABACUS SCF 或 MD 输出 |
105 |
exyz2pos.py |
extxyz 转 POSCAR | 将 extxyz 每一帧写成 POSCAR |
106 |
add_groups.py |
添加 group 标签 | 为 GPUMD 相关流程添加原子分组标签 |
107 |
add_weight.py |
添加权重 | 修改训练集结构权重 |
108 |
get_frame.py |
提取单帧 | 从 extxyz 轨迹导出某一帧 |
109 |
clean_xyz.py |
清理 XYZ 信息 | 删除多余 extxyz 属性 |
110 |
replicate.py |
扩胞 | 按倍数或目标原子数扩胞 |
out2exyz |
out2exyz.py |
OUTCAR 转 extxyz,Python 版本 | VASP OUTCAR 转换的另一个入口 |
pos2exyz |
pos2exyz.py |
POSCAR 转 extxyz | 转换单个结构 |
cif2pos |
cif2pos.py |
CIF 转 POSCAR | 从 CIF 准备 VASP 输入 |
cif2exyz |
cif2exyz.py |
CIF 转 extxyz | 从 CIF 准备 GPUMDkit 输入 |
xdat2exyz |
xdatcar2exyz.py |
XDATCAR 转 extxyz | 转换 VASP MD 轨迹 |
pos2lmp |
pos2lmp.py |
POSCAR 转 LAMMPS data | 准备 LAMMPS 输入 |
lmp2exyz |
lmp2exyz.py |
LAMMPS dump 转 extxyz | 转换 LAMMPS 轨迹 |
traj2exyz |
traj2exyz.py |
ASE traj 转 extxyz | 转换 ASE 轨迹 |
快速命令表
| 来源 | 目标 | 命令 |
|---|---|---|
| OUTCAR 目录 | extxyz | gpumdkit.sh -out2xyz <dir> |
| OUTCAR 目录 | extxyz | gpumdkit.sh -out2exyz <dir> |
| POSCAR | extxyz | gpumdkit.sh -pos2exyz POSCAR model.xyz |
| extxyz | POSCAR 文件 | gpumdkit.sh -exyz2pos train.xyz |
| XDATCAR | extxyz | gpumdkit.sh -xdat2exyz XDATCAR dump.xyz |
| POSCAR | LAMMPS data | gpumdkit.sh -pos2lmp POSCAR lammps.data |
| LAMMPS dump | extxyz | gpumdkit.sh -lmp2exyz dump.lammpstrj Li Y Cl |
| CIF | POSCAR | gpumdkit.sh -cif2pos input.cif POSCAR.vasp |
| CIF | extxyz | gpumdkit.sh -cif2exyz input.cif model.xyz |
| ASE traj | extxyz | gpumdkit.sh -traj2exyz input.traj output.xyz |
| extxyz | clean extxyz | gpumdkit.sh -clean_xyz input.xyz clean.xyz |
常见例子
转换 VASP 结果
功能: 在目录中搜索 VASP OUTCAR 文件,并将它们转换为单个 extxyz 文件,用于 NEP 训练或分析。
命令行模式:
也可以使用 Python 版本:
交互模式: 在格式转换菜单中选择 101,会看到:
>-------------------------------------------------<
| Calling the script in Scripts/format_conversion |
| Script: out2xyz.sh |
| Developer: Yanzhou WANG (yanzhowang@gmail.com) |
>-------------------------------------------------<
Input the directory containing OUTCARs
Example: ./
------------>>
输出: 包含转换后结构的 extxyz 文件,可用于 NEP 训练或进一步分析。
添加 group 标签
功能: 为结构文件添加原子 group 标签。一些 GPUMD 相关流程需要 group 标签,例如特定元素的 MSD 或扩散性质计算。
命令行模式:
该命令读取输入结构,并写出带 group 信息的 extxyz 文件。
交互模式: 在格式转换菜单中选择 106,会看到:
>-------------------------------------------------<
| Calling the script in Scripts/format_conversion |
| Script: add_groups.py |
| Developer: Zihan YAN (yanzihan@westlake.edu.cn) |
>-------------------------------------------------<
Input <POSCAR> <element1> <element2> ...
Example: POSCAR Li Y Cl
------------>>
输出: 添加了 group 标签的 extxyz 文件。
常用脚本说明
POSCAR 转 extxyz
适合把单个 VASP 结构转成 extxyz 文件。
交互模式关键词:pos2exyz
extxyz 转 POSCAR
会将 extxyz 中所有帧转换成 POSCAR_*.vasp 文件。
交互模式入口:105
LAMMPS dump 转 extxyz
元素顺序必须对应 LAMMPS 中的 atom type ID。例如 type 1 是 Li、type 2 是 Y、type 3 是 Cl,则输入 Li Y Cl。
交互模式关键词:lmp2exyz
CIF 转换
如果后续需要 VASP 计算,使用 -cif2pos;如果后续要进入 GPUMDkit 分析,使用 -cif2exyz。
添加权重
用于给训练集结构添加或修改权重。
扩胞
第一种按晶胞倍数扩胞,第二种按目标原子数自动选择扩胞方式。
提取单帧
从 extxyz 轨迹中提取第 1000 帧(索引从 0 开始)。
拆分多帧 extxyz
split_single_xyz.py 将多帧 extxyz 文件拆分为单帧文件。
生成 model_0.xyz、model_1.xyz、... 等单帧文件。
MTP 转换
将 MTP .cfg 格式转换为 extxyz:
交互提示:
ABACUS 转换
将 ABACUS 输出转换为 extxyz:
菜单提供两个选项:
- SCF 输出(
running_scf.log) - MD 输出(
running_md.log)
常见问题
| 问题 | 建议 |
|---|---|
| LAMMPS 转换后元素不对 | 检查 dump 文件后的元素顺序 |
| extxyz 元数据太多 | 使用 -clean_xyz input.xyz clean.xyz |
| 转换后的结构看起来偏移 | 检查源文件中的周期性边界条件/晶胞信息 |
| 提取帧不对 | 注意帧索引通常从 0 开始 |
说明
如果某个转换脚本缺少所需 Python 包,运行该功能时 Python 会给出相应提示。