4. 缺失原子修复:根据电子密度或同源模型补全缺失侧链及主链

拿到一个PDB文件,最头疼的是什么?

我的经验告诉我,十有八九是缺失原子的问题。你打开结构一看,主链跑得挺好,侧链却断了一截,或者干脆整段loop都看不见。这时候你不能直接拿它去做分子对接或者模拟,否则结果基本是废的。

修复缺失原子,说白了就是“补全”蛋白质结构信息。它分两大流派:一是靠电子密度去“看”原子该放哪儿,二是拿同源模板去“猜”。我接下把这两条路都给你捋清楚。


4.1 为什么要修复缺失原子?

晶体衍射或者冷冻电镜解析出来的结构,不是每个氨基酸都那么“老实”。

  • 柔性区域:侧链或者loop区活动太大,电子密度看不清。
  • 分辨率不够:默认分辨率下,密度图带不动高精度模型。
  • 实验限制:部分溶剂暴露的残基本来就难定。

缺了原子,后续的分子对接、药效团建模、甚至静电势计算都会出偏差。我在项目中遇到过,某次做2.8Å分辨率下的虚拟筛选,客户给的PDB文件里Phe侧链全部缺失,结果对接得分全是错的。后来把侧链补上,结果才正常。

注意:不要盲目用程序自动补全。你得先判断——这个缺失是实验探测不到的随机行为,还是结构本身就有区域不稳定。这两种情况处理策略完全不同。

4.2 两大修复流派:电子密度 vs 同源模型

方法 核心依据 适用场景 典型工具
电子密度重建 实验电子密度图(2Fo-Fc,Fo-Fc) 有密度层析数据,分辨率优于3.5Å Coot, Phenix, Refmac
同源模型补全 同源序列多重比对 + 已知模板结构 没有密度图,或分辨率太差 MODELLER, SWISS-MODEL, Rosetta
混合策略 先用同源模板搭骨架,再用密度修正侧链 中低分辨率加部分高分辨率数据 Phenix.combine, AutoBuild

我个人习惯是先看有没有密度图。有,就优先用电子密度法,因为它忠实于实验事实;没密度或密度太糊,再用同源模板。别反过来。


4.3 基于电子密度的侧链重建

这个过程在Coot里最顺手。核心逻辑就三步:找峰、对残基、调构象。

  1. 加载密度图:把2Fo-Fc和Fo-Fc地图拖进Coot。
  2. 识别缺失区域:看Fo-Fc正密度峰,缺原子会在峰里冒出来。
  3. 手动/自动放置:用“Add Terminal Residue”或“Autofit Rotamer”填侧链。
# Coot 脚本示例:补全缺失侧链
# 调用 autofit 功能,选择一个残基,自动拟合最佳rotamer
# 前提:已加载PDB和密度图
autofit_rotamer(1, 42)    # 补链A的第42号残基
refine_zone(1, 40, 45)    # 局部优化周围5个残基

这里有个坑:我曾遇到过某次自动拟合出来的侧链强行往密度里塞,导致键长畸变。后来我养成了一个习惯——补完后必须跑一次几何正则化(Refine / Regularize),检查键长、键角有没有超限。

小技巧:用Fo-Fc图的“残余密度”来验证修复是否到位。如果一个氨基酸补完后,Fo-Fc图里还有明显的正峰或负峰,说明你的侧链取向没放对,赶紧调。

4.4 基于同源模型的缺失原子补全

如果没有密度图,或者分辨率烂到看不懂密度峰,那就只能靠同源模型去“猜”了。这种方法的核心是序列比对——找出与目标蛋白相似的同源结构,把缺失的位置用已知模板补上。

我推荐MODELLER,因为它能严格保持主链构象,只补缺失段。

# MODELLER 脚本:补全缺失部分
from modeller import *
from modeller.automodel import *

env = environ()
# 目标序列(包含缺失部分)
align = alignment(env)
align.append(file='target.fasta', alignment_format='FASTA')
# 同源模板PDB
align.append(file='template.pdb', alignment_format='PDB')

# 运行自动建模,补全缺失loop和侧链
a = automodel(env, alnfile='alignment.pir',
               knowns='template', sequence='target')
a.starting_model = 1
a.ending_model = 5   # 生成5个候选模型,选打分最低的
a.make()

我建议生成3-5个候选模型,然后选DOPE打分最好的那个。用同源模型补全后,一定要做一次MR(分子置换)验证,看看补的部分是否与密度图一致。


4.5 工具推荐与选择策略

市面上工具不少,但每个都有自己的脾气。

  • Phenix:全自动,适合没经验的人直接跑,但黑箱感强。
  • Coot:手动控制力最强,适合精细化调整。
  • MODELLER:同源建模的老牌工具,支持复杂alignment。
  • Rosetta:物理能量函数最准,但计算慢,适合高精度需求。
我的个人建议:轻度缺失(1-5个侧链)直接上Coot手动补;中度量缺失(1-2个loop区域)用Phenix的AutoBuild;大片段缺失(超过10个残基)才上MODELLER或者Rosetta。别一开始就上大炮打蚊子。

4.6 避坑指南

我这些年修复过上百个PDB结构,踩过的坑数都数不过来。这里挑几个常见的分享给你:

  • 别超补:密度图里明明没有峰的地方,不要强行塞原子。会把R-free值推上去。
  • 注意环区:Loop区补全后一定要检查二面角(Ramachandran图),很多自动生成的环会跑到“不允许区”。
  • 同源模板别乱选:序列一致性低于30%的同源模板补出来的东西基本不能用。
  • 清理支链水:修复侧链后,原来放水的位置可能被新侧链挤掉,记得删掉冲突的水分子。
曾经有一次:我修复一个激酶结构,同源模板选了个人源序列相似度只有25%的细菌蛋白,结果补出来的一个loop区差了整整5Å。后来换了个哺乳动物模板,才匹配上密度图。模板选择真的很关键。

4.7 审计追踪:你每补一个原子都得留记录

修复完了,不代表就完事了。做科研的结构生物学家都会要求你留下审计追踪——谁、在什么时候、怎么补的、用了什么工具、参数是什么。这些信息在论文审核、PDB数据上传时都会用到。

我建议你建立一个简单的修复记录表:

修复条目 残基范围 方法 工具 参数 验证结果
缺失侧链 A:42 (Phe) 密度重建 Coot Autofit Rotamer Ramachandran OK
缺失Loop A:56-62 同源模型 MODELLER 5模型,选DOPE最低 RMSD vs 密度图 0.3Å
主链断裂 A:103-104 密度重建 Phenix.autobuild 默认参数 R-free 下降0.02

这个表你要是懒,可以写到PDB头文件里的REMARK记录中。这样别人下载你的PDB,一眼就能看到修复历史。


缺失原子修复决策流程

缺失原子修复流程图 检测缺失原子 有实验电子密度图吗? 是 否 电子密度重建 同源模型补全 Coot / Phenix 加载密度图 → 自动拟合 → 手动微调 MODELLER / Rosetta 序列比对 → 模板选取 → 多模型生成 密度验证 + 几何检查 DOPE打分 + Ramachandran检查 记录审计追踪 分辨率是关键:3.5Å以上的密度图慎用自动拟合

4.8 小结

缺失原子修复这事儿,说简单也简单——有密度靠密度,没密度靠模板。但想做好,就得有系统工程思维。先判断缺失的根因,再选合适工具,补完后别忘了跑验证和审计追踪。

我在实际项目中经常遇到新手一上来就开MODELLER去补侧链,结果补出来的东西跟密度图完全对不上。嗯,你想想看,本来一个密度图里弱弱的峰,硬被塞进去一个大侧链,那密度验证肯定过不了。所以一定要按流程走,别跳步骤。

这一章就聊到这儿。下次拿到残缺PDB的时候,先冷静分析,再决定走哪条路。