PLUMED专题

PLUMED:双副本平均与耦合偏置

实际运行两个MPI副本,读取FRET和四组RDC平均,并检查平均FRET约束传递到各副本的力。

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

ENSEMBLE 计算同一时刻不同副本之间的平均,本篇用真正启动的两个 MPI 副本演示。它与在一条轨迹上对所有时间帧求平均不同。

1. 先读结果#

下载双副本输入、实际输出、CSV 与绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd plumed-replica-NMR
module load ase/3.29.0
bash read.sh
bash plot.sh

默认读取参考结果。需要重算时运行 bash submit.sh,等待 Slurm 作业结束,再运行 bash read.sh work-new analysis-read 与 bash plot.sh。CPU 模板按整节点共申请 56 核,实际启动 2 个单线程 MPI 进程,每个进程负责一个副本。

本例使用 PLUMED 2.10.1,来自 CP2K 2026.2 的独立依赖;编译环境为 Intel oneAPI 2024.2、Intel MPI、MKL 和 GSL 2.8。driver 处理的是 32 对构造的四粒子几何帧,不是 MD、真实蛋白或实验 NMR;帧序号不表示真实采样时间。

两个副本的FRET、实际副本平均及768个偏置力分量

2. 两个输入文件怎样安排#

ls inputs
head -8 inputs/scan.0.xyz
head -8 inputs/scan.1.xyz

两个 XYZ 文件坐标均用 nm。第二组由第一组刚性旋转,并把 1–2 距离放大 10%,用于演示各副本的不同读数。所有元素标签是几何占位;RDC 的核对常数由输入显式指定,并不是从这些标签推断。

driver 命令只写共同文件名 scan.xyz,多副本模式会自动寻找 scan.0.xyz 和 scan.1.xyz。输出分别为 COLVAR.0、COLVAR.1,以及 forces.xyz.0、forces.xyz.1。

3. 完整PLUMED输入#

UNITS LENGTH=nm ENERGY=kj/mol TIME=ps
d: DISTANCE ATOMS=1,2 NOPBC
f: FRET ATOMS=1,2 R0=0.3 NOPBC
r: RDC GYROM=-72.5388 SCALE=0.001 ATOMS1=1,2 ATOMS2=1,3 ATOMS3=1,4 ATOMS4=2,4 NOPBC
mean: ENSEMBLE ARG=d,f,r.*
mom: ENSEMBLE ARG=d MOMENT=2
central: ENSEMBLE ARG=d MOMENT=2 CENTRAL
power: ENSEMBLE ARG=d POWER=2
w: CUSTOM ARG=d FUNC=30*(x-0.25)^2 PERIODIC=NO
rw: ENSEMBLE ARG=d,w REWEIGHT TEMP=300 MOMENT=2
rc: ENSEMBLE ARG=d,w REWEIGHT TEMP=300 MOMENT=2 CENTRAL
bf: RESTRAINT ARG=mean.f AT=0.7 KAPPA=5
PRINT ARG=d,f,r.*,mean.*,mom.*,central.*,power.*,w,rw.*,rc.*,bf.bias FILE=COLVAR STRIDE=1 FMT=%.14g

mean: ENSEMBLE ARG=d,f,r.* 分别平均距离、FRET 效率和四组直接 RDC,输出为 mean.d、mean.f、mean.r.rdc-0 等。RDC 使用固定 z 轴的直接量,不是 SVD 拟合。本例没有施加 RDC 约束。

4. 启动两个真正的副本#

通常直接用资料包的 bash submit.sh。在已经分配的 CPU 作业内,driver 的核心命令为:

source /etc/profile.d/lmod.sh
module load cp2k/2026.2-8173m
plumed_bin=/public/software/cp2k/deps/2026.2/8173m/plumed-2.10.1/bin/plumed
mpiexec.hydra -n 2 "$plumed_bin" driver --multi 2 \
  --plumed plumed.dat --ixyz scan.xyz --length-units nm --box 2,2,2 \
  --dump-forces forces.xyz --dump-forces-fmt %.14e

-n 2 是两个 MPI 进程,--multi 2 把它们分为两个副本。本例每个副本恰好一个进程;不要仅启动一个进程然后把普通时间平均称作副本平均。官方 driver 说明介绍了副本文件后缀的规则。

5. 检查平均量#

head -5 reference-results/COLVAR.0
head -5 reference-results/COLVAR.1
head -8 analysis-read/PLUMED-replica-RDC.csv
head -8 analysis-read/PLUMED-replica-means-moments.csv

相同帧两份输出中的副本平均应相同,单副本读数可以不同。第一帧两个副本的距离约为 0.227596、0.250356 nm,平均距离 0.238976 nm,平均 FRET 0.793692。

全部帧的平均 FRET 在 0.703533–0.866720 之间。它与“先平均距离,再代入 FRET 公式”最多相差约 0.00283124,因为距离到效率的映射非线性。真实轨迹分析也应先计算各构型的可观测量,再根据合理的采样权重平均。

6. 平均量的偏置怎样传回各副本#

本例唯一施加的偏置是:

bf: RESTRAINT ARG=mean.f AT=0.7 KAPPA=5

对应 U=5·(平均FRET−0.7)²/2,单位 kJ/mol。每个副本的 FRET 都会影响共同平均,因此同一个约束会向两个副本传递力;本例平均量对每个副本的导数带有 1/2。

资料包用独立中心差分检查了 2副本×32帧×4粒子×3方向=768 个力分量,最大差约 4.49×10⁻¹⁰ kJ/(mol·nm)。这里只有 1–2 对参与 FRET 偏置,3、4 号粒子的相应偏置力为零;RDC 只是读数。

head -10 analysis-read/PLUMED-replica-bias-forces.csv

两份 COLVAR 会重复报告同一个全局偏置值,不能把两行相加后再拿来和这里的独立力比较。driver 只评价给定帧的量和力,没有据此推进结构或完成真实约束采样。

不同副本还可以计算矩、幂及带权平均,继续阅读副本矩与加权平均。

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

查看配图

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

100%查看原图 ↗