PDB文件格式详解:原子坐标、链标识、残基命名、文件头信息
说到PDB文件,很多人第一反应就是「那个存蛋白结构的文本文件」。说白了,它就是一套标准的坐标说明书。我刚开始接触PDB时,看到这个格式真的有点懵,感觉像在读天书。但搞清楚了它的设计思路,你会发现它其实非常工整。
PDB文件是文本格式。每行80列。80列这个数字,是从上世纪打孔卡时代传下来的。嗯,到现在也没变过。你想想看,一个格式活了50多年,靠的就是这种死板。死板在数据交换中反而是好事。
整体结构:从头部到原子数据
一个标准的PDB文件,可以分成两大块:文件头和数据行。文件头告诉你这个蛋白的背景信息,数据行告诉你每个原子的精确位置。
我个人习惯这么理解:PDB就像一本蛋白的「身份档案」。前半本是档案封面,后半本才是每个人的坐标信息。
下面是PDB文件中常见的记录类型。我建议你先记住这些标签,后面的实操会反复用到。
| 记录类型 | 含义 | 必须/可选 |
|---|---|---|
| HEADER | 分子类型、沉积日期、PDB ID | 必须 |
| TITLE | 结构标题描述 | 可选 |
| REMARK | 实验细节、修正记录 | 可选(但常见) |
| ATOM | 标准氨基酸/核酸原子坐标 | 必须 |
| HETATM | 非标准分子原子坐标(水、配体、辅因子) | 可选 |
| CONECT | 原子间成键连接关系 | 可选 |
| END | 文件结束标志 | 必须 |
ATOM记录:坐标数据的核心
ATOM行是PDB里最重要的记录。它占了80列中的每一个位置,都有明确含义。我来拆解一下。
COLUMNS DATA TYPE FIELD DEFINITION
-----------------------------------------------------------------------------
1 - 6 Record name "ATOM "
7 - 11 Integer serial Atom serial number.
13 - 16 Atom name Atom name.
17 Character altLoc Alternate location indicator.
18 - 20 Residue name resName Residue name.
22 Character chainID Chain identifier.
23 - 26 Integer resSeq Residue sequence number.
27 AChar iCode Code for insertion of residues.
31 - 38 Real(8.3) x Orthogonal coordinates for X.
39 - 46 Real(8.3) y Orthogonal coordinates for Y.
47 - 54 Real(8.3) z Orthogonal coordinates for Z.
55 - 60 Real(6.2) occupancy Occupancy.
61 - 66 Real(6.2) tempFactor Temperature factor (B-factor).
77 - 78 LString(2) element Element symbol, right-justified.
79 - 80 LString(2) charge Charge on the atom.
我来挑几个关键字段说说。你在写解析脚本时,这些位置必须盯死。
原子坐标(X, Y, Z)
坐标字段在第31-54列,每个8列宽。单位是Å(埃米)。保留3位小数。我之前做过一个项目,把坐标精度从6位小数截断到4位,结果RMSD计算的值就变了0.02 Å。嗯,做结构比对时,坐标的解析精度不能省。
避坑:注意坐标值的正负号占位。坐标可能是负数,负号占用第31、39或47列的位置。我曾经从一个PDB文件中解析坐标时,直接把第31-54列当成浮点数解析,结果读出来一堆乱码。后来才发现,有些列末尾有空格,字符串转浮点前必须先trim。
链标识(chainID)
链标识在第22列,就一个字符。可以是字母A-Z,也可以是数字。为什么会有链标识?一个PDB文件不一定只有一个蛋白链。比如一个抗体-抗原复合物,可能有4条链:A、B、C、D。链标识就是用来区分这些链的。
我在做结构相似性验证时,经常要把不同链的结构分开做比对。如果你直接拿整个文件的原子去算RMSD,那是没意义的。必须按链ID分组。我的做法是:先用链ID过滤,再对每个链单独计算。
残基命名(resName)
残基名在第18-20列,三字母编码。蛋白质用标准氨基酸编码:ALA、CYS、ASP……核酸用:DA、DC、DG、DT、A、C、G、U。
这里有个坑:非标准残基。比如磷酸化的丝氨酸叫SEP,甲基化的赖氨酸叫MLZ。我建议在研究中直接忽略这些非标准残基,或者把它们映射到标准残基上,不然RMSD计算会出问题。
我记得有一次处理一个刚发布的晶体结构,它用了HIS的「HID」「HIE」「HIP」三种命名,差点把我整懵了。这三种其实是组氨酸的三种质子化状态。如果你要做序列比对,必须把这些映射回HIS,不然序列会断掉。
文件头信息:别小看这几行
文件头在ATOM记录之前。虽然不直接用于坐标计算,但它提供了关键背景。
- HEADER行:告诉你这个结构是什么类型。比如是不是病毒、是不是酶。我一般用这个字段做分类统计。
- TITLE行:结构标题,描述了分子名称和功能。有助于理解数据来源。
- REMARK行:非常关键。它记录了实验方法(X射线、NMR、冷冻电镜)、分辨率、R因子等信息。做结构相似性验证时,低分辨率结构的坐标误差大,用它们做比对要小心。
另外,REMARK 3记录了精修信息,REMARK 200记录了实验方法。如果你从PDB下载一个结构,想确认它是不是够「好」,先查REMARK 200里的分辨率。一般来说,分辨率高于3.0 Å的结构,坐标才值得用来做细致的相同性验证。
其他关键记录:HETATM和CONECT
HETATM跟ATOM的格式几乎一样,只是记录类型不同。它用于非标准分子:水分子、配体、辅因子、金属离子等。
做结构相似性验证时,一般只比对蛋白质主链原子。但如果你研究的是配体结合模式,HETATM就是主角。我建议流程中单独提取ATOM和HETATM,分别处理。
CONECT记录保存了原子间的连接关系。这在可视化时有用,但在计算结构相似性时,一般用不到。除非你要做图论相关的比对。
一个完整的PDB片段示例
下面是一个真实的PDB文件片段。你可以对照上面的列定义,自己试试解析。
HEADER HYDROLASE 01-JAN-20 6XYZ
TITLE CRYSTAL STRUCTURE OF SOME PROTEIN
REMARK 2 RESOLUTION. 1.95 ANGSTROMS.
ATOM 1 N ALA A 1 11.112 12.345 13.567 1.00 20.00 N
ATOM 2 CA ALA A 1 12.000 13.100 14.200 1.00 21.50 C
ATOM 3 C ALA A 1 11.500 14.500 14.600 1.00 22.30 C
ATOM 4 O ALA A 1 10.400 14.700 14.200 1.00 22.10 O
ATOM 5 CB ALA A 1 13.400 13.300 13.500 1.00 21.00 C
HETATM 6 O HOH A 401 15.100 16.200 10.800 1.00 35.00 O
END
你看,第1-6列是ATOM,第13-16列是原子名,第18-20列是残基名ALA,第22列链ID是A,第23-26列残基号,第31-54列是XYZ坐标。后面的B-Factor是20到22之间的值。这些信息足够我们做后续的结构比对了。
图里面我把PDB文件结构拆成了三个主要层次。从上往下看,文件头在最上面,然后是原子坐标区,再往下是其他记录和应用场景。坐标区和文件头之间的连接代表了「解析顺序」:先读头,再读体。箭头指向坐标详细区,展示了定位时具体要关注哪些字段。