DP-GEN分子能量力标签与导出
查看实际Gaussian输入、四组能量力数据和DeepMD非周期标记,分清MD盒子与分子量子计算。
阅读本篇目录
本篇接反应初始数据工作流。ReaxFF负责生成几何,最终训练标签来自真实Gaussian HF/6-31G(d)单点能量与力。两种方法的能量不能直接混在一个训练标签集中。
1 打开实际输入#
下载同一套反应初始化实例包,解压后进入dpgen-init-reaction。
cat reference-structures/water-01.gjf
%nproc=1
#HF/6-31G(d) Force Geom=PrintInputOrient NoSymm SCF=Tight
Generated by MDDatasetMaker (Author: Jinzhe Zeng)
0 1
O 9.99926 10.00070 10.00030
H 10.03140 9.23255 10.58500
H 9.98029 10.75600 10.58430
0 1是中性单重态;Force要求输出原子受力,SCF=Tight设置电子收敛,NoSymm与Geom=PrintInputOrient便于保持输入坐标方向。本例没有Opt,所以不是几何优化,也不要求这些取样构型的力小于0.02eV/Å。
自己运行后查看对应文件:
head -n 18 02.fp/task.000.000000/input
grep "SCF Done" 02.fp/task.000.000000/output
grep -A 7 "Forces (Hartrees/Bohr)" 02.fp/task.000.000000/output
tail -n 5 02.fp/task.000.000000/output
Gaussian输出能量为Hartree,力为Hartree/Bohr;转换后DeepMD使用eV、Å、eV/Å。力已经是负梯度,不再额外反号。本例换算使用1Hartree=27.211386245988eV,1Bohr=0.529177210903Å。
2 本例实际结果#
bash results.sh
cat reference-data/water-Gaussian-labels.csv
bash plot.sh
| 团簇 | 总能量/eV | 最大原子力/eV/Å |
|---|---|---|
| 1 | -2068.34646239 | 1.021833 |
| 2 | -2068.32829044 | 1.627824 |
| 3 | -2068.33740217 | 1.382229 |
| 4 | -2068.34975606 | 0.868882 |

图中相对能量以这4个样本的最低值为零,绝对总能量保存在表中。4个样本全部是水分子相近构型;该数据集适合了解文件链,不能覆盖水的解离、重组或其他分子反应。
3 读DeepMD导出#
附件提供已计算的reference-labels/;自己的新计算结果在03.data/。先读附件,不需要重跑Gaussian:
source env.sh
python - <<'PY'
from pathlib import Path
import dpdata
for p in Path('reference-labels').glob('*/type.raw'):
s = dpdata.LabeledSystem(str(p.parent), fmt='deepmd/npy')
print('原子数:', s.get_natoms(), '帧数:', len(s))
print('非周期:', s.data['nopbc'])
print('能量(eV):', s.data['energies'])
print('力数组:', s.data['forces'].shape)
PY
最终共4帧,每帧3原子,非周期标记为真。Gaussian读取器使用100Å对角矩阵作为内部占位;保存为非周期DeepMD数据时,cell.npy为零矩阵并保留nopbc。这两个矩阵都不是实际分子的晶胞,不能用来计算密度、压力或体积。取样时20Å周期盒也不能直接当作气相量子计算的物理晶胞。
输入坐标、总能量和全部原子力在原生转换前后保持相同。后续训练应保留非周期语义,并另外准备训练/验证/测试划分;不能把4帧训练集回算称为模型泛化能力。
可下载能量力CSV和ReaxFF几何CSV。参见DP-GEN官方说明与dpdata官方数据格式文档了解非周期数据接口。