GPUMDkit专题

GPUMDkit 数据去重与分组拆分

保留原始数据,识别重复与冲突标签,再按结构族划分训练和留出集。

更新于 2026-10-28约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载本组输入、真实参考输出与绘图脚本,解压后进入资料包根目录。所有示例在自己的新目录执行,inputs和reference保留。默认bash run.sh all只做工具处理;需要重新训练时才提交compute.sbatch。

先检查,再划分#

本例使用9个真实Si自洽位移结构,并额外复制第一帧,构造10帧的去重练习。第10帧是受控重复,不是新增DFT。原始文件始终保留。

module load gpumdkit/1.5.8
python dataset_audit.py \
  reference/sampling/audit-controls/with-duplicate.xyz work/clean-family

这是资料包附带的ASE辅助脚本。它核对能量、力和可用virial,按相同原子顺序的元素、晶胞、PBC和坐标识别重复;坐标/晶胞保留10位小数参与指纹。它不做原子重排、晶体对称等价或周期平移等价识别。

输出:

work/clean-family/unique.xyz
work/clean-family/train.xyz
work/clean-family/test.xyz
work/clean-family/audit.json

10帧保留9个唯一几何,最终6帧训练、3帧留出。若同一几何对应不同E/F/virial,脚本会要求先核查来源,不会默默丢掉一份标签。

为什么按结构族分组#

本组正负位移来自同一光学模分支。按位移绝对值把±0.04、±0.08、±0.16Å放入训练;0和±0.12Å放入留出。这样同一±位移族不会分到两边。

这仍是同一小晶胞、同一位移分支的插值示范,不能声称对熔体、表面、缺陷或不同材料具有独立泛化能力。实际MD数据还应按独立轨迹、温度段或结构族组织拆分。

10帧受控重复数据清为9帧;按位移族分成6训练和3留出,原始输入保留

GPUMDkit原生三种拆分方法#

在新目录放入inputs/sampling/all.xyz,调用原生脚本:

mkdir -p work/split-random
cp inputs/sampling/all.xyz work/split-random/
cd work/split-random
python "$GPUMDkit_path/Scripts/sample_structures/split_train_test.py" all.xyz

依次输入:

3
2
20261028

分别是3个测试帧、随机方法2、固定随机种子。输出all_train.xyz与all_test.xyz。本次测试索引为0、1、4,两次同种子运行一致。

方法 第一个输入 第二个输入 后续输入 本次测试帧ID
均匀 0.3333333333333333 1 无 0、4、8
随机 3 2 20261028 0、1、4
FPS 3 3 nep.txt 0、4、7

FPS需要把配套inputs/sampling/nep.txt也复制进新目录。三种方法都得到6+3帧,帧ID不重叠且合起来覆盖原始9帧。随机/均匀/FPS按帧拆分不等于按轨迹或结构族分组;需要防止相邻帧泄漏时,用上面的分组方式。

距离、范围和异常点继续怎么查#

gpumdkit.sh -min_dist_pbc all.xyz
gpumdkit.sh -range all.xyz force
gpumdkit.sh -range all.xyz virial

距离和标签范围能揭示明显异常,但阈值随材料而变。预测后再用逐帧误差与逐元素统计定位误差大的结构。筛选时同时保留被排除的帧和索引,不能只留下看起来容易拟合的数据。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗