NGLView 是 NGL Viewer 的 Jupyter 封装,让你在 Notebook 里交互式旋转、缩放、播放轨迹。它的价值不在于出版级配图(那是 PyMOL 的活),而在于分析过程中随时看一眼——算完 RMSD 发现异常,立刻把那几帧调出来看看发生了什么。
安装
pip install nglview
jupyter labextension install nglview-js-widgets # JupyterLab 3 之前需要
# JupyterLab 4 / Notebook 7 通常装完即可用
装完若显示空白,多半是前端扩展没装好——这是它最常见的问题,重启内核并检查扩展状态。
基本用法
import nglview as nv
# 直接看 PDB(本地或联网)
view = nv.show_file("complex.pdb")
view = nv.show_pdbid("1ake")
view
# 与 MDAnalysis 联动看轨迹
import MDAnalysis as mda
import nglview as nv
u = mda.Universe("topology.pdb", "traj.dcd")
view = nv.show_mdanalysis(u)
view.clear_representations()
view.add_cartoon("protein", color="sstruc")
view.add_licorice("not protein and not water", radius=0.3)
view.add_ball_and_stick("resname MOL")
view.center("resname MOL")
view
# 与 MDTraj 联动
import mdtraj as md
t = md.load("traj.dcd", top="topology.pdb")
view = nv.show_mdtraj(t[::10]) # 抽帧,避免卡顿
常用表示与控制
| 方法 | 用途 |
|---|---|
add_cartoon |
蛋白主链,color="sstruc" 按二级结构上色 |
add_licorice / add_ball_and_stick |
小分子、侧链 |
add_surface |
分子表面,opacity=0.4 看口袋形状 |
add_spacefill |
空间填充,看堆积 |
add_contact |
显示接触与氢键 |
add_label |
残基标签 |
view.frame = n |
跳到指定帧 |
view.download_image() |
导出当前视图为 PNG |
看口袋的一段实用配置
view = nv.show_file("complex.pdb")
view.clear_representations()
view.add_surface("protein", opacity=0.35, color="white",
surfaceType="av", probeRadius=1.4)
view.add_cartoon("protein", color="grey")
view.add_ball_and_stick("resname MOL", color="element")
view.add_licorice("protein and (resname MOL around 4.5)", color="cyan")
view.center("resname MOL")
view._remote_call("setSize", target="Widget", args=["800px", "600px"])
view
半透明表面 + 配体棒状是观察口袋形状与配体贴合程度最直观的组合。拿到对接结果先这样看一眼,能很快发现配体是否真的落在口袋里、有没有一半悬在溶剂中。
性能与局限
- 帧数要控制:几千帧的轨迹会让浏览器卡顿。用切片抽帧(
t[::10])或只加载感兴趣的片段。 - 原子数要控制:显示所有水分子会严重拖慢渲染,通常先去水。
- 不适合出版配图:分辨率与渲染质量不如 PyMOL 的
ray。定稿配图仍应回到 PyMOL(见 211《PyMOL 开源版》)。 - Notebook 导出问题:交互组件在导出的 HTML 或 GitHub 上通常不显示,分享时需另存静态图。
上手提示
- 定位是「分析过程中随时看一眼」,不是出版配图;
- 与 MDAnalysis / MDTraj 一行联动,是它最顺手的用法;
- 半透明表面 + 配体棒状,快速判断对接姿势是否落在口袋里;
- 轨迹务必抽帧、先去水,否则浏览器会卡。
延伸资源
- 出版配图:211《PyMOL 开源版》;网页嵌入:213《3Dmol.js》;
- 轨迹分析:205《MDAnalysis》、206《MDTraj》。