从序列到3D结构图:AlphaFold蛋白质结构可视化实操
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
AlphaFold 是 DeepMind 开源的蛋白质结构预测项目,除了预测本身,它内置了一套从氨基酸序列到交互式 3D 结构图的最小可视化管线。这篇文章带你走通这条链路:清洗序列、跑预测、把 pLDDT 置信度写进结构、用 py3Dmol 渲染出可旋转缩放的 3D 模型,全程约 30 行有效代码。
什么时候需要看结构
拿到一段氨基酸序列,你通常想知道两件事:它折叠成什么形状,以及模型对每个残基有多确信。手动搭建模、调渲染参数很容易劝退没有结构生物学背景的人。AlphaFold 把这两件事收敛成了两个标准输出:一个 PDB 格式的结构字符串(PDB 是蛋白质数据库通用的原子坐标文本格式),和一个逐残基的置信度分数 pLDDT(0–100,越高代表该位置预测越可靠)。
一分钟看到结果
如果你手上已经有一个预测好的蛋白质对象(Protein实例),渲染只要这几行:
import py3Dmol from alphafold.common import protein pdb = protein.to_pdb(unrelaxed_proteins['model_1']) view = py3Dmol.view(width=800, height=600) view.addModel(pdb, 'pdb') view.setStyle({'cartoon': {'color': 'spectrum'}}) view.show()浏览器里立刻出现一个可拖拽的卡通棒模型,鼠标滚轮缩放,左键旋转。
可视化背后的三个模块
整条管线只依赖三个文件,各自职责清晰:
- alphafold/notebooks/notebook_utils.py:输入侧工具。
clean_and_validate_single_sequence()负责去掉空白、转大写,并校验序列只含 20 种标准氨基酸且长度在限制内;show_msa_info()则画出多序列比对(MSA)的保守性曲线,帮你判断输入质量是否足够支撑预测。 - alphafold/common/protein.py:数据格式转换层。
from_prediction()把原始预测张量打包成Protein对象,to_pdb()再把它序列化成 PDB 文本,供任意第三方可视化工具读取。 - notebooks/AlphaFold.ipynb:端到端示例。官方 Colab 版 notebook 演示了从序列输入到 py3Dmol 展示、pLDDT 着色的完整跑法,本文的步骤全部从中提炼。
技术细节:
to_pdb()在写文件时会把 B-factor 列填入你指定的数值(通常是 pLDDT),这意味着 PDB 文件本身自带置信度信息,py3Dmol 的colorscheme直接按prop: 'b'就能着色,无需额外传图例数据。
序列到结构图的四步
第一步:清洗并校验输入序列
from alphafold.notebooks import notebook_utils seq = notebook_utils.clean_and_validate_single_sequence( 'MVTALELARPAPAPAPAPGAVSASGVPGAVPGGVPAPASGAAAPSGA', min_length=16, max_length=2500)长度不足 16 或超过 2500 的序列会直接抛异常,比跑完两小时才失败要好得多。
第二步:跑推断模型拿到 prediction
from alphafold.model import config, data, model cfg = config.model_config('model_1') runner = model.RunModel(cfg, data.get_model_haiku_params('model_1', './alphafold/data')) processed = runner.process_features(np_example, random_seed=0) prediction = runner.predict(processed, random_seed=42)prediction是一个字典,关键条目是逐残基的plddt数组和structure_module里的原子坐标。
第三步:把 pLDDT 写进结构并导出 PDB
b_factors = prediction['plddt'][:, None] * prediction['structure_module']['final_atom_mask'] prot = protein.from_prediction(processed, prediction, b_factors=b_factors) pdb_str = protein.to_pdb(prot)这里把 pLDDT 乘上原子掩码后作为 B-factor 写入,是后续按置信度着色的前提,官方 notebook 正是这么做的。
第四步:py3Dmol 渲染
view = py3Dmol.view(width=800, height=600) view.addModel(pdb_str, 'pdb') view.setStyle({'cartoon': {'colorscheme': {'prop': 'b', 'gradient': 'roygb'}}}) view.zoomTo() view.show()gradient: 'roygb'表示从红(低值)到蓝(高值)的渐变,红色区域就是低置信度区。
进阶:按 pLDDT 分段上色
比连续渐变更适合放进论文的做法是四段式分色,一眼区分置信区间:
PLDDT_BANDS = [(0, 50, '#FF7D45'), (50, 70, '#FFDB13'), (70, 90, '#65CBF3'), (90, 100, '#0053D6')] for low, high, color in PLDDT_BANDS: view.addStyle({'b': {'>=': low, '<': high}}, {'cartoon': {'color': color}})这组配色直接来自 notebooks/AlphaFold.ipynb。四段对应的语义是:橙(<50,基本不可靠)、黄(50–70,低)、浅蓝(70–90,可信)、深蓝(>90,很高)。
保存与分享结果
预测产物有三种去向:
- PDB 文本:
protein.to_pdb()的输出可以直接写文件,兼容 PyMOL、Chimera 等几乎所有结构软件,适合交接给同事用各自习惯的工具复核。 - 交互 HTML:
view._make_html()返回完整网页源码,写进.html文件后双击即可在浏览器里打开,旋转缩放功能全部保留,适合放进组会演示或项目主页。 - 打包 zip:官方 notebook 跑完会把 PDB、置信度曲线图等打成压缩包下载,适合归档。
三个容易踩的坑
pLDDT 高不等于整个复合物可靠。单看残基级 pLDDT 只能判断"域内"置信度;多链复合物之间是否稳定要看 PAE(预测对齐误差矩阵),别拿深蓝区域当万能章。
本地跑完整 AlphaFold 门槛不低。完整安装需要约 3 TB 磁盘存放基因数据库加一块较新的 NVIDIA GPU;资源有限时,notebooks/AlphaFold.ipynb 的 Colab 简化版(无模板、部分 BFD 数据库)是更现实的起点,精度对多数靶点接近完整版。
序列里不能有空格、换行和 X。
clean_and_validate_single_sequence()对非 20 标准氨基酸字符会直接抛ValueError,粘贴 FASTA 时记得只取序列行。
总结与官方资源
- 输入侧:
clean_and_validate_single_sequence()校验序列,show_msa_info()评估比对质量 - 格式层:
protein.from_prediction()/to_pdb()打通"预测张量 → 通用 PDB" - 展示层:py3Dmol 的
setStyle+colorscheme实现按 pLDDT 着色 - 技术说明:docs/technical_note_v2.3.0.md
- 端到端示例:notebooks/AlphaFold.ipynb
- 可视化辅助源码:alphafold/notebooks/notebook_utils.py
建议先按四段式 pLDDT 配色出一版图,把橙黄色区域截出来单独标注——审稿人和合作者对"哪里不可信"的关注度往往远高于整体形状。
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考