MDAnalysis专题

MDAnalysis降维集合与分段采样检查

实际运行DRES与CES/DRES递增窗口,区分密度积分抽样点和真实轨迹帧,解释最后零值。

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

本篇在同一真实泛素轨迹上运行DRES,并用17、34、51帧三个递增窗口检查几何分布的变化。它演示如何做比较,不把短轨迹的示范曲线当作已经达到平衡的证明。

1 运行与提取#

下载降维、聚类与分段采样检查示例,保存为ensemble-convergence.zip:

python3 -m zipfile -e ensemble-convergence.zip .
cd mdanalysis-ensemble-convergence
bash setup.sh
bash run.sh
bash verify.sh
bash plot.sh

环境为MDAnalysis 2.9.0、NumPy 1.26.4、SciPy 1.13.1、scikit-learn 1.9.1;setup.sh在本例目录读取已有依赖,不修改共享安装。数值在results/FULL-FIELDS.npz,4张图在plots/。重复分析可以用bash run.sh --output results-new指定新目录。

2 DRES的1000和10000不是分子动力学帧数#

np.random.seed(334)
values, details = dres(
    ensembles, select='all',
    dimensionality_reduction_method=double_precision_pca,
    nsamples=10000, ncores=1
)

本例先用原生PCA投影到二维,再分别为前后两段建立高斯核密度估计(Scott带宽),用蒙特卡洛积分估计Jensen–Shannon散度。nsamples=10000是从这两个密度模型抽取的积分点,真实输入仍是两段各26帧;它不会增加一帧MD,也不能补足物理采样。

source env.sh
"$YS_PY" - <<'PYCODE'
import numpy as np
f = np.load('results/FULL-FIELDS.npz')
for n in [1000, 10000]:
    print('integration draws:', n,
          'DRES:', f['DRES' + str(n) + '_matrix'][0, 1])
print('identical ensemble:', f['DRES_identical_self_matrix'][0, 1])
PYCODE

本次1000与10000积分点的DRES约为0.34934和0.35043,变化约0.0011;这些是自然对数定义的散度,无量纲,不是能量。固定随机种子便于重算,但不代表统计误差为零。配套文件还保留了全部积分点、两组密度值和独立的高斯核积分核对。

同一真实轨迹的DRES积分点控制与实际二维坐标

3 用递增窗口比较#

ces_curve = ces_convergence(
    universe, window_size=17, select='all',
    clustering_method=fixed_affinity_method, ncores=1
)
np.random.seed(334)
dres_curve = dres_convergence(
    universe, window_size=17, select='all',
    dimensionality_reduction_method=double_precision_pca,
    nsamples=10000, ncores=1
)

window_size=17以保存帧计数。原始51帧覆盖0–100 ps,分析依次用前17帧、前34帧、全部51帧与完整轨迹比较。CES基于几何聚类占比,DRES基于降维后的密度模型,两条曲线的定义不同。

source env.sh
"$YS_PY" - <<'PYCODE'
import numpy as np
f = np.load('results/FULL-FIELDS.npz')
x = np.c_[f['cumulative_frames'], f['CES_convergence'][:, 0],
          f['DRES_convergence'][:, 0]]
print(x)
np.savetxt('cumulative-sampling.dat', x, header='frames CES DRES')
PYCODE

本次CES约为0.30620、0.12537、0,DRES约为0.24645、0.08059、0。最后一项是“完整轨迹对完整轨迹”,所以自然为零;不能据此宣布体系平衡、稀有事件采样完成或自由能收敛。

原生递增窗口比较,末点零值来自全轨迹自比较

自己的研究应比较不同长度的独立轨迹,检查去除平衡段、保存间隔和不同初始条件的影响,并结合具体物理观测量的分块误差。这里的固定种子与积分点控制只解决本例的数值复现问题。

参考:ENCORE相似性与递增窗口接口。

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

查看配图

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

100%查看原图 ↗