☰
3 步出图零代码:用 AlphaFold 可视化 API 快速绘制蛋白质结构 3D 图
2026/9/27 22:12:55 网站建设 项目流程

3 步出图零代码:用 AlphaFold 可视化 API 快速绘制蛋白质结构 3D 图

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

拿到一串氨基酸序列,想快速看到它的三维结构长什么样?以前要装 Chimera、学 PDB 格式、手动调渲染参数。现在用 AlphaFold 开源仓库自带的可视化 API,一条序列进、一个可交互的蛋白质结构图出,全程 Python,不需要生物信息学背景。

跟着做完,你能得到:一个能旋转、缩放、按残基着色的 3D 结构视图,一份带 pLDDT 置信度着色的出版级渲染方案,以及可分享的 HTML 文件。

效果先行:先睹为快

这就是本教程最终产出的形态——一条蛋白质主链被渲染成彩虹渐变的 3D 卡通图:

实际跑完你还会得到每个残基的置信度曲线、MSA 保守性图(下面第 5 节),以及官方在 CASP14 上"预测 vs 实验"的对比图,用来校验你的预测质量。

一分钟速览

这篇教程解决 5 个具体问题:

  1. 序列输入报错——哪些字符非法、长度限制是多少,一个函数帮你把序列洗干净
  2. 结构从哪来——用folding.predict_structures()从序列生成 3D 坐标
  3. 结构怎么显示——3 行py3Dmol代码,把坐标变成可交互的 3D 视图
  4. 颜色怎么定——按 pLDDT(预测局部距离差异测试,0~100 的置信度分)给残基分档着色
  5. 图怎么交付——导出交互式 HTML,或批量对比多个构象

核心模块拆解:两个函数撑起整条链路

不用理解整个仓库,记住这两个入口就够了。

1. 序列清洗:notebook_utils.clean_and_validate_single_sequence()

官方 notebook 在预测前都先调它。它去掉空白符、转大写,校验只含 20 种标准氨基酸、长度在 min/max 区间内,否则直接抛错告诉你哪个字符非法、差多少长度。

from alphafold.notebooks import notebook_utils seq = notebook_utils.clean_and_validate_single_sequence( input_sequence=" maahkgae\nhhhkaaehhe ", # 带空格换行也能处理 min_length=16, max_length=2500, )

技术细节:实现位于 alphafold/notebooks/notebook_utils.py 第 24-46 行,用str.translate剔除空白,再对字符集做set差集校验。

2. 结构落盘:protein.from_prediction()+protein.to_pdb()

预测结果本身是个张量字典,protein模块负责把它变成 PDB 文本——py3Dmol和所有结构软件通用的格式。

from alphafold.common import protein prot = protein.from_prediction(features, best_output) # 张量 -> Protein 对象 pdb_str = protein.to_pdb(prot) # Protein -> PDB 字符串

技术细节:两个函数定义在 alphafold/common/protein.py,from_prediction会从pred_atom_positions、aatype、residue_index等键提取坐标与残基信息。

分步实操:从序列到 3D 结构

步骤 1:准备环境与输入

# 拉取仓库(含 notebook 示例与可视化全部依赖代码) git clone https://gitcode.com/GitHub_Trending/al/alphafold # 安装依赖 pip install -r requirements.txt

这步在做什么:把代码、官方示例 notebooks/AlphaFold.ipynb 和依赖一次备齐。

步骤 2:运行结构预测

from alphafold.model import data from alphafold.model.folding import predict_structures model_name = "model_1" # 模型参数先用 scripts/download_alphafold_params.sh 下载到本地 model = data.load_params(model_name=model_name, params_location="params/", multimer=False) # features:序列、MSA(多序列比对)等特征,由数据流水线生成 predictions = predict_structures( model_name, model, features, num_model_batches=2, # 2 个随机种子,够演示用 model_batch_size=1, )

这步在做什么:让网络根据序列和 MSA 迭代优化出原子三维坐标。MSA 是"和这条序列长得像的一堆已知序列",是预测准确性的关键信息来源,所以完整跑需要先按 scripts/ 里的脚本下载数据库(UniProt、BFD、PDB70 等)。

步骤 3:一键生成 3D 结构

import py3Dmol best_output = predictions[model_name][0] # 演示取第一个;正式场景按分数选最优 prot = protein.from_prediction(features, best_output) pdb_str = protein.to_pdb(prot) view = py3Dmol.view(width=800, height=600) view.addModel(pdb_str, "pdb") view.setStyle({"cartoon": {"color": "spectrum"}}) # 彩虹渐变 view.zoomTo() view.show()

这步在做什么:py3Dmol是浏览器端的 3D 分子渲染库,在 Jupyter 里直接弹出可旋转缩放的结构。上面 5 行就是最小出图代码。

步骤 4:定制——按 pLDDT 置信度着色

官方 notebook 的招牌配色:低置信区段显示深蓝,高置信区段显示红,一眼看出哪些部分可信。

from alphafold.common import confidence # pLDDT 分四档,每档一个颜色(<50 低 / 50-70 / 70-90 / >90 高) color_map = {i: bands[2] for i, bands in enumerate(confidence.PLDDT_BANDS)} view.setStyle({"cartoon": {"colorscheme": {"prop": "b", "map": color_map}}})

技术细节:着色依赖 PDB 的 B 因子字段。官方 notebooks/AlphaFold.ipynb 先用utils.overwrite_b_factors()把分档后的 pLDDT 写回每个残基的 B 因子,prop: "b"才能按它映射颜色。

高亮关键残基、加标签同样是字典传参:

view.addStyle({"resi": list(range(10, 21))}, {"stick": {"color": "red"}}) # 残基 10-20 变棒状 view.addLabel("Active Site", {"fontSize": 12}, {"resi": 15})

这步在做什么:把"哪个区域可信、哪个区域重要"直接画进图里,省去论文里再解释一遍。

常见坑与进阶组合技

三个高频坑

  • 序列校验失败:含 X、O 等非 20 种标准氨基酸字符会抛ValueError;多肽太短(<16)或太长(>2500)也会被拒,多聚体请用clean_and_validate_input_sequences()逐条处理
  • 预测跑不起来:大概率不是代码问题,而是没下数据库和模型参数——先用 scripts/download_alphafold_params.sh 和 scripts/download_uniprot.sh 等脚本把资源下全
  • 配色不生效:colorscheme按 B 因子着色时,必须先完成"pLDDT 写回 B 因子"这一步,否则整条链一个颜色

进阶 1:批量对比多个构象

比较野生型和突变体,用grid参数开子图,一次并排看多个模型:

view = py3Dmol.view(width=800, height=800, grid=(2, 2)) view.addModel(pdb_wt, "pdb", viewer=(0, 0)) view.setStyle({"cartoon": {"color": "blue"}}, viewer=(0, 0)) view.addModel(pdb_mut, "pdb", viewer=(0, 1)) view.setStyle({"cartoon": {"color": "red"}}, viewer=(0, 1)) view.zoomTo() view.show()

进阶 2:用 MSA 保守性图预判质量

预测前先看看序列信息够不够,官方提供了一个热力图式的函数:

notebook_utils.show_msa_info(single_chain_msas=msas, sequence_index=0)

技术细节:show_msa_info()位于 alphafold/notebooks/notebook_utils.py 第 100-124 行,把 MSA 每列的氨基酸映射为数值,用 numpy 沿序列轴统计"非间隙残基数",再交给 matplotlib 画折线。曲线越平、越高,说明该位置演化保守,预测越稳。

进阶 3:导出交付

# 交互式 HTML:浏览器打开仍可旋转缩放,方便分享或嵌入网页 with open("protein_visualization.html", "w") as f: f.write(view._make_html()) # 论文用静态图:打开导出的 HTML 截图,或保留 view.show() 的 Jupyter 输出

想更严格地评估预测质量,可以看看官方在 CASP14 上的对比:绿线是实验结构,蓝线是计算预测,GDT 分数 90 以上:

能力一览与下一步

需求用什么位置
序列清洗校验clean_and_validate_single_sequence()alphafold/notebooks/notebook_utils.py
张量转 PDBprotein.from_prediction()/to_pdb()alphafold/common/protein.py
pLDDT 置信度分档PLDDT_BANDS、compute_plddt()alphafold/common/confidence.py
结构预测主流程predict_structures()alphafold/model/folding.py
完整可交互示例官方 notebooknotebooks/AlphaFold.ipynb

下一步去哪:

  • 从零复现全流程,直接打开 notebooks/AlphaFold.ipynb,从输入序列到 3D 视图全部跑通
  • 搞懂 pLDDT、PAE 等指标怎么读,参考 docs/technical_note_v2.3.0.md
  • 准备批量预测的数据库资源,见 scripts/ 下的下载脚本
  • 结构需要进一步能量优化(Relax)时,看 alphafold/relax/

一条序列、三行核心代码、一个可交互的蛋白质结构图——剩下的事,交给旋转和缩放吧。

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

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

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

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

立即咨询