PDB文件格式总览:历史、结构与坐标

说实话,PDB格式是搞结构生物学绕不开的第一个门槛。我记得刚入行那会儿,拿到一个PDB文件,打开一看全是数字和字母,完全摸不着头脑。今天我们就把它拆开看看,到底里面装了些什么。

从历史说起:为什么会有PDB格式?

PDB,全称是Protein Data Bank。上世纪70年代,科学家们开始用X射线晶体学解析蛋白质结构。问题是——这些结构数据存成什么样?各存各的,根本没法交换。1971年,Brookhaven国家实验室牵头,定了一套标准格式。说白了,就是给全世界蛋白质结构定了个统一的“户口本”。

现在的PDB格式由wwPDB(worldwide Protein Data Bank)维护。最新版本是3.3,从2011年沿用至今。你想想看,一个格式活了50多年,还在被广泛使用,这本身就说明了它的价值。

小知识: PDB数据库里目前有超过20万个结构。每天还在以几十个的速度增长。处理这些数据,不懂格式还真不行。

记录类型:文件里到底写了什么?

打开一个PDB文件,每行都有特定的含义。行首的关键字就是“记录类型”。我挑几个最常用的来讲。

记录类型 说明 重要性
HEADER 文件头,包含分子类型、发布日期 必须,第一行
ATOM 标准氨基酸/核苷酸原子坐标 核心数据
HETATM 非标准原子(水、配体、修饰基团) 核心数据
TER 链终止标识 分割链用
END 文件结束 必须,最后一行
CONECT 原子连接关系 可选但常用

这里有个常见坑——ATOM和HETATM的区别。我在项目中遇到过好几次,有人把配体原子当ATOM处理,结果拓扑结构全乱了。记住:ATOM只用于标准20种氨基酸和标准核酸的原子。其他东西,包括水分子、金属离子、底物、修饰氨基酸,统统用HETATM。

坐标系统:原子在哪儿?

坐标这部分,说白了就是三维空间里的xyz。单位是Å(埃,1 Å = 10⁻¹⁰米)。PDB用直角坐标系,不是球坐标也不是分数坐标。

看一下典型的ATOM行长什么样:

ATOM      1  N   ALA A   1      -0.525   1.362   0.000  1.00  0.00           N
ATOM      2  CA  ALA A   1       0.000   0.000   0.000  1.00  0.00           C
ATOM      3  C   ALA A   1       1.520   0.000   0.000  1.00  0.00           C
ATOM      4  O   ALA A   1       2.099   0.836   0.740  1.00  0.00           O
ATOM      5  CB  ALA A   1      -0.492  -0.921   1.101  1.00  0.00           C
TER
HETATM   10  O   HOH A 201       2.500   1.500   0.500  1.00  0.00           O

格式非常固定,每个字段都占固定列宽。我列个表方便你对照:

列范围 字段 说明
1-6 记录类型 ATOM或HETATM,右对齐
7-11 原子序号 整数,从1开始
13-16 原子名称 如CA、CB、N、O
17 备选位置 空格或A/B/C,处理无序结构
18-20 残基名称 三个字母,如ALA
22 链标识 单个字母,A/B/C...
23-26 残基序号 整数
27 插入码 处理序列插入
31-38 x坐标 浮点数,单位Å
39-46 y坐标 浮点数
47-54 z坐标 浮点数
55-60 占有率 0-1之间,处理无序
61-66 温度因子 B因子,反映原子柔动
77-78 元素符号 如 C、N、O、FE
注意: 列范围是固定的,不能多一个空格也不能少一个。我曾经写过一个解析脚本,忘了处理列宽,结果读出来的坐标全是乱的。用Python的字符串切片,老老实实按列取。

链标识:多链结构怎么区分?

蛋白质常常是多个链组装在一起的。比如抗体有重链和轻链,血红蛋白有4条链。PDB用链标识(Chain ID)来区分。在ATOM行的第22列,就是一个大写字母。

常见的约定:

  • A链、B链、C链——按字母顺序排
  • 如果是对称复合物,一般用A、B、C、D...
  • 蛋白质和DNA共存时,蛋白用A,DNA用B或C
  • 链标识可以是字母或数字,但推荐用字母

你看上面那个例子,“ALA A 1”就表示是A链的第1号丙氨酸残基。两个不同链的残基即使序号相同,也完全不是一回事。

核心知识框架图

上面讲了这么多,我画个图帮你理清思路。这个图展示了PDB文件的整体结构:

PDB文件核心结构 HEADER / TITLE ATOM 记录 标准残基原子 HETATM 记录 水、配体、修饰基团 TER 记录 链结束标识 坐标数据 (xyz / 占有率 / B因子) 字段固定列宽,解析时必须严格对齐 链标识 (Chain ID) — 多链结构区分 CONECT / END 记录 图注:PDB文件按顺序组织,从头部信息到原子坐标,再到链终止和连接关系
实操要点: 接手一个PDB文件后,先按记录类型分类统计。数一下有多少ATOM行,多少HETATM行,多少TER行。这能帮你快速判断文件结构是否完整。

常见陷阱与避坑指南

实际操作中,PDB文件经常不按规矩来。我总结几个最常见的坑:

  • 备选位置:有些原子在电子密度图里有两个可能位置。PDB会用A和B标记。处理时要么取A,要么两个都保留,别混了。
  • 插入码:晶体结构里偶尔会有插入的残基,序号后面带字母。比如残基序号15A、15B。排序时别把它当数字处理。
  • 非标准残基:有些修饰氨基酸虽然名字看着像标准残基,但用的是HETATM。比如磷酸化的丝氨酸,在PDB里叫SEP,是HETATM。
  • TER缺失:有些老文件或质量差的结构,TER行可能不全。解析时如果遇到链标识突然变化,就相当于隐式的TER。
实用技巧: 写解析代码时,优先用现成的库。Python的Biopython、BioJava都自带PDB解析器。自己手写解析器的话,一定要做列宽校验。我曾经手写过一个,因为一个空格差异,解析了500个结构结果全是错的。