PLUMED OPES重加权:用原生命令提取自由能
READ与REWEIGHT_BIAS实际读取四组轨迹,按相同丢弃区间和分箱重建已知自由能。
阅读本篇目录
得到增强采样轨迹后,不能直接把受偏置的坐标直方图当成无偏自由能。本篇接着OPES模型运行,先用PLUMED原生命令生成对数权重,再统计自由能,与已知解析曲线比较。
1. 先用现成结果学习#
下载OPES运行、重加权与STATE资料包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd plumed-opes-complete
bash results.sh
bash read.sh
bash plot.sh
这几条命令读取已保存的实际结果,生成analysis-read/与figures/,不重跑MD。
cat data/OPES-summary.csv
head reference-results/extra-checks/opes_metad-797101-weights/WEIGHTS
2. 原生重加权输入#
在保存COLVAR的后处理目录中,使用:
UNITS NATURAL
x: READ FILE=COLVAR VALUES=d.x IGNORE_TIME IGNORE_FORCES
bias: READ FILE=COLVAR VALUES=b.bias IGNORE_TIME IGNORE_FORCES
w: REWEIGHT_BIAS ARG=bias.bias TEMP=1
PRINT ARG=x.x,bias.bias,w STRIDE=1 FILE=WEIGHTS FMT=%24.16e
这里有两个容易混淆的地方:
- 原文件字段叫
d.x,读取后完整引用名为x.x;原字段b.bias读取后是bias.bias。要按输出组件名引用。 - 本模型的
physical: BIASVALUE承担真实物理势,不能再作为需要消除的增强采样偏置;因此明确只用ARG=bias.bias。
核心终端命令:
"$plumed_prefix/bin/plumed" driver --plumed plumed.dat --noatoms --timestep 0.05
它读取已有的每0.05自然时间单位一行的COLVAR,不重新运行MD。run.sh已为四组案例执行这一步,输出在work/extra-checks/*-weights/WEIGHTS。
3. 从权重到自由能#
本例kBT=1,原生w列是对数权重V_bias/kBT。独立读取程序逐行检查全部80004个输出值,并用exp(w−max(w))避免数值溢出。
按同一规则比较四组案例:
- 丢弃前50000步,即时间不大于250的帧。
- 每组保留15000个实际输出样本。
- 在
[-1.5,1.5]分成60箱,计算加权直方图。 - 用
F=−kBT ln P得到曲线,并在|x|≤1.25区间对齐任意能量常数。
bash read.sh
head data/OPES-reweighted-FES.csv
bash plot.sh

4. 本次实际结果#
| 方法 | 种子 | 保留区间的x=0穿越计数 | FES RMSE / kBT | 最终压缩核数 |
|---|---|---|---|---|
| OPES_METAD | 797101 | 169 | 0.1450 | 54 |
| OPES_METAD | 797202 | 140 | 0.1139 | 52 |
| OPES_METAD_EXPLORE | 797101 | 135 | 0.1115 | 28 |
| OPES_METAD_EXPLORE | 797202 | 114 | 0.1377 | 25 |
解析参考为F(x)=4(x²−1)²+常数。这里只比较同一教学模型、同一分箱和同一有限区间;穿越次数不是反应速率,两个种子也不足以证明任意材料自由能已经收敛。
COLVAR中的rct是供观察的诊断量。按OPES官方说明,本例不把它减入重加权公式。对于存在其他真实增强采样偏置的任务,需要按物理定义一起处理,不能一律照搬本模型的单偏置选择。
另外,(Σw)²/Σw²只是本次保存样本的名义权重有效数,没有消除时间自相关;不要把它当成独立样本数量或收敛证明。
自己的新结果使用:
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。