拿到 AlphaFold 预测结果后,PDB / MMCIF 文件到底怎么打开和用?(完整入门教程)
2026/9/11 13:08:45 网站建设 项目流程

拿到 AlphaFold 预测结果后,PDB / MMCIF 文件到底怎么打开和用?(完整入门教程)

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

跑完run_alphafold.py之后,输出目录里堆着 PDB、CIF、JSON、pkl 一堆文件,不知从哪个下手?这套 AlphaFold 结果分析的起点其实只有四样东西:ranked_0.pdb(最佳结构)、对应的.cif(mmCIF 版本)、pae_*.json(链间误差),以及藏在 PDB 里的那根"置信度颜色条"(pLDDT)。本文带你完成三件事:10 秒看懂目录里哪些文件值得打开、用 PyMOL 和 Biopython 把结构可视化出来、再跑一遍自动质量报告。全文只做蛋白质结构预测结果的判读与加工,不涉及重跑模型。

你的输出目录里到底有什么

不用被文件数量吓到,真正日常会打开的就这几个(以单机版model_ranked_0为例,网络版命名略有不同):

文件干什么用打开频率
unrelaxed_*.pdb/relaxed_*.pdb原始预测 / 经 Amber 弛豫后的坐标;ranked_0即置信度第一的模型最高
unrelaxed_*.cif同一结构的 mmCIF 版本,带完整元数据偶尔
pae_*.jsonPAE 矩阵,判多链相对方位是否靠谱多聚体必查
confidence_*.json单链 pLDDT / ipLDDT / ptm 数值汇总出报告时

其余features.pklresult_*.pkltimings.json是输入特征和中间结果,判读阶段用不上,先无视。记住一句口诀:看置信度找 pLDDT,看结构找 ranked_0,看多链关系找 PAE

pLDDT:结构上的那根颜色条 🎨

AlphaFold 把每个残基的置信度分数直接写进了 PDB 的 B 因子(温度因子)列——不是热运动参数,别按传统 X 射线结构去理解它。PyMOL 里一句spectrum b就能把它渲染成蓝→白→红的渐变色条,一眼看出哪段可信。低分区域通常意味着 MSA 证据不足或序列保守性弱,不能直接当结论扔掉,但必须标注"该区域未经验证"。

按 pLDDT 分数着色的 AlphaFold 结构

pLDDT 三档快速判读:

分数区间含义怎么用
90–100高置信,可放心做功能分析直接用作对接/设计输入
70–90可用但谨慎结论里注明置信度
50–70结构可能出错单独验证后再下结论
< 50基本不可靠只当序列信息用

PDB 还是 MMCIF?30 秒决策

维度PDBMMCIF
可读性肉眼可扫,定宽列好编辑表状长行,不适合手改
扩展性弱,塞不下新元数据强,支持任意新增项目
下游工具对接/MD 软件几乎只认它数据库提交、新版可视化工具首选
体积偏大更紧凑

推荐:给人看和跑对接用 PDB,要提交数据库或留元数据用 mmCIF。两者信息等价,Biopython 几行就能互转:

from Bio.PDB import PDBParser, MMCIFParser, PDBIO from Bio.PDB.mmcifio import MMCIFIO def pdb_to_cif(pdb, cif): s = PDBParser(QUIET=True).get_structure('x', pdb) MMCIFIO().set_structure(s) and MMCIFIO().save(cif) def cif_to_pdb(cif, pdb): s = MMCIFParser(QUIET=True).get_structure('x', cif) io = PDBIO(); io.set_structure(s); io.save(pdb)

最小可运行示例:用 Biopython 打开结构

下面这段直接敲就能跑,覆盖"解析→数链→取 CA 坐标→算 pLDDT 均值":

from Bio.PDB import PDBParser import numpy as np st = PDBParser(QUIET=True).get_structure('af', 'ranked_0.pdb') for ch in st[0]: ca = [a for r in ch for a in r if a.get_name() == 'CA'] print(f"chain {ch.get_id()}: {len(ca)} residues, " f"pLDDT mean {np.mean([a.get_bfactor() for a in ca]):.1f}") xyz = np.array([a.get_coord() for a in ca]) print('CA shape:', xyz.shape)

常见报错先自查:

  • PDBParser报"no atoms"或坐标缺失:确认文件路径没指错、文件确实是ATOM记录(head看一眼),别把.cif塞给 PDBParser。
  • IndexError或链 ID 变成A/B/C…的乱序:多聚体输出里链 ID 由输入顺序决定,用ch.get_id()按名字取链,别假设"第一条就是 query"。
  • Biopython 版本过老读不了新版 mmCIF:先pip install -U biopython再试。

三条最常用的下游工作流

a) PyMOL 快速可视化

把这段粘进 PyMOL 命令行,旋转、缩放、png out.png导出即可进报告:

load ranked_0.pdb show cartoon spectrum b, blue_white_red, minimum=0, maximum=100 bg white

小技巧:spectrum b的上下限就对应 pLDDT 0–100,所以颜色条天然就是置信度图;想看"骨架干净版",把show sticks换掉即可。

b) 多模型叠加看 RMSD

想确认预测稳不稳,把 ranked_0 和 ranked_1 叠起来算 RMSD。这一步很多人会卡住:Superimposer要求两边原子数一致,所以先都只取 CA。

from Bio.PDB import PDBParser, Superimposer import numpy as np p = PDBParser(QUIET=True) a = p.get_structure('a', 'ranked_0.pdb').get_atoms() b = p.get_structure('b', 'ranked_1.pdb').get_atoms() ca_a = [x for x in a if x.get_name() == 'CA'] ca_b = [x for x in b if x.get_name() == 'CA'] si = Superimposer(); si.set_atoms(ca_a, ca_b) print('RMSD =', round(si.rms, 2), 'A')

RMSD 小于 1.5 Å 基本可认为结构收敛;若只有 C 端飘走,回头查那段的 pLDDT,多半是低置信区在摆。

c) 批量质量报告(pLDDT + PAE 出图)

写进脚本套在for model in ranked_0..3循环里,一次产出全套图:

import json import matplotlib.pyplot as plt pae = json.load(open('pae_ranked_0.json'))['pae'] plt.figure(figsize=(8, 6)) plt.imshow(pae, cmap='viridis', vmin=0, vmax=30) plt.colorbar(label='PAE (A)') plt.title('PAE of ranked_0') plt.savefig('pae_ranked_0.png', dpi=150)

pLDDT 那条线直接用前面 Biopython 拿到的 B 因子列表绑在第二个子图里即可;两张图加一句"平均 pLDDT / ipLDDT"就是一份能贴进 group meeting 的蛋白质结构可视化报告。

容易踩的 4 个坑

  • relaxed vs unrelaxed 混用:relaxed 是 Amber 弛豫后的"美化版",坐标更光滑;unrelaxed 才是模型原始输出。发表和对接用 relaxed,做方法学对比时别拿 relaxed 去比 unrelaxed,解法:文件名前缀锁死,一个分析里只用一种。
  • 多 MODEL 记录解析报错:个别输出里带MODEL/ENDMDL,Biopython 默认会把多模型全读进来、残基数直接翻倍。解法:get_structure('x', path, model=0)只取第一个,或先删掉 MODEL 行。
  • 链 ID 缺失/乱序:老版本或单链手动编辑的 PDB 链 ID 列是空格,get_id()拿到''导致字典 key 撞车。解法:ch.get_id() or '?'兜底,或解析前用sed补上链列。
  • pLDDT 阈值误读:把"全链均值 85"当"每个残基都可靠"。解法:阈值判断永远在逐残基 B 因子上做,均值只写进摘要。

下一步

  • 想改 B 因子写入逻辑或 PDB 生成细节,翻 protein.py 的from_predictionto_pdb
  • 想知道每个输出文件是谁写出来的,看 run_alphafold.py 里_save_*系列函数。
  • Biopython 解析细节查官方文档的 PDB 模块页;提交数据库前对照 PDB 官网的 mmCIF 数据字典自查一遍。

先把你目录里的ranked_0.pdb拖进 PyMOL,敲spectrum b——看到颜色条的那一刻,这篇就算白读了。

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询