PDB文件基础:格式规范、原子坐标与模型质量指标
做结构生物学的人,几乎每天都要跟PDB文件打交道。但说实话,很多人只把PDB当成一个“坐标存储器”,忽略了它背后那一套严谨的格式规范。我刚开始接触结构校验时,就吃过PDB格式的亏——某个原子名多了个空格,导致整条链对接失败,排查了整整一天。所以这一章,我想跟你好好聊聊PDB文件到底长什么样,它怎么描述原子,以及那些藏在线条里的质量指标到底在说什么。
PDB文件的基本框架
一个标准的PDB文件,说白了就是一组按固定长度排列的文本行。每行以记录类型开头,比如HEADER、ATOM、TER、END等等。我自己的习惯是,拿到一个PDB文件,先瞄一眼REMARK字段和HEADER,那里面常常藏着分辨率、R值等关键信息。
我们来看一个最简的PDB骨架:
HEADER HYDROLASE 01-JAN-00 1XYZ
TITLE THE STRUCTURE OF SOMETHING
COMPND MOL_ID: 1;
REMARK 2 RESOLUTION. 2.00 ANGSTROMS.
ATOM 1 N ALA A 1 1.234 2.345 3.456 1.00 10.00 N
ATOM 2 CA ALA A 1 1.567 2.678 3.789 1.00 11.00 C
ATOM 3 C ALA A 1 1.890 2.901 3.012 1.00 12.00 C
TER 4 ALA A 1
END
注意每列的位置都是严格固定的——原子序号占第7-11列,原子名占13-16列,残基名占18-20列,链标识22列,残基序号23-26列,坐标x、y、z各占31-38、39-46、47-54列,然后占用率(occupancy)和温度因子(B-factor)各占55-60和61-66列。少一个空格,整个文件可能就被读取器拒之门外。
原子坐标的“内涵”
一个原子记录里除了xyz坐标,还有两个容易被忽略的参数:占用率(occupancy)和B因子(temperature factor)。
- Occupancy (OCC):表示该原子在晶体中的占据比例。通常主链原子是1.0,如果某个侧链有两种构象,就会分别赋予0.5的比例。MolProbity在校验时,会特别关注低占用率原子的合理性。
- B-factor (B):衡量原子位置的震动幅度。单位是Ų。如果某个氨基酸侧链的B值比周围高很多,往往意味着局部柔性大,或者模型精度差。我习惯在批量校验前先跑一遍B-factor分布图,看看有没有明显异常。
你想想看,如果拿到一个PDB,里面某个原子的B值是100,而周围都是20,那大概率是建模时出了错。MolProbity里的“B-factor outlier”指标就是干这个的。
模型质量指标:从R值到Clashscore
结构生物学家有很多指标来评判一个模型的“好坏”。这些指标通常会写在PDB文件的REMARK行里,或者在结构发布时随附的validation报告中。我总结了几个最常用的:
| 指标 | 含义 | 常见阈值 | MolProbity中对应项 |
|---|---|---|---|
| R-work | 模型与实验电子密度的拟合程度(训练集) | 一般 < 0.25 | 无直接报告,但输入需含F/sigF |
| R-free | 模型与未参与精修的5%反射数据的拟合 | 比R-work高0.05以内 | 无直接报告,但输入需含R-free标记 |
| Clashscore | 每1000个原子中空间冲突的数量 | 优秀 < 10, 可接受 < 20 | 核心输出项 |
| Ramachandran outliers | 主链二面角不合理的残基比例 | 优秀 < 1% | 核心输出项 |
| Rotamer outliers | 侧链二面角不合理的残基比例 | 优秀 < 1% | 核心输出项 |
嗯,这里要注意一点:MolProbity不直接计算R-work/R-free,因为它不是精修程序。你需要事先从结构精修软件(比如REFMAC、Phenix)拿到这些值。但它会基于你提供的结构模型,自动计算clash、rotamer、Ramachandran等几何指标。这些指标才是它校验的核心。
PDB格式中的“坑”与规避
我在项目里踩过不少PDB格式的坑,挑几个典型的说说:
- 链标识重复:同一个PDB里不同模型(NMR结构)可能使用相同的链名,MolProbity在校验时会默认把它们当作同一个链,造成冲突误报。解决办法是在提交前用脚本重命名链,或者使用多模型PDB时选择“per-model validation”。
- 原子名不对齐:比如“CA”与“CA ”(多空格)在有些解析器里会被当成不同原子。MolProbity的解析器比较严格,但最好还是保持标准格式。我写过一个Python脚本,用
pdb-tools库统一格式化所有PDB文件。 - 缺少TER记录:蛋白质链结束后如果没有TER行,MolProbity会认为所有原子属于同一条链,导致计算clash时产生假阳性。务必检查每个链尾是否有TER。
- 水分子和其他配体:有些PDB文件把水分子和配体混杂在ATOM记录里,MolProbity默认会处理水分子(标记为HOH),但其他小分子如果没有正确的三维坐标和连接性,可能引起clash误报。我通常会在提交前先用
grep或PyMOL把配体提取出来单独校验。
避坑指南:我曾经因为忘记添加TER记录,导致一个六聚体结构被看成一条长蛋白,MolProbity报出上千个clash。后来我用pdb_validate工具跑了一遍格式检查,才发现问题。从那以后,我每次批量处理前都会先跑一次格式校验。
PDB文件是结构生物学的“通用语言”,格式必须严谨。原子坐标中的占用率和B因子直接反映模型质量。MolProbity的主要校验目标是几何合理性(clash、rotamer、Ramachandran),而非R值。掌握这些基础,你才能正确理解MolProbity的输出报告。
这张图把PDB文件到MolProbity校验的整个数据流串起来了。你发现没有?原子坐标是连接“格式规范”与“质量指标”的桥梁。格式不对,坐标就解析错;坐标有偏差,质量指标就失真。所以打好PDB基础,是后面所有批量校验工作的前提。
我每次开始一个新项目,都会先把所有待校验的PDB文件扔进一个统一的格式检查脚本里——这个脚本我写得比较糙,但能查出90%的格式问题。嗯,等后面讲自动化流程时,我再把这个脚本分享给你。先记住一条:干净的数据,才能跑出可靠的校验结果。