Skip to content

📊 绘图脚本

绘图模块包含一系列 Python 脚本,用于可视化 GPUMD、NEP 和 GPUMDkit 计算器产生的数据。所有图表均可交互显示或保存为高分辨率 PNG 文件。

脚本位置: Scripts/plt_scripts/

快速入口

gpumdkit.sh -plt              # 显示所有绘图选项
gpumdkit.sh -plt <type>       # 生成指定图表
gpumdkit.sh -plt <type> save  # 保存为 PNG
gpumdkit.sh -plt <type> -h    # 显示特定图表的帮助

运行 gpumdkit.sh -plt 会显示绘图命令菜单:

+-----------------------------------------------------------------------------------------------+
|                     GPUMDkit <version> PLOT & VISUALIZATION TOOLS              |
+-----------------------------------------------------------------------------------------------+
|  Usage: gpumdkit.sh -plt <type>                        Help: gpumdkit.sh -plt <type> -h       |
+-----------------------------------------------------------------------------------------------+
|                                    NEP Training & Evaluation                                  |
+-----------------------------------------------------------------------------------------------+
|  train          - NEP training results           prediction     - NEP prediction results      |
|  train_test     - NEP train and test results     parity_density - Parity density plot         |
|  train_density  - Training results density plot  restart        - Parameters in nep.restart   |
|  charge         - Charge distribution            born_charge    - Born effective charges      |
|  dimer          - Dimer energy/force curve       force_errors   - Force errors                |
|  des            - Descriptors                    lr             - Learning rate for gnep      |
+-----------------------------------------------------------------------------------------------+
|                                     Diffusion & Transport                                     |
+-----------------------------------------------------------------------------------------------+
|  msd            - Mean square displacement       msd_conv       - MSD convergence             |
|  msd_all        - MSD for all species            sdc            - Self diffusion coefficient  |
|  msd_sdc        - MSD and SDC together           sigma          - Arrhenius ionic conductivity|
|  D              - Arrhenius diffusivity          sigma_xyz      - Directional Arrhenius sigma |
|  D_xyz          - Directional Arrhenius D                                                     |
|  doas           - Density of atomistic states                                                 |
+-----------------------------------------------------------------------------------------------+
|                                    MD & Structural Analysis                                   |
+-----------------------------------------------------------------------------------------------+
|  thermo         - thermo info in thermo.out      thermo2/3      - Thermo in different styles  |
|  rdf            - Radial distribution function   rdf_pmf        - Potential of mean force     |
|  vac            - Velocity autocorrelation       cohesive       - Cohesive energy curve       |
|  net_force      - Net force distribution         plane-grid     - Displacement plane grid     |
+-----------------------------------------------------------------------------------------------+
|                                        Heat Transport                                         |
+-----------------------------------------------------------------------------------------------+
|  emd            - EMD results                    nemd           - NEMD results                |
|  hnemd          - HNEMD results                  viscosity      - Viscosity                   |
+-----------------------------------------------------------------------------------------------+
|                                          Phonons                                              |
+-----------------------------------------------------------------------------------------------+
|  pdos           - VAC and PDOS                                                                |
+-----------------------------------------------------------------------------------------------+

NEP 训练与预测

plt_train.py

可视化 NEP 训练过程,包括 loss 曲线、RMSE 演化,以及能量/力/virial 的 DFT vs NEP parity plot。

输入文件: loss.outenergy_train.outforce_train.outvirial_train.out

gpumdkit.sh -plt train
NEP training results

plt_prediction.py

可视化测试集上的 NEP 预测结果。

输入文件: energy_test.outforce_test.outvirial_test.out

gpumdkit.sh -plt prediction
gpumdkit.sh -plt test         # 替代命令
NEP prediction results

plt_train_test.py

将训练集和测试集的 parity plot 合并显示。

输入文件: energy_train.outforce_train.outvirial_train.outenergy_test.outforce_test.outvirial_test.out

gpumdkit.sh -plt train_test
NEP train and test comparison

plt_parity_density.py

生成基于密度的 parity plot,适用于大数据集(散点图过于密集时更易阅读)。

输入文件: energy_train.outforce_train.outvirial_train.out

gpumdkit.sh -plt parity_density
Parity density plot

plt_force_errors.py

参考 Liu et al. 的方法绘制力误差评估指标。

输入文件: force_train.out

显示指标: - 力大小误差 (delta_F) - 力角度误差 (delta_theta) - 误差分布

gpumdkit.sh -plt force_errors
Force error analysis

plt_learning_rate.py

可视化 gnep 训练过程中的学习率变化。

输入文件: loss.out

注意: 仅适用于 gnep 训练过程。

gpumdkit.sh -plt lr

plt_nep_restart.py

可视化 nep.restart 文件中存储的参数。

输入文件: nep.restart

gpumdkit.sh -plt restart
NEP restart parameters

plt_charge.py

绘制 qNEP 模型的电荷分布。

输入文件: charge_train.out

重要提示: 确保训练集和电荷输出的原子排序一致。建议使用全 batch 训练或先运行预测步骤。

gpumdkit.sh -plt charge
Charge distribution

plt_born_charge.py

为训练集和测试集创建 Born 有效电荷 (BEC) 的 parity plot。全零参考 BEC 的结构会被过滤。

输入文件: bec_train.outbec_test.out

gpumdkit.sh -plt born_charge
gpumdkit.sh -plt bec          # 替代命令
Born effective charge parity plot

热力学量

plt_thermo.py

综合可视化热力学性质的主脚本。

输入文件: thermo.out

gpumdkit.sh -plt thermo
Thermo plot

plt_thermo2.py & plt_thermo3.py

不同风格的热力学量可视化。

输入文件: thermo.out

gpumdkit.sh -plt thermo2
gpumdkit.sh -plt thermo3

扩散和离子输运

plt_msd.py

绘制各方向的均方位移 (MSD)。

输入文件: msd.out

gpumdkit.sh -plt msd
Mean square displacement

plt_msd_all.py

当 GPUMD 中使用 all_groups 时,分别绘制每种原子的 MSD。

输入文件: msd.out(需要使用 all_groups 选项计算)

要求: run.in 中的 compute_msd 命令必须使用 all_groups

gpumdkit.sh -plt msd_all msd.out Li P S
MSD for all species

plt_msd_convergence_check.py

检查不同时间窗口下 MSD 计算的收敛性。

输入文件: msd_step*.out(需要在 compute_msd 中使用 save_every 选项)

要求:compute_msd 命令中使用 save_every

用途: 验证 MSD 是否已充分收敛以准确计算扩散系数。

gpumdkit.sh -plt msd_conv
MSD convergence

plt_sdc.py

绘制自扩散系数 (SDC) 随时间的变化。

输入文件: msd.out

gpumdkit.sh -plt sdc
Self-diffusion coefficient

plt_arrhenius_d.py

创建 Arrhenius 扩散系数图(log10 D vs 1000/T)。

输入文件: *K/msd.out(每个温度子目录下的 msd.out

gpumdkit.sh -plt arrhenius_d
gpumdkit.sh -plt D             # 替代命令

输出示例:

T: 300K, D_total: 1.001e-07 cm2/s
T: 350K, D_total: 4.184e-07 cm2/s
T: 400K, D_total: 1.027e-06 cm2/s
Ea: 0.230 eV
Arrhenius diffusivity

plt_arrhenius_sigma.py

创建 Arrhenius 离子电导率图(ln(σ·T) vs 1000/T)。

输入文件: *K/{model.xyz, run.in, thermo.out, msd.out}(每个温度子目录)

gpumdkit.sh -plt arrhenius_sigma
gpumdkit.sh -plt sigma         # 替代命令
Arrhenius ionic conductivity

热输运

plt_emd.py

分析并绘制平衡分子动力学 (EMD) 热导率。

输入文件: GPUMD 的 EMD 输出文件

gpumdkit.sh -plt emd x        # x 方向
EMD thermal conductivity

plt_nemd.py

可视化非平衡分子动力学 (NEMD) 热输运性质。

输入文件: GPUMD 的 NEMD 输出文件

参数说明:

参数 说明
real_length 传热区实际长度(nm),设为 Auto 可自动计算
scale_eff_size 有效截面积缩放因子(默认:1)。三维体相用 1;含真空层的低维体系用 S_box / S_eff
cutoff_freq SHC 计算的截止频率(THz,默认:60)
save 可选,保存图片为 nemd.png

注意: 如果没有 SHC 数据,使用 save 时请将 scale_eff_sizecutoff_freq 设为任意占位数字。

gpumdkit.sh -plt nemd [real_length] [scale_eff_size] [cutoff_freq] [save]
NEMD results

plt_hnemd.py

绘制均匀非平衡分子动力学 (HNEMD) 结果。

输入文件: GPUMD 的 HNEMD 输出文件

参数说明:

参数 说明
scale_eff_size 有效截面积缩放因子(默认:1)
cutoff_freq SHC 计算的截止频率(THz,默认:60)
save 可选,保存图片为 hnemd.png

注意: 如果没有 SHC 数据,使用 save 时请将 scale_eff_sizecutoff_freq 设为任意占位数字。

gpumdkit.sh -plt hnemd [scale_eff_size] [cutoff_freq] [save]
HNEMD results

结构分析

plt_rdf.py

绘制径向分布函数 (RDF),展示原子对关联。

输入文件: rdf.out

gpumdkit.sh -plt rdf               # 显示所有 RDF 对
gpumdkit.sh -plt rdf <column>      # 显示特定对

完整 RDF 输出:

Complete RDF

单对 RDF:

Single RDF

plt_rdf_pmf.py

绘制 RDF 与平均力势 (PMF) 的组合图。

输入文件: rdf.out

gpumdkit.sh -plt rdf_pmf

plt_vac.py

绘制速度自相关函数 (VAC)。可用于分析声子性质和原子动力学。

输入文件: sdc.out(绘图脚本会从该文件中读取 VAC 相关列)

输出: 交互式图表或 vac.png(使用 save 选项时)

gpumdkit.sh -plt vac

plt_cohesive.py

cohesive.out 绘制内聚能曲线。可用于分析晶格稳定性和平衡晶格常数。

输入文件: cohesive.out(各向同性缩放因子 vs 内聚能)

输出: 交互式图表或 cohesive.png(使用 save 选项时)

gpumdkit.sh -plt cohesive

plt_net_force.py

绘制结构上的净力分布,可用于识别问题构型。

输入文件: train.xyz(extxyz 格式)

gpumdkit.sh -plt net_force train.xyz

参考文献: arXiv:2510.19774

Net force distribution

声子

plt_pdos.py

计算并绘制归一化的速度自相关函数 (VAC)、声子态密度 (PDOS) 和热容 (Cv)。

输入文件: model.xyzrun.indos.outmvac.out

gpumdkit.sh -plt pdos
gpumdkit.sh -plt pdos save
VAC and PDOS

热容输出:

Heat capacity

描述符、Dimer 和其他分析

plt_descriptors.py

使用降维方法(PCA 或 UMAP)可视化高维 NEP 描述符。

输入文件: descriptors.npy(由 gpumdkit.sh -calc des 生成)

方法: - pca — 主成分分析 - umap — 统一流形逼近与投影

# 先计算描述符
gpumdkit.sh -calc des train.xyz descriptors.npy nep.txt Li

# 再可视化
gpumdkit.sh -plt des pca
gpumdkit.sh -plt des umap
UMAP descriptor visualization

plt_dimer.py

绘制二聚体相互作用曲线。将两个原子放入立方盒子(30 Å),使用 NEP 模型计算势能和力随距离的变化。

输入文件: nep.txt

gpumdkit.sh -plt dimer <element1> <element2> <nep_model>
gpumdkit.sh -plt dimer Li Li nep.txt
Dimer NEP curve Dimer comparison

参考文献: J. Chem. Inf. Model. 2026, 66, 3, 1406-1413


plt_doas.py

绘制 Wang et al. 提出的原子态密度 (DOAS)。

输入文件: doas.out(由 gpumdkit.sh -calc doas 计算)

gpumdkit.sh -plt doas <doas.out> <species>
gpumdkit.sh -plt doas doas.out Li
Density of atomistic states

极性材料的 Plane-Grid 绘图

此工作流将位移或极化数据映射到网格上,并绘制选定平面的轮廓。详细用法和实际案例请参见 极性材料分析

依赖:

pip3 install git+https://github.com/MoseyQAQ/ferrodispcalc.git

典型前置步骤:

gpumdkit.sh -calc nlist -i model.xyz -c 4 -n 12 -C Pb Sr -E O
gpumdkit.sh -calc disp -i movie.xyz -n nl-Pb_Sr-O.dat -o displacements.dat
gpumdkit.sh -calc avg-struct -i movie.xyz -l 0.2 -o averaged_structure.xyz

使用方法:

gpumdkit.sh -plt plane-grid -i averaged_structure.xyz -d displacements.dat -e Pb Sr
gpumdkit.sh -plt plane-grid -i averaged_structure.xyz -d displacements.dat -e Pb Sr --select-xy 0 1

快速参考表

命令 输入文件 用途
train loss.out, *_train.out NEP 训练结果
prediction / test *_test.out NEP 预测结果
train_test *_train.out, *_test.out 合并 parity plot
parity_density *_train.out 密度 parity plot
force_errors force_train.out 力误差指标
lr loss.out (gnep) 学习率
restart nep.restart 重启文件参数
charge charge_train.out 电荷分布
born_charge / bec bec_train.out, bec_test.out Born 有效电荷
thermo thermo.out 热力学量
msd msd.out 均方位移
msd_all msd.out (all_groups) 全组分 MSD
msd_conv msd_step*.out MSD 收敛性检查
sdc msd.out 自扩散系数
arrhenius_d / D *K/msd.out Arrhenius 扩散系数
arrhenius_sigma / sigma *K/{model.xyz, run.in, thermo.out, msd.out} Arrhenius 离子电导率
rdf rdf.out 径向分布函数
rdf_pmf rdf.out RDF + 平均力势
vac sdc.out 速度自相关
cohesive cohesive.out 内聚能曲线
net_force train.xyz 净力分布
doas doas.out 原子态密度
des descriptors.npy 描述符 PCA/UMAP
dimer nep.txt 二聚体能量/力曲线
pdos model.xyz, run.in, dos.out, mvac.out VAC 和 PDOS
emd EMD 输出 EMD 热导率
nemd NEMD 输出 NEMD 热输运
hnemd HNEMD 输出 HNEMD 热输运
viscosity 粘度输出 粘度