GROMACS专题

GROMACS AWH输出与解析对照

原生提取、kT与摩擦单位、七列输出,以及16组谐势实算和解析自由能比较。

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

下载完整输入、实际轨迹、原生AWH输出、CSV与绘图脚本。解压进入资料包目录,先处理已经算好的结果:

bash analyze.sh

图片写入 reference/figures,逐条件CSV、JSON和NPZ写入 reference/analysis。想重新计算,在新解压目录执行:

bash submit.sh

脚本提交22个条件的数组任务,全部完成后自动提取和画图。每个模拟任务申请1张P100、2个CPU核心;分析任务主要用CPU,附件模板仍申请GPU分区资源,按相应分区计费。不要在登录节点运行MD。新结果写入 work,已有 reference 保留。

使用 gromacs/2026.4-p100-threadmpi:GNU13.3、CUDA12.8、thread-MPI/OpenMP、混合精度;短程非键相互作用和PME走GPU,更新、约束等仍在CPU执行。分析使用ASE3.29.0环境中的Python、NumPy、SciPy和Matplotlib。这里调用GROMACS原生AWH,不需要加载PLUMED;MPI复制交换使用另一构建,见温度复制交换与轨迹拆分。

1 直接调用原生工具提取#

在已有结果的单个条件目录执行:

module load gromacs/2026.4-p100-threadmpi
cd reference/kp500-kc1500-convolved-s1
gmx awh -s md.tpr -f md.edr -o awh.xvg -more -fric friction.xvg

输出按时间分成 awh_t0.xvg、awh_t20.xvg,一直到 awh_t1000.xvg;对应摩擦数据为 friction_t时间.xvg。这不是把所有时间叠在一个文件里。

只提最后一帧,并把能量单位改成kT:

gmx awh -s md.tpr -f md.edr -b 1000 -e 1000   -o awh-kT.xvg -more -kt -fric friction-kT.xvg

NaCl生产到2000 ps,需把这里的1000改成2000。300 K时RT=2.494338785 kJ/mol;-kt 将PMF和Coord bias除以RT,也改变摩擦张量相应能量单位,不会把采样分布列一起除以RT。

想少输出一些时间点:

gmx awh -s md.tpr -f md.edr -b 200 -e 1000   -skip 4 -more -o awh-sparse.xvg

本例原始AWH帧间隔20 ps,这条命令实际得到200、280、360……1000 ps,每4个可用帧保留1个。-skip 4 不表示只处理4帧,也不改变原MD采样。

2 七列输出分别是什么#

列 原生名称 读法
1 coordinate 本例单位nm;是网格坐标,不是时间
2 PMF 原始反应坐标的自由能估计,默认kJ/mol;每帧减去了自身最小值
3 Coord bias 经过归零的卷积偏置表示;在convolved模式中与实际施加势符号相反,不能直接当成原始PMF
4 Coord distr 原始坐标的相对采样权重
5 Ref value distr 辅助参考位置的相对采样权重
6 Target ref value distr 辅助参考位置的目标相对权重;本例均匀目标为1
7 sqrt(friction metric) 摩擦张量平方根按网格平均值归一化后的诊断量

第4–6列在原生一维均匀网格输出中平均值为1,总和等于网格点数;它们不是已经按坐标积分归一的概率密度。自行绘制概率密度时应明确重新归一化,不要把“1”理解成每个网格100%概率。

第3列在 umbrella 模式下仍表示卷积偏置,不能用它替代某一时刻实际辅助位置的谐势。不同时间的归零常数可变,比较两帧必须先使用相同参考位置。

摩擦文件默认的一维单位为kJ mol⁻¹ nm⁻² ps;配合 -kt 后为nm⁻² ps。它描述该受偏置采样的诊断特征,并不是水的宏观黏度或已经测得的无偏扩散系数。

原生分布、摩擦指标、实际轨迹和物理势能

3 PMF和辅助自由能不是同一个答案#

本例物理势只约束示踪粒子的z方向,其余相互作用解耦,因此原始坐标q的PMF有解析式:

Phi(q) = kp * q² / 2 + C

加入AWH辅助弹簧kc后,对原始坐标积分所得到的辅助自由能为:

F(lambda) = [kp * kc / (kp + kc)] * lambda² / 2 + C'

例如kp=500、kc=1500时,原始PMF曲率是500,辅助自由能曲率是375。原生 gmx awh 的PMF列估计前者,不能拿375作为它必须收敛到的目标。附件还用独立的高精度数值积分核对了这个卷积解析式。

16组实际AWH曲线与两个解析自由能

图中黑线是原始PMF,灰虚线是辅助自由能;每条实算曲线仅在中心区拟合一个任意常数,不改变其形状或曲率。端点附近受有限范围和采样影响更明显。

4 实际16组结果#

对每个1 ns结果,在 |q|≤0.24 nm拟合二次曲率,并与物理解析PMF比较。下表RMSE只减去一个最佳常数,单位kJ/mol;它是这次模型对照的偏差,不是一般体系的统计置信区间。

kp kc 模式 种子 实算拟合曲率 解析对照RMSE
250 1500 convolved 1 247.01 0.213
250 1500 convolved 2 248.57 0.104
250 1500 umbrella 1 268.83 0.220
250 1500 umbrella 2 237.20 0.174
250 3000 convolved 1 238.74 0.234
250 3000 convolved 2 240.25 0.228
250 3000 umbrella 1 253.12 0.137
250 3000 umbrella 2 259.39 0.160
500 1500 convolved 1 482.16 0.304
500 1500 convolved 2 494.39 0.126
500 1500 umbrella 1 480.55 0.202
500 1500 umbrella 2 489.28 0.121
500 3000 convolved 1 509.13 0.146
500 3000 convolved 2 501.47 0.124
500 3000 umbrella 1 504.91 0.119
500 3000 umbrella 2 512.49 0.212

两个随机种子和不同模式仍有差别。不要因为某个单一条件更接近解析式,就声称它对所有体系更优;也不要用这一简单模型的误差替任意蛋白或离子对提供精度保证。

5 从坐标独立检查物理势能#

在同一条件目录提取原生坐标和能量:

gmx trajectory -s md.tpr -f md.xtc -select 'atomnr 1' -ox argon-position.xvg
printf 'Position-Rest.
Temperature
0
' | gmx energy -f md.edr -o energy.xvg

由XTC中z坐标计算q=z−1.409 nm,再由高频 md_pullx.xvg 计算 kp q²/2,与原生 Position Rest. 对照。图中残差主要处于混合精度和XVG打印精度量级。XTC坐标精度为0.001 nm,不能要求从它重建距离时得到任意多位小数。

批量CSV提取和上述图已包含在 bash analyze.sh 中。七列原始数值逐条件保存在CSV,不用从图片读数。对自己的体系,接着检查多次独立重复、时间演变、采样范围和隐藏的慢自由度,见NaCl实例。

输出选项见 gmx awh官方帮助。

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

查看配图

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

100%查看原图 ↗