PLUMED:RDC的SVD取向张量
用12对构造方向和带噪声目标实际反算张量,解释输入、残差、参考系与分析范围。
阅读本篇目录
本篇演示根据一组 RDC 和几何方向反算取向张量,再回算各核对的耦合。输入是 12 对构造的几何点和人为设置的带噪声目标,不是实验 NMR,也不是蛋白质模拟。它适合先熟悉 SVD 输入、输出和参考系,再换成有明确来源的真实数据。
1. 下载并读取实际结果#
下载完整输入、原生输出、CSV 与绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd plumed-RDC-SVD
module load ase/3.29.0
bash read.sh
bash plot.sh

包内有两次实际 PLUMED 2.10.1 调用:原始几何及刚性旋转后的几何。当前使用 CP2K 2026.2 配套的独立 PLUMED,编译环境为 Intel oneAPI 2024.2、Intel MPI、MKL 和 GSL 2.8;不运行 CP2K 电子结构。
2. 准备几何和目标#
head -14 inputs/original/bonds.xyz
cat inputs/original/plumed.dat
XYZ 使用 nm,本例的元素标签只是几何占位;GYROM=-72.5388 按 N–H 核对设置,并不会由 XYZ 标签自动推断核种。真实分析时要让核对、几何和旋磁比真正对应。
每条 ATOMS 选择一对坐标,每条 COUPLING 提供对应目标,单位 Hz。本篇目标由给定的无迹张量加上明确的小噪声构造,详细数值在 reference-results/PLAN.json,可以逐项检查。
完整输入:
UNITS LENGTH=nm ENERGY=kj/mol TIME=ps
fit: RDC ...
GYROM=-72.5388 SCALE=1 SVD NOPBC
ATOMS1=1,2 COUPLING1=21.912887793664
ATOMS2=3,4 COUPLING2=-5.4793049714749
ATOMS3=5,6 COUPLING3=-11.885430518925
ATOMS4=7,8 COUPLING4=7.5059746506018
ATOMS5=9,10 COUPLING5=0.73791997746349
ATOMS6=11,12 COUPLING6=-5.7989177899152
ATOMS7=13,14 COUPLING7=8.7965510684473
ATOMS8=15,16 COUPLING8=-6.8392542747147
ATOMS9=17,18 COUPLING9=-3.9595391663777
ATOMS10=19,20 COUPLING10=-4.4028808182197
ATOMS11=21,22 COUPLING11=-3.1953269033799
ATOMS12=23,24 COUPLING12=-0.60097659965375
...
stats: STATS ARG=fit.rdc-0,fit.rdc-1,fit.rdc-2,fit.rdc-3,fit.rdc-4,fit.rdc-5,fit.rdc-6,fit.rdc-7,fit.rdc-8,fit.rdc-9,fit.rdc-10,fit.rdc-11 PARAMETERS=21.912887793664,-5.4793049714749,-11.885430518925,7.5059746506018,0.73791997746349,-5.7989177899152,8.7965510684473,-6.8392542747147,-3.9595391663777,-4.4028808182197,-3.1953269033799,-0.60097659965375
PRINT ARG=fit.*,stats.* FILE=COLVAR STRIDE=1 FMT=%.14g
多行输入以裸 ... 收尾。SVD 需要启用了 GSL 的程序;五个独立张量分量至少需要足够独立的方向来确定,仅增加相互平行的核对不能解决欠定问题。本例使用 12 对方向,设计矩阵秩为 5。
3. 提交原生计算#
bash submit.sh
squeue -u "$USER"
CPU 模板按集群规则申请 56 核整节点,实际 driver 使用 1 线程,依次处理两组几何。结束后:
bash read.sh work-new analysis-read
bash plot.sh
head -8 analysis-read/PLUMED-RDC-SVD-couplings.csv
cat analysis-read/PLUMED-RDC-SVD-tensors.csv
若已经获得作业资源,要单独调用 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
"$plumed_bin" driver --plumed plumed.dat --ixyz bonds.xyz \
--length-units nm --box 2,2,2
各 RDC 均指定 NOPBC,所以这里的盒子声明只是提供 driver 所需的元数据,不改变直接几何距离,也不表示执行了周期 MD。
4. 输出怎样读#
原生 COLVAR 中:
fit.rdc-0至fit.rdc-11是回算的 RDC,输出编号从零开始;输入ATOMS1等从 1 开始。fit.exp-0等回显COUPLING目标。本例这些列仍是人为构造值,字段名中的exp不代表它们来自实验。fit.Sxx、Syy、Szz、Sxy、Sxz、Syz是无量纲对称张量分量,其中Sxx+Syy+Szz=0。
原始几何下实际得到 Sxx≈0.000801089、Syy≈−0.000307907、Szz≈−0.000493182。本例设置 SCALE=1;任意更改 SCALE 或核对常数都会改变拟合张量的解释,不能混用不同参数下的分量。
实现先按各键的最大耦合归一化,再求解最小二乘;键长不同时,它与直接最小化所有 Hz 残差并不完全相同。包内 read.py 按相同定义独立求解,全部张量分量和回算 RDC 均逐项对照。
5. 残差与参考系#
实际回算值对目标的 RMSD 为 0.0617356 Hz,相关系数 0.999976。输入带有噪声,残差本来就不应该被强行清零。
STATS 还输出平方偏差和、线性斜率和截距;这里线性关系按“目标 = slope × 回算值 + intercept”解释,得到斜率约 1.00151、截距约 0.00536 Hz。高相关性不能单独证明真实数据的结构模型正确。
第二次实际调用将整个几何刚性旋转,目标保持相同。回算 RDC 保持一致,张量则随坐标系按 S′=R S Rᵀ 变换。比较两份结构或轨迹时,既要核对原子映射,也要统一参考系。
6. 适用范围#
这个 SVD 入口用于分析,当前没有实现相应的原子力。不要把 fit.rdc-* 或张量直接接到需要原子力的 RESTRAINT,也不能把本篇称为已经执行了 RDC 约束采样。
要做多副本平均约束,应使用可计算导数的直接 RDC,再结合 ENSEMBLE 等工具;基础直接量见RDC取向量教程。真实实验分析还要确认取向介质、核对定义、数据误差和构象平均方式。PLUMED 官方 RDC 说明给出了两种使用方式的范围。