PDB文件格式详解:原子坐标、链标识、残基命名、文件头信息

说到PDB文件,很多人第一反应就是「那个存蛋白结构的文本文件」。说白了,它就是一套标准的坐标说明书。我刚开始接触PDB时,看到这个格式真的有点懵,感觉像在读天书。但搞清楚了它的设计思路,你会发现它其实非常工整。

PDB文件是文本格式。每行80列。80列这个数字,是从上世纪打孔卡时代传下来的。嗯,到现在也没变过。你想想看,一个格式活了50多年,靠的就是这种死板。死板在数据交换中反而是好事。

整体结构:从头部到原子数据

一个标准的PDB文件,可以分成两大块:文件头和数据行。文件头告诉你这个蛋白的背景信息,数据行告诉你每个原子的精确位置。

我个人习惯这么理解:PDB就像一本蛋白的「身份档案」。前半本是档案封面,后半本才是每个人的坐标信息。

核心思路:PDB按行分类,每行前6个字符(记录类型)决定这行是干嘛的。解析PDB时,代码的第一件事就是读这6个字符。

下面是PDB文件中常见的记录类型。我建议你先记住这些标签,后面的实操会反复用到。

记录类型 含义 必须/可选
HEADER 分子类型、沉积日期、PDB ID 必须
TITLE 结构标题描述 可选
REMARK 实验细节、修正记录 可选(但常见)
ATOM 标准氨基酸/核酸原子坐标 必须
HETATM 非标准分子原子坐标(水、配体、辅因子) 可选
CONECT 原子间成键连接关系 可选
END 文件结束标志 必须
技巧:解析时先跳过所有非ATOM/HETATM行,可以大幅提升读取速度。我一般在批量解析前,先用grep数一下有多少条ATOM行,避免内存爆掉。

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过滤,再对每个链单独计算。

注意:有些PDB文件里链标识是空格。在这种情况下,默认只有一条链。解析时不要硬性假设链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文件结构概览 文件头 HEADER TITLE REMARK 原子坐标区 ATOM serial / name / resName chainID / resSeq 坐标详细 X (31-38) Y (39-46) Z (47-54) occupancy / B-factor 其他记录 HETATM CONECT 应用场景(结构相似性验证) 提取ATOM → 按链分组 → 提取坐标 过滤HETATM / 处理非标准残基

图里面我把PDB文件结构拆成了三个主要层次。从上往下看,文件头在最上面,然后是原子坐标区,再往下是其他记录和应用场景。坐标区和文件头之间的连接代表了「解析顺序」:先读头,再读体。箭头指向坐标详细区,展示了定位时具体要关注哪些字段。