PLUMED 时间依赖偏置重加权
用实际WTMetaD轨迹区分bias、rct、rbias,并运行原生离线重加权。
阅读本篇目录
WTMetaD 的偏置随时间改变,分析时应使用与同一步实际偏置匹配的归一化权重。本篇继续 伞形采样与WHAM 的二维解析势,用真实原生轨迹讲清楚 bias、rct、rbias 和重加权操作。

1. 下载并运行#
下载输入、原生工具脚本、真实数据和配图。解压进入 plumed-walkers-wave277 后,先查看参考图:
unzip plumed-walkers-wave277*.zip
cd plumed-walkers-wave277
bash run.sh
在自己已分配的 CPU 资源内运行实际采样:
bash sample.sh
bash plot.sh work/analysis own-figures
需要至少六个 CPU。脚本同时运行两个独立随机种子组的单 walker 和双共享 walker,共六个原生 plumed pesmd 进程;模型和时间均无量纲,不调用 CUDA。本例不是原子材料或真实分子的收敛自由能。
2. 单walker的完整输入#
基础势仍为 U=4(x²−1)²+y²/2、kBT=1,步长 0.005、200000 步,总无量纲时间 1000。下面是单 walker 的完整 PLUMED 输入:
UNITS NATURAL
d: DISTANCE ATOMS=1,2 COMPONENTS
u: MATHEVAL ARG=d.x,d.y VAR=x,y FUNC=4*(x*x-1)^2+0.5*y*y PERIODIC=NO
physical: BIASVALUE ARG=u
m: METAD ARG=d.x SIGMA=0.12 HEIGHT=0.05 PACE=100 BIASFACTOR=8 TEMP=1 GRID_MIN=-2.5 GRID_MAX=2.5 GRID_BIN=1000 CALC_RCT RCT_USTRIDE=1 FILE=HILLS GRID_WFILE=BIASGRID GRID_WSTRIDE=10000
rw: REWEIGHT_METAD ARG=m.rbias TEMP=1
PRINT ARG=d.x,d.y,u,m.bias,m.rbias,m.rct,rw STRIDE=20 FILE=COLVAR FMT=%24.16e
BIASFACTOR=8 启用 well-tempered 方案,PACE=100 每 100 步放置 hill,初始 HEIGHT=0.05,宽度 0.12。CALC_RCT 依赖网格,计算 c(t);RCT_USTRIDE=1 在偏置更新时按此设置更新归一化因子。
rw: REWEIGHT_METAD ARG=m.rbias TEMP=1 给出相应的对数权重。TEMP=1 与 UNITS NATURAL 配套,表示 kBT=1;不能解释为 1 K。定义基础物理势的 physical.bias 不应被当作要去除的 MetaD 偏置。
cat inputs/seed-71/single/walker-0/input.dat
head -n 5 work/seed-71/single/walker-0/COLVAR
tail -n 5 work/seed-71/single/walker-0/COLVAR
3. rbias 与 c(t) 的实际更新时机#
通常写作 rbias=bias−c(t),但要保证来自相同计算阶段。该版 PLUMED 在 calculate 阶段用已有 c(t) 计算 rbias,在后续 update 阶段放置 hill 并更新 c(t),最后 PRINT 打印各字段。

因此,加 hill 那一行的 rct 可能已经是更新后的值,而 rbias 仍与本次力计算所用的旧值对应。共享 walker 首条记录也可能在更新阶段读到其他 walker 的 hill,从而打印非零 rct,但本次新启动的初始 bias/rbias 仍为零。
实际操作时,直接使用原生 m.rbias 或 REWEIGHT_METAD 的输出;不要对打印文件机械地逐行计算 bias−rct 后覆盖原生权重。包内程序保留全部记录,按更新步号检查字段所处阶段;它没有删除差异行来让图看起来更整齐。
4. 已有轨迹只重做分析#
本例保留后半段,即时间大于 500 的数据。单 walker 留下 5000 帧,两 walker 合并留下 10000 帧。已有 work 时执行:
bash analyze.sh work new-analysis
bash plot.sh new-analysis own-figures
cat new-analysis/summary.json
离线命令读取实际 x 与原生 rbias,并重新调用 REWEIGHT_METAD、HISTOGRAM、CONVERT_TO_FES。用于 READ 的 IGNORE_FORCES 只适合这种离线权重分析,不表示在线 MD 可以忽略偏置力。
UNITS NATURAL
x: READ FILE=frames.COLVAR VALUES=x IGNORE_TIME IGNORE_FORCES
r: READ FILE=frames.COLVAR VALUES=rbias IGNORE_TIME IGNORE_FORCES
rw: REWEIGHT_METAD ARG=r TEMP=1
h: HISTOGRAM ARG=x GRID_MIN=-1.8 GRID_MAX=1.8 GRID_BIN=180 KERNEL=DISCRETE LOGWEIGHTS=rw UPDATE_FROM=1
DUMPGRID GRID=h FILE=prob.dat FMT=%.16e
f: CONVERT_TO_FES GRID=h TEMP=1
DUMPGRID GRID=f FILE=fes.dat FMT=%.16e
程序给分析文件放置独立 step 0 记录,通过 UPDATE_FROM=1 明确排除它;不会把初始化行算成额外采样点。
module load plumed/2.9.4-oneapi2024.2
plumed driver --noatoms --plumed plumed.dat --timestep 1
head -n 8 prob.dat
head -n 8 fes.dat
5. 怎样读这组结果#
本集群参考两组单 walker 的重加权自由能,在已覆盖区间与解析答案的均方根误差约为 0.24、0.22 kBT;两组双 walker 参考结果约为 0.15、0.16 kBT。普通账号重跑的共享轨迹有不同的异步读取时序,误差约为 0.18、0.17 kBT;不会要求每个 walker 的逐帧路径完全相同。
双 walker 使用了更多采样资源,这组数据不能换算成硬件加速比。原始权重 ESS 未扣除时间相关;未采样网格点保持未知。这是操作和数值解释的小例,不能作为真实材料的收敛 PMF、扩散率或反应速率。