news 2026/9/11 17:26:12

AlphaFold 蛋白质结构可视化指南:从序列到可交互 3D 模型的 4 个步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AlphaFold 蛋白质结构可视化指南:从序列到可交互 3D 模型的 4 个步骤

AlphaFold 蛋白质结构可视化指南:从序列到可交互 3D 模型的 4 个步骤

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

AlphaFold 是 DeepMind 开源的蛋白质结构预测系统:输入一条氨基酸序列,它输出三维原子坐标,并为每个残基打上 pLDDT 置信度评分。本文按"序列准备 → 运行预测 → 结构渲染 → 结果解读"四步,带你把预测结果做成可旋转、可缩放、按置信度着色的交互式 3D 模型,读完即可在本地或 Colab 中复现同样的效果。

下图是 AlphaFold 对 CASP14 测试集的预测演示,骨架颜色就是按 pLDDT 分档渲染的结果,也是本文要复现的最终形态:

先认识 AlphaFold 可视化链路的 4 个模块

做可视化之前,先搞清楚每个文件负责什么,后面写代码时才知道去哪找函数:

  • alphafold/notebooks/notebook_utils.py:序列清洗校验、MSA(多序列比对)统计绘图,是 Colab 工作流的主要工具层
  • alphafold/model/:模型核心,config.py提供模型预设,data.py加载模型参数
  • alphafold/common/protein.pyfrom_prediction()把预测字典组装成Protein对象,to_pdb()转成标准 PDB 文本
  • alphafold/relax/:用 AMBER 做能量松弛,修复小范围立体化学问题

官方 Colab notebook notebooks/AlphaFold.ipynb 把以上模块串成了完整流程。本地安装走 Docker 路线:克隆仓库后运行scripts/download_all_data.sh下载遗传数据库,再用 run_alphafold.py 执行预测;本地版对多聚体精度更高,Colab 版用的是简化参数。

git clone https://gitcode.com/GitHub_Trending/al/alphafold

准备输入:序列清洗与 MSA 覆盖度检查

AlphaFold 的输入是一条单字母代码序列,长度需在 16~2500 之间(Colab 版限制)。clean_and_validate_single_sequence()会先去掉空白字符、统一转大写,再检查是否全部落在 20 种标准氨基酸范围内,最后核对长度,任何一项不过都会抛出带具体原因的ValueError

from alphafold.notebooks import notebook_utils seq = notebook_utils.clean_and_validate_single_sequence( input_sequence='MAAHKGAEHHHKAAEHHEQAAKHHHAAAEHHEKGEHEQAAHHADTAYAHHKHAEEHAAQAAKHDAEHHAPKPH', min_length=16, max_length=2500)

预测质量很大程度取决于 MSA 覆盖度:同源序列越多,结构证据越强。官方 notebook 用分块 JackHMMER 对 UniRef90、BFD 等数据库做搜索,搜完会打印去重后的序列数,并用show_msa_info()画出"每个位置非空氨基酸计数"曲线,帮你快速判断哪些区域证据薄弱。

merged_msa = notebook_utils.merge_chunked_msa( results=raw_msa_results[seq]['uniref90'], max_hits=10_000) notebook_utils.show_msa_info(single_chain_msas=[merged_msa], sequence_index=1)

曲线在某个位置附近明显下凹,说明该区域缺少同源序列支撑,最终预测的 pLDDT 往往也偏低。

运行预测:配置模型、取参数、输出 pLDDT

预测这一步涉及三个函数:config.model_config()按预设名生成网络配置,data.get_model_haiku_params()加载对应参数,model.RunModel负责跑前向推理。

import random from alphafold.model import config, data, model model_name = 'model_1' # config.MODEL_PRESETS['monomer'] 中的预设 cfg = config.model_config(model_name) cfg.data.eval.num_ensemble = 1 params = data.get_model_haiku_params(model_name, './alphafold/data') runner = model.RunModel(cfg, params) feats = runner.process_features(np_example, random_seed=0) prediction = runner.predict(feats, random_seed=random.randrange(2**31)) print('mean pLDDT: %.1f' % prediction['plddt'].mean())

prediction是一个字典,prediction['plddt']逐残基给出 0~100 的置信度评分,可视化阶段会直接用它着色。实际流程还会遍历多个预设模型(单链取config.MODEL_PRESETS['monomer'],多链取'multimer'),按置信度挑出最优的一个。

渲染 3D 结构:py3Dmol 按 pLDDT 分档着色

预测字典本身只是数字,要和输入特征一起交给protein.from_prediction()才能得到结构;随后to_pdb()把它转成 PDB 文本交给 py3Dmol 渲染:

from alphafold.common import protein prot = protein.from_prediction( feats, prediction, b_factors=prediction['plddt'][:, None], remove_leading_feature_dimension=is_monomer) pdb_text = protein.to_pdb(prot)

b_factors参数把 pLDDT 写进 PDB 的 B-factor 列,py3Dmol 就能按这个数值分档上色。官方 notebook 采用四档配色:

PLDDT_BANDS = [(0, 50, '#FF7D45'), (50, 70, '#FFDB13'), (70, 90, '#65CBF3'), (90, 100, '#0053D6')] view = py3Dmol.view(width=800, height=600) view.addModelsAsFrames(pdb_text) color_map = {i: bands[2] for i, bands in enumerate(PLDDT_BANDS)} view.setStyle({'model': -1}, {'cartoon': {'colorscheme': {'prop': 'b', 'map': color_map}}}) view.zoomTo() view.show()

多链结构的默认视图是按链着色,便于分辨不同亚基:

multichain_view = py3Dmol.view(width=800, height=600) multichain_view.addModelsAsFrames(pdb_text) multichain_view.setStyle({'model': -1}, {'cartoon': {'colorscheme': 'chain'}}) multichain_view.zoomTo() multichain_view.show()

想叠加侧链,在样式字典里追加'stick': {}即可,这与官方 notebook 的show_sidechains选项对应。

如何解读置信度配色,以及 PDB 文件的后续用途

读图时记住两条规则就够了:

  • pLDDT > 90 的残基(深蓝)结构通常可靠,可以直接引用
  • pLDDT < 50 的区域(橙色)多为无序区或建模困难区,下结论前建议结合实验数据

多链结构中,链与链之间的相对位置要看 PAE(预测对齐误差)矩阵,而不是只看单链的 pLDDT,这一点 技术说明 中有展开。

跑出的 PDB 文件是标准文本,除了 notebook 内置的交互视图,也能直接加载进 PyMOL 等外部软件,或用脚本批量处理。另外,官方流程中预测后会接一步 AMBER 松弛来修复小的立体化学违规;如果跳过松弛,结构可能残留少量违规,官方在 notebook 里留了run_relax开关供你选择。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 17:25:14

Manim数学动画:旋转扭曲特效原理与实践

1. Manim与数学动画的革命性结合 第一次看到用Manim制作的旋转扭曲特效时&#xff0c;那种将抽象数学概念具象化的震撼感至今难忘。作为一款专为数学可视化设计的Python框架&#xff0c;Manim正在改变我们理解和教授数学的方式。不同于普通的动画工具&#xff0c;Manim允许你通…

作者头像 李华
网站建设 2026/9/11 17:25:00

智能车竞赛源码怎么读?一条数据链路看懂图像与PID控制

简介&#xff1a;面向智能汽车竞赛参赛者与嵌入式开发学习者的合集资料&#xff0c;内容覆盖全国大学生智能车竞赛的整车设计方案、程序源码、构建工程与赛后复盘记录。压缩包内共147个文件&#xff0c;核心包括C/C源码&#xff08;.cpp/.hpp/.c&#xff09;、CMake与VS工程配置…

作者头像 李华
网站建设 2026/9/11 17:23:49

2026年7月南京市秦淮区二手房价格深度分析报告

摘要本报告基于2026年7月南京市秦淮区实际成交的二手房案例数据&#xff0c;对该区域二手房市场的价格走势、板块分化、户型偏好及未来趋势进行深度分析。报告显示&#xff0c;2026年7月秦淮区二手房市场整体呈现“量稳价微升”的态势&#xff0c;核心学区房与优质地段房源价格…

作者头像 李华
网站建设 2026/9/11 17:23:39

固件功能不够用?ArduPilot Lua脚本救场

固件功能不够用?ArduPilot Lua脚本救场 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot ArduPilot Lua脚本让你在飞控上直接写逻辑:低电量喊话、巡检打灯、临时改飞行行为,…

作者头像 李华
网站建设 2026/9/11 17:22:49

Windows 部署大模型 不联网 本地离线推理

Ollama&#xff1a;本地模型运行引擎 代码模型 &#xff08;根据自身需求选用&#xff09; 此处 以 qwen2.5-coder:7b-instruct 为例 &#xff08;后来需要不联网翻译一些资料&#xff0c;用的是 translategemma:4b模型&#xff09; Open WebUI&#xff1a;本地网页界面&am…

作者头像 李华