PDB 文件格式入门

PDB,全称 Protein Data Bank,是结构生物学的"普通话"。你想想看,全球所有实验室解析出来的蛋白质、核酸、复合物结构,最后都得用这个格式存起来。我个人习惯把 PDB 称为"结构界的 FASTA"——简单、通用、但坑也不少。

这门课第一节,咱们先把 PDB 的来龙去脉摸清楚。从哪来、到哪去、怎么下载,聊明白再说后续处理的事。

1.1 为什么要有 PDB 格式?——一点历史

上世纪 70 年代初,晶体学刚起步,几个实验室各自用自己定义的格式存坐标。结果想对比两个结构?对不起,先写个脚本转格式。太折腾了。
1971 年,美国 Brookhaven 国家实验室牵头,建立了 Protein Data Bank。同时定义了一套统一的坐标文件格式——就是现在说的 PDB 格式。我翻过当年最早的 PDB 文件,只有几十个原子坐标,注释也比现在少得多。

几个关键时间节点:

  • 1971 — PDB 成立,首批 7 个结构
  • 1998 — 管理移交到 RCSB(Rutgers、UCSD、SDSC 联盟)
  • 2003 — wwPDB 成立,四大站点统一标准
  • 2019 — PDBx/mmCIF 格式成为推荐格式,但 PDB 格式仍广泛使用

现在 PDB 里存了 20 多万个结构,每年新增约 1.5 万。你想想看,要是没这个统一格式,咱们做结构数据处理得多痛苦。

1.2 PDB 文件里到底写了什么?

PDB 文件是纯文本,每行 80 个字符。为什么是 80?因为当年打孔纸带和早期终端就一行 80 列。我一直觉得这个历史包袱很有趣——到现在我们还在用 80 列当标准。

文件内容按 记录类型 组织,每行开头 6 个字符标识这一行是干啥的。举个例子:

HEADER    HYDROLASE                               22-JAN-98   1BTL
TITLE     X-RAY STRUCTURE OF SUBTILISIN BPN' ...
COMPND    MOL_ID: 1;
          MOLECULE: SUBTILISIN BPN';
ATOM      1  N   ALA A   1      11.274  28.635   7.769  1.00 15.80           N
ATOM      2  CA  ALA A   1      12.244  27.561   7.467  1.00 15.00           C
TER       3      ALA A   1
HETATM 1234  O   HOH A 200       5.123  10.456  12.789  1.00 20.00           O
END

常用的记录类型我列在下面,方便你查询:

记录类型作用备注
HEADER分子类型、沉积日期、PDB ID每个文件只有一行
TITLE结构标题可能有多行
COMPND化合物/分子描述解析对象信息
ATOM标准氨基酸/核苷酸原子坐标核心数据
HETATM非标准原子(配体、溶剂等)格式与 ATOM 相同
TER链终止标记每条链末尾
CONECT连接性信息非标准键
SSBOND二硫键—
REMARK实验注释、精修统计等最长的部分
END文件结尾—

一个小经验: 写脚本处理 PDB 的时候,别只解析 ATOM 行。HETATM 里经常藏水分子、配体、金属离子,少了它们后续计算可能出错。

1.3 PDB 数据都从哪来?——四大站点与镜像

现在全球有四个指定站点,构成 wwPDB(Worldwide Protein Data Bank)联盟。数据每天同步,你从哪个下都一样。但我建议用离自己近的,下载快。

站点URL(示例)所在地区
RCSB PDBhttps://www.rcsb.org/美国
PDBehttps://www.ebi.ac.uk/pdbe/欧洲(英国)
PDBjhttps://pdbj.org/日本
BMRBhttps://bmrb.io/美国(NMR 数据为主)

实际工作中你还会遇到一些特殊数据来源:

  • 本地 PDB 镜像:有些机构内部有 rsync 镜像,比如我们实验室就用一台服务器每夜同步 PDB 全部数据。
  • 预编译数据集:比如 SCOP、CATH、Dali 等数据库会提供筛选后的 PDB 列表。
  • AlphaFold 结构库:虽然格式是 mmCIF,但很多工具也支持转成 PDB。

1.4 怎么下载 PDB 文件?——条条大路通罗马

嗯,这里要注意。新手最常犯的错误是——在浏览器里一个一个点下载。几百个结构?点到手抽筋。下面我列出最常用的几种方式。

1.4.1 网页下载(适合单文件)

去 RCSB 搜索 PDB ID,点 Download → PDB Format。比如 1BTL:

https://files.rcsb.org/download/1BTL.pdb

1.4.2 批量下载用 wget / curl

假设你有 10 个 PDB ID 列表 ids.txt:

while read pdb; do
    wget "https://files.rcsb.org/download/${pdb}.pdb"
done < ids.txt

避坑指南: 我曾经一次性提交了 5000 个 ID 的请求,结果被 RCSB 临时封 IP。建议加个 sleep 1 或者用官方 API 限速。还有,大文件如果中断,wget 默认不会续传,加 -c 参数。

1.4.3 利用 FTP 或 rsync 整库同步

如果你要下载整个 PDB 的一周更新量,或者建立本地镜像,用 rsync 最稳:

rsync -avz --delete \
    rsync.rcsb.org::ftp_data/structures/divided/pdb/ \
    /data/pdb/

PDB 把文件按 PDB ID 中间两位分了子目录,比如 bt/ 下面有 pdb1btl.ent.gz。注意压缩格式和命名风格。

1.4.4 通过 Python 库 biopython / pypdb

在我看来,写脚本用 biopython 最舒服。一行代码搞定:

from Bio.PDB import PDBList
pdbl = PDBList()
pdbl.retrieve_pdb_file("1BTL", pdir=".", file_format="pdb")

这段会下载 1btl.pdb 到当前目录。biopython 还支持 mmCIF、PDBML 格式。我建议日常用这个,出错自动重试。

1.5 知识结构总览

下面这张图整理了本章的核心脉络。你可以用它当一张记忆地图:

PDB 文件格式入门 · 知识框架 PDB 文件格式 历史起源 记录类型(ATOM等) 四大 wwPDB 站点 下载方法 网页下载 wget / curl 批量 rsync 整库同步 biopython 脚本 ⚠ 注意:下载策略要考虑限速、续传、压缩格式,避免被封锁

总结一下: 搞定 PDB 文件下载,你只需要记住三件事:

  1. 单个文件用浏览器或 wget https://files.rcsb.org/download/XXXX.pdb
  2. 批量文件用循环 + sleep,或用 biopython 的 retrieve_pdb_file
  3. 长期维护用 rsync 镜像,注意 --delete 和子目录映射