MDAnalysis专题

MDAnalysis多构象孔径与表面导出

实际运行HoleAnalysis、孔径分箱、模型指标排序和VMD表面导出,区分正常模态与真实MD。

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

本篇用上游短杆菌肽elNemo第7正常模态的11个结构模型,实际计算其中0、2、4、6、8、10号模型。它们是几何扰动模型,不是MD轨迹,也没有真实时间间隔;不能把横轴模型编号解释为蛋白开关通道的动力学。

1 准备并运行#

下载HOLE孔径、结构与多构象示例,保存为channel-pore.zip:

python3 -m zipfile -e channel-pore.zip .
cd mdanalysis-channel-pore
bash setup.sh
bash run.sh
bash verify.sh
bash plot.sh

环境为MDAnalysis 2.9.0、mdahole2 0.5.0和HOLE 2.3.1 Apache版。首次setup.sh下载固定源码,在本例的tools/hole2中用GNU Fortran 13.3.0编译;使用make -j1,编译记录在tools/compile.log。所有依赖均留在本例目录,不修改共享安装。数值在results/FULL-FIELDS.npz,图片在plots/。

该正常模态文件每个模型有264个原子,与上一篇272原子的单结构输入有所不同。配套脚本分别读取各自完整拓扑,不把它们强行套成同一条轨迹。

2 HoleAnalysis批量计算#

u = MDAnalysis.Universe('inputs/1grm_normal_modes.pdb')
analysis = HoleAnalysis(
    u, select='all', executable='tools/hole2/bin/hole',
    sph_process='tools/hole2/bin/sph_process',
    sos_triangle='tools/hole2/bin/sos_triangle',
    cpoint='center_of_geometry', cvect=[0, 1, 0],
    sample=0.2, end_radius=5.0, write_input_files=True
)
analysis.run(step=2, random_seed=335)

这里center_of_geometry按每帧全部选中原子的几何中心取起点。step=2每隔一个模型分析一次,得到6条剖面;本例显式把文件名转为字符串,以兼容该版本的文件名处理。

source env.sh
"$YS_PY" - <<'PYCODE'
import numpy as np
f = np.load('results/FULL-FIELDS.npz')
print('model index, minimum radius:')
print(f['normalmode_minima'])
np.savetxt('model-minimum-radius.dat', f['normalmode_minima'],
           header='normalmode_model_index minimum_radius_A')
PYCODE

六个实际正常模态模型的孔径剖面与最小半径

3 分箱与按指标整理#

原生min_radius()提取每个模型最窄半径;gather(flat=True)合并全部剖面;bin_radii()收集每个轴向区间的半径,histogram_radii(aggregator=np.mean)或np.std得到均值和波动。该版本分箱采用“左开右闭”的区间,边界点不要按另一种规则重复计入。

source env.sh
"$YS_PY" - <<'PYCODE'
import numpy as np
f = np.load('results/FULL-FIELDS.npz')
e = f['normalmode_bin_edges_A']
x = np.c_[(e[:-1] + e[1:]) / 2, f['normalmode_bin_mean_A'],
          f['normalmode_bin_std_A']]
np.savetxt('model-radius-bins.dat', x, header='channel_y_A pooled_mean_A SD_A')
print(x[:5])
PYCODE

这里合并的是6个模型各剖面中的空间采样点,标准差不是MD时间误差,也不是孔径估计的置信区间。over_order_parameters()可以按给定指标排序,但字典键相同时会覆盖同键模型;本例用唯一的原始模型编号0–10,不用可能重复的RMSD当唯一键。

真实剖面分箱及所有采样点、中点的独立净空比较

4 导出VMD表面与原生图#

工作流已实际调用create_vmd_surface(),通过编译得到的sph_process和sos_triangle生成单结构及多模型表面。还实际运行plot()、plot3D()、plot_mean_profile()、plot_order_parameters()和plot3D_order_parameters()。

ls results/single-coarse/single.vmd
ls results/normalmode/normalmode.vmd
ls results/normalmode/native-plots

可将输入PDB和生成的表面脚本带到有图形界面的VMD客户端,先打开对应结构,再加载表面脚本。网页图片使用实际坐标和孔径数据绘制;不依赖在计算节点启动图形界面。

正常模态模型适合演示孔径对几何变化的响应;研究通道开放概率、离子穿越或电导时,需要相应的真实MD与物理模型,不能由本例的6个剖面代替。

参考:mdahole2原生实现与示例数据。

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

查看配图

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

100%查看原图 ↗