4. 输入输出:准备PDB文件,理解MolProbity输出报告

说到MolProbity批量校验,第一步就是准备PDB文件。你可能会想,PDB文件不都有现成的吗?有什么好准备的?我以前也这么觉得,直到有一次跑了整整一夜的批量校验,第二天一看日志——全部失败。原因呢?一个PDB文件里少了个TER记录,格式不对,MolProbity直接拒了。嗯,从那以后,我每次都会专门花时间做文件预处理。

这一章我们就来聊两件事:怎么把PDB文件收拾利索,以及MolProbity吐出来的报告到底该怎么看。

4.1 PDB文件准备——别让细节坏了大事

MolProbity对输入文件的要求说严格也严格,说宽松也宽松。它严格在格式必须规范,宽松在只要格式对了,基本上什么结构的PDB它都能吃。我建议你在跑批量之前,先过一遍下面这四道关。

4.1.1 格式规范检查

PDB文件有固定的列宽标准。ATOM和HETATM记录的列位不能错,原子名、残基名、链标识、坐标、occupancy、B-factor,一个萝卜一个坑。MolProbity的解析器是严格按列位读的,一旦错位,轻则跳过部分原子,重则直接报错。

我个人习惯用这个命令快速检查文件行数是否完整:

grep -c "^ATOM " your_structure.pdb
grep -c "^HETATM" your_structure.pdb

如果ATOM记录的行数跟你预期差太多,那就要小心了。我曾经遇到过一个结构,看上去没问题,结果一查发现链B的Cα原子全被截断了,原因是文件保存时发生了截断。那批校验结果我花了两天才排查出来,亏大了。

4.1.2 原子与残基完整性

MolProbity会检查每个残基的原子是否齐全。主链原子(N、Cα、C、O)缺一不可,侧链原子按照标准命名规范也必须完整。缺失原子会被标记为"incomplete",影响整体评分。

这里有个常见问题:备选构象(alternate conformation)。一个残基如果有A、B两种构象,MolProbity默认只处理占据率高的那个。如果你的结构里alternate conformation标记没有正确清理,MolProbity可能会误判原子缺失。我建议在提交前用以下方式统一处理:

# 保留occupancy最高的构象,删除altloc标记
pdb_selaltloc -1 your_structure.pdb > clean_structure.pdb

4.1.3 水分子与配体处理

水分子要不要保留?我的建议是:保留,但要注意两点。第一,水分子必须用HOH残基名,第二,水分子不能有异常高的B-factor(通常>80就值得怀疑)。MolProbity会单独计算水分子的碰撞分数,保留合理的水分子有助于获得真实的Clashscore。

配体处理则要更谨慎。MolProbity内置了一个配体字典库,只有库里的配体才会被正确识别和校验。如果你的结构含有特殊配体,比如某个课题组自己合成的抑制剂,那必须先确保配体的化学参数(键序、成键原子)在PDB文件中定义完整。

我常用的做法是给每个配体单独做一个checksum验证:

# 提取配体并检查连接信息
grep "^HETATM" your_structure.pdb | grep "LIG" | head -5
grep "^LINK" your_structure.pdb

如果LINK记录缺失,MolProbity就不会把配体当作一个整体来校验,而是当成一堆碎片原子,结果自然不准。

4.1.4 文件编码与换行符

这听起来很基础,但我在项目中真的遇到过。从Windows传到Linux服务器的PDB文件,换行符是CRLF,而不是Unix标准的LF。MolProbity在Linux下解析时,偶尔会因此读错行。建议统一转一下:

dos2unix your_structure.pdb
注意:PDB文件必须包含完整的END记录。缺少END记录时,MolProbity可能无法正确识别文件结尾,导致校验过程中出现不可预期的截断错误。批量处理前请务必确认每个文件都以END结尾。

4.2 MolProbity输出报告——读懂这张成绩单

MolProbity校验完成后会生成一份综合报告。报告是HTML格式的,也可以用文本模式输出。我一般看文本版,因为批量处理后方便grep汇总。但不管哪种格式,核心指标就那几个。

4.2.1 报告结构概览

一份标准的MolProbity报告包含以下几个模块:

模块 内容 优先级
整体统计 Clashscore、MolProbity Score、RMSD等 ★★★★★
Ramachandran分析 青睐区、允许区、异常值比例 ★★★★★
Rotamer分析 旋转异构体优劣分布 ★★★★☆
原子碰撞详情 每对碰撞原子的距离和VDW重叠 ★★★★☆
键长键角偏差 与理想值的RMSD ★★★☆☆
C-beta偏差 Cβ原子位置异常 ★★★☆☆

你看这张表,最核心的就是前三个模块。我一般先看整体统计,如果Clashscore和MolProbity Score都在绿色区间,再往下看具体的Ramachandran和Rotamer细节。如果分数本身就很差,那后面的细节就是用来定位问题的。

4.2.2 核心指标解读

Clashscore(碰撞分数)——这个指标衡量的是原子之间的非键合冲突。说白了,就是两个原子靠得太近了,在空间上"打架"了。

MolProbity会计算每1000个原子中发生严重碰撞的对数。分数越低越好。通常Clashscore < 5算是优秀,5-10算中等,>10就需要认真审视了。报告的百分位排名会告诉你这个分数在同类分辨率结构中的位置。

Ramachandran分析——二面角ϕ和ψ的分布。青睐区比例>98%可以认为结构很合理,95%-98%还算可以,低于95%那说明不少残基的骨架构象有问题。异常值残基一般会在报告里单独列出来,我建议逐个检查是否与配体结合或处于柔性loop区。

Rotamer分析——侧链旋转异构体与已知库的匹配程度。优良比例>95%算不错,低于90%就值得每个残基去排查了。

MolProbity综合评分——这是把Clashscore、Ramachandran和Rotamer等指标综合起来的加权分数。通常<1.0是非常好的,1.0-2.0可以接受,>2.0意味着结构质量有提升空间。

下面是一份实际输出报告的片段:

--- MolProbity Summary ---
Clashscore: 3.2 (98th percentile)
MolProbity Score: 1.15 (99th percentile)
RMSD for bond lengths: 0.008 Å
RMSD for bond angles: 1.23°

Ramachandran Plot:
  Favored: 97.8%
  Allowed:  1.9%
  Outliers: 0.3%

Rotamer Analysis:
  Favored: 95.2%
  Acceptable: 3.7%
  Poor: 1.1%

C-beta deviations: 2 outliers / 245 residues

这份报告显示结构质量相当不错。Clashscore 3.2在同分辨率结构中排98百分位,说明比98%的同类结构都要好。MolProbity Score 1.15也是很不错的成绩。Ramachandran青睐区97.8%,接近98%。唯一需要留意的是那0.3%的异常值残基和1.1%的poor rotamer。

4.2.3 常见问题标记

MolProbity报告会用特殊标记提醒你注意某些问题。常见的有:

  • ❗碰撞标记——两个原子之间的VDW重叠超过0.4Å,会在报告中用红色高亮
  • ⚠️ C-beta偏差——Cβ原子的位置偏离理想值超过0.25Å,提示侧链构象可能出错
  • ❌ cis肽键异常——非脯氨酸残基出现cis肽键,一般会被标为异常
  • 🔴 键长键角剧烈偏离——如果某处RMSD局部特别高,报告里会单独列出来

我个人经验是,批量校验时尤其要注意碰撞标记分布是否均匀。如果所有碰撞都集中在某个配体周围,那说明配体的位置可能没优化好;如果分散在整个蛋白里,那可能是分辨率本就不高,或者精修参数有问题。

小技巧:批量校验后,可以用 grep 把多个报告中的 Clashscore 和 MolProbity Score 一次性提取出来做排序,快速定位质量最差的那几个结构。我一般用 grep "^Clashscore" *.txt | sort -k2 -n 来排。

4.3 从输入到输出——全流程可视化

说了这么多,我把整个输入输出流程梳理成一张图。你拿着这张图去准备文件、解读报告,心里会更有底。

MolProbity 批量校验输入输出流程 输入准备阶段 PDB原始文件 格式规范检查 原子完整性校验 水分子处理 配体与LINK记录 校验处理阶段 MolProbity 批量校验 Ramachandran · Rotamer · Clash · 键长键角 输出解读阶段 综合评分报告 Clashscore · MolProbity Score 分项分析报告 Ramachandran · Rotamer · 异常列表 问题定位与修正 碰撞排查 · 残基修复 📌 批量操作要点: • 输入:统一文件命名规则,确保每个PDB以END结尾,换行符为LF • 输出:按结构名或批次名组织报告,用脚本汇总Clashscore和MolProbity Score做质量排序

你看这张图的流向——从左边原始PDB文件出发,经过格式检查和水分子配体处理,进入MolProbity校验引擎,最后输出综合评分和分项报告,再落到问题定位与修正。整个链条只要有一个环节没做好,后面的结果就会失真。

我每次做批量校验,都会先跑一个测试集(5-10个结构),快速验证输入文件没问题,再全量跑。这一步能省下大把排查时间。你想想看,如果300个结构跑了一整夜,第二天发现全是因为换行符不对——那得多冤。

核心要点复盘:
• PDB文件准备:格式规范 → 原子完整性 → 水分子与配体处理 → 换行符检查
• 输出报告解读:Clashscore优先 → Ramachandran次之 → Rotamer跟进 → 综合评分定档
• 批量场景:先用测试集验证,再全量运行,最后用脚本汇总报告做质量排序

嗯,准备好输入文件、看懂输出报告,MolProbity批量校验的两只脚就算是站稳了。接下来你就可以放心地往 pipeline 里塞数据,跑出来的结果自己心里有数,不会一头雾水。