NepTrain 2.2.0：Si训练、采样、选点与DFT标注实操包

1. 先查看实算结果
  bash run.sh
生成六张PNG和七张CSV，只重画参考数据，不启动DFT、训练或MD。
参考结果和自己新算的结果分别保存，重画入口不会替换本轮计算结果。

2. 首次准备并运行完整流程
  bash prepare.sh
  bash workflow.sh
  bash status.sh
prepare.sh用已部署VASPKIT生成与标签一致的授权Si赝势，建立项目内配置。
每个NEP训练、GPUMD探索、VASP标注任务均通过Slurm运行，每个任务一张GPU。
流程为：32帧真实PBE标签训练一万代NEP4 → 300/600K各1ps NVT → 描述符
最远点筛选四帧 → 四次真实VASP单点标注 → 加入数据后再训练一万代。
8帧验证和8帧独立测试不进入训练。完成后得到36帧训练数据和第二代nep.txt。
已有目录继续运行workflow.sh即可恢复原生restart.yaml，不要重新prepare或删除结果。

3. 查看自己新训练模型的独立误差
  bash evaluate.sh
读取本轮第二代模型，输出analysis/my-model-errors.json，包含能量、力、压力误差。
  bash api.sh
用附件第一代参考模型演示每原子/每结构描述符、能量、力、平均与总virial。
结构描述符保存为NumPy数组，它不是直接可解释的材料物理量。

4. 单独学习建模和选点
  bash initialize.sh
  bash perturb.sh
  bash select.sh
  bash select-soap.sh
  bash select-umap.sh
initialize只生成四种调度配置模板，不提交PBS或Bohrium作业。
扰动只生成结构，不生成DFT标签。选点反映描述符空间覆盖，不是预测DFT误差。
本安装版perturb的--distance是笛卡尔位移幅度；select的min_distance则是
描述符距离阈值，二者都不能直接当作原子间最小键长。

5. 如何理解本例数据
附件小Si模型用于学习流程。实际再训练后独立测试的力误差降低，但能量和压力
误差略有增加，完整数值均保留。四个新增点在再训练后属于训练数据，不能把
它们的回算改善当成独立测试进步。1ps、八原子的NVT不足以给出收敛输运性质。
初始晶胞受到压缩，NVT压力约9–11GPa，不是常压Si平衡模拟。
本包不含多组分、熔化、断键或缺陷的生产势证明。

6. 版本和单位
NepTrain2.2.0/Python3.11；GPUMD5.9.1，GCC13.3/CUDA12.9；VASP6.6.1，
NVHPC25.3/MKL2023.2。短脚本按阶段装载匹配环境，不修改公共安装。
项目内配置保存在自己的目录，不覆盖已有~/.NepTrain或改变HOME。
NEP是神经演化训练，一代不是MD一步，也不是其他框架的一轮epoch。
能量为VASP自由能F/eV每构型，力eV/Å，virial总量eV=-V*ASE拉伸正应力。
CPU接口默认mean_virial为eV/atom，乘原子数后才是总virial；GPUMD压力以压缩为正。
ABACUS的NepTrain入口还需要匹配的ASE-ABACUS插件，本包端到端标注采用VASP。
本包不包含POTCAR、完整受限SCF输出或科学程序安装二进制。
