4. PyMOL 选择与显示:从语法到视觉呈现
这一章,我们聊聊 PyMOL 最核心的操作——怎么把分子“挑”出来,再让它“好看”。说白了,就是选择语法、颜色和表示方式。很多新手都卡在这一步:明明加载了结构,却不知道怎么单独显示某个残基,或者把活性位点高亮出来。别急,我带你捋一遍。
4.1 选择语法:PyMOL 的“搜索引擎”
PyMOL 的选择语法,其实就是一个灵活的字符串表达式。你用它告诉 PyMOL:“我要这部分原子”。我个人习惯用选择语法来快速构建显示方案,效率很高。
4.1.1 基础选择
最基本的,是用对象名加选择器。比如:
select 1ubq # 选择整个对象
select chain A # 选择 A 链
select resi 1-10 # 选择 1 到 10 号残基
select resn ALA # 选择所有丙氨酸
select name CA # 选择所有 Cα 原子
你可能会问,为什么用 `resi` 而不是 `residue`?PyMOL 就是这么定义的,别问,记住就行。
4.1.2 逻辑操作:与、或、非
真实项目中,很少只用单一条件。比如我只想选 A 链上的丙氨酸,怎么办?用逻辑操作符:
select (chain A) and (resn ALA) # A 链上的丙氨酸
select (chain A) or (chain B) # A 链或 B 链
select (not chain A) # 除 A 链外所有
select (resi 1-50) and (name CA) # 前 50 个残基的 Cα
记住一个原则:用小括号把条件分组,这样可读性高,也不容易出错。我曾经在分析一个大型复合物时,漏了括号,结果选了大半个结构,排查了半天。
4.1.3 选择扩展:基于属性
PyMOL 还能基于更细粒度的原子属性选择,比如 B-factor(温度因子)、坐标范围。这在分析结构柔性时特别有用:
select b < 30 # 选择 B-factor 小于 30 的原子
select (x > 10) and (x < 20) # 选择 x 坐标在 10 到 20 之间的原子
select ss H # 选择所有 α-螺旋
快速记忆口诀:
resi:按残基编号resn:按残基名称name:按原子名称chain:按链ss:按二级结构elem:按元素
4.2 颜色:让分子“说话”
颜色不只是为了好看。在结构生物学中,颜色承载着信息——比如通过颜色区分亚基、显示突变位点、或标记配体结合区域。
4.2.1 预定义颜色
PyMOL 内置了丰富的颜色名称:
color red, selection-name # 红色
color blue, selection-name # 蓝色
color green, selection-name # 绿色
color yellow, selection-name # 黄色
color magenta, selection-name # 品红
color cyan, selection-name # 青色
color salmon, selection-name # 三文鱼色(常用于配体)
我个人习惯用这些内置色,因为不用记RGB值。但如果你需要精确颜色,PyMOL也支持自定义:
color 0.1 0.5 0.9, selection-name # 自定义 RGB (0-1 范围)
4.2.2 常用着色方案
不同场景有不同的着色思路。下表是我整理的经验:
| 场景 | 推荐方案 | 代码 |
|---|---|---|
| 按链(亚基区分) | spectrum 或手选 |
|
| 按二级结构 | 预定义二级结构色 | |
| 按 B-factor(温度因子) | 冷暖渐变 | |
| 按残基类型(疏水/带电) | 手动定义分组色 | |
你想想看,B-factor 着色能直观展示分子的“抖动”区域。蓝色表示稳定,红色表示柔性高。我做分子对接分析时,经常用这个来确认结合位点的稳定性。
我的习惯:研究结构时,先用 spectrum 给全蛋白上个渐变色,瞬间就能看出热点区域。然后局部细化,用自定义颜色高亮关键残基。
4.3 表示方式:从线到球
PyMOL 提供了多种表示方式,每种适合展示不同的结构特征。我习惯用“组合拳”——对同一分子,用不同表示法展示不同部分。
4.3.1 常用的表示方式
- 卡通(cartoon):展示蛋白质骨架,最适合看二级结构。
- 线型(lines):显示所有原子间的键,轻量。
- 棒型(sticks):显示键的粗细和方向,适合配体或侧链。
- 球棍(spheres):按原子范德华半径显示,适合突出特定原子。
- 表面(surface):显示分子表面,适合分析空腔和结合口袋。
- 主链(ribbon):比卡通更简化,只显示主链走向。
具体命令很简单:
show cartoon, selection # 显示为卡通
show sticks, selection # 显示为棒状
show spheres, selection # 显示为球体
show lines, selection # 显示为线型
show surface, selection # 显示为表面
隐藏表示用 hide:
hide lines, selection # 隐藏线型表示
4.3.2 组合示例:突出结合位点
我在做药物设计项目时,常用这样一个工作流:
# 整个蛋白用卡通表示,颜色按链分
show cartoon, 1ubq
color spectrum chain, 1ubq
# 活性位点残基用棒状表示,并高亮为红色
select active_site, resi 10-20+30-40
show sticks, active_site
color red, active_site
# 配体用球棍表示,突出与蛋白的接触
select ligand, resn LIG
show spheres, ligand
color magenta, ligand
这样一来,一眼就能分辨蛋白骨架、关键残基和配体。
小心性能问题:表面表示非常消耗显示资源。如果你处理的是大分子(>5000 原子),不要对整个分子用表面,否则 PyMOL 会卡到让你怀疑人生。我曾经用一个 2 万原子的复合物试过,那叫一个慢。
4.4 知识脉络:从语法到视觉
为了让你更直观地理解选择、颜色和表示方式之间的关系,我画了一张图:
这个流程很清晰:先选好对象,再定颜色,最后上表示。顺序可以换,但逻辑得通。
4.5 实战技巧:组合拳和避坑
4.5.1 一个典型的组合操作
假设你有一个蛋白配体复合物,想要展示配体结合口袋:
# 第一步:加载结构
load 1ubq.pdb
# 第二步:给蛋白上卡通,按链着色
show cartoon, 1ubq
spectrum chain, 1ubq
# 第三步:选择配体周围 5 埃内的残基
select binding_pocket, byres (resi around 5 of resn LIG)
show sticks, binding_pocket
color orange, binding_pocket
# 第四步:给配体一个醒目的颜色
select ligand, resn LIG
show spheres, ligand
color magenta, ligand
# 第五步:去掉溶剂分子(如果存在)
hide lines, resn HOH
嗯,这里要注意 `byres` 这个关键词,它会把原子选择扩展为整个残基,这样你选的就不是零散原子,而是完整的氨基酸。
4.5.2 避坑指南:选择结果不按预期
我曾经犯过一个错:用 `select` 选了残基,然后用 `hide` 命令隐藏,结果怎么都隐藏不掉。后来发现是因为我忘了 `select` 只是创建一个命名选择,但并没有改变视口。你需要用 `deselect` 来清除选择,或者直接用 `show/hide` 配合命名选择。
正确做法:
# 错误示范
select active, resi 10-20
hide lines # 这只会隐藏当前选中的原子,但 active 选择仍在
# 正确示范:用命名选择作为参数
hide lines, active
# 或者清空选择
deselect
命名选择的生命周期:一旦你用 select 创建了一个命名选择,它会一直存在于 PyMOL 的命名空间中,直到你显式删除它:delete active。不然它会积累很多旧选择,影响后续操作。
4.5.3 避坑指南:颜色覆盖问题
你可能会发现,对同一个原子先后用了两次 `color`,最后的颜色取决于最后一次调用。所以如果你想对某个子集单独上色,一定要先确保它没有被其他命令修改。
另外,`color` 和 `spectrum` 的区别:`color` 是纯色,`spectrum` 是渐变。如果你先用了 `color red`,再用 `spectrum b, selection`,`spectrum` 会覆盖之前的颜色。
我用一个简单的工作流来解决:先给整体上一个中性的颜色(比如灰色),然后逐个给关键区域上色。这样不易混乱。
4.6 本章小结
这一章我们讲了 PyMOL 选择的三大支柱:选择语法、颜色控制、表示方式。选择语法是基础,颜色是信息载体,表示方式决定视觉效果。三者结合,才能做出既科学又美观的结构图。
- 选择语法:用
resi、resn、name、chain、ss、逻辑操作 (and、or、not) 来精准定位原子。 - 颜色:
color纯色,spectrum渐变色,自定义 RGB 也能用。 - 表示方式:
show/hide加类型名,组合使用能提升信息密度。 - 实战:先选再色后表示,命名选择要有清理意识,避免颜色覆盖。
最后送你一句话:好的结构图,不是把所有信息都堆上去,而是只展示你想让读者看到的那部分。