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 PDB | https://www.rcsb.org/ | 美国 |
| PDBe | https://www.ebi.ac.uk/pdbe/ | 欧洲(英国) |
| PDBj | https://pdbj.org/ | 日本 |
| BMRB | https://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 文件下载,你只需要记住三件事:
- 单个文件用浏览器或
wget https://files.rcsb.org/download/XXXX.pdb - 批量文件用循环 + sleep,或用 biopython 的
retrieve_pdb_file - 长期维护用 rsync 镜像,注意
--delete和子目录映射