蛋白质结构预测 AlphaFold2¶
一句话概述¶
AlphaFold2 是 DeepMind 开发的 AI 蛋白质结构预测工具,能从氨基酸序列直接预测出蛋白质的三维结构,2024年获诺贝尔化学奖。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| AlphaFold2 | DeepMind 开发,2020年 CASP14 竞赛中碾压式胜出,预测精度接近实验解析 |
| ColabFold | 社区版 AlphaFold2,用 MMseqs2 替代 BLAST 做序列搜索,速度更快、资源占用更少 |
| MSA(多序列比对) | AlphaFold2 的核心输入之一,通过同源序列推断进化信息 |
| pLDDT 分数 | 预测的局部置信度分数(0-100),>90 很可靠,<50 可能无序 |
| PAE(预测对齐误差) | 衡量不同残基之间相对位置预测的可靠性,对多聚体尤其重要 |
| Evoformer | AlphaFold2 核心网络模块,处理 MSA 表示和残基对表示 |
| 结构模块 | 将 Evoformer 输出转化为 3D 坐标 |
| AlphaFold3 | 2024年发布的新版本,支持蛋白质-核酸-小分子复合物预测 |
| ColabFold v2.3 | 截至2026年的最新稳定版本(alphafold-colabfold 2.3.13) |
| AlphaFold DB | EBI 维护,提供超过2亿个预测结构,可直接下载 |
白话解释原理¶
想象一下: 蛋白质就像一条长长的珠子链(氨基酸),它会自动折叠成特定的形状。这个形状决定了蛋白质能做什么工作。
AlphaFold2 做的事情就像是:给你一串珠子的颜色顺序(氨基酸序列),它能告诉你这串珠子最终会折叠成什么立体形状。
它是怎么做到的? 1. 先找"亲戚"——在数据库里找和你的蛋白质序列相似的蛋白质(MSA) 2. 从亲戚的进化信息中学习——哪些位置的氨基酸总是一起变化(共进化) 3. 用深度学习网络(Evoformer)综合所有信息 4. 最终输出3D坐标
各步骤详解¶
第一步:使用 ColabFold 在线预测(最简单)¶
白话解释: 不用装任何软件,打开浏览器就能用,适合预测少量蛋白质。
操作步骤:
# 1. 打开 ColabFold 笔记本
# 浏览器访问: https://colab.research.google.com/github/sokrypton/ColabFold/blob/main/AlphaFold2.ipynb
# 2. 获取蛋白质序列
# 去 UniProt (https://www.uniprot.org/) 搜索你的蛋白
# 点击 FASTA 按钮,只复制序列部分(不要 > 开头的标题行)
# 例如: MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH...
# 3. 在 ColabFold 中粘贴序列
# query_sequence 框中粘贴你的序列
# jobname 填写任务名称,如 "my_protein"
# 4. 选择模型类型(Advanced Settings)
# auto — 自动选择(推荐)
# alphafold2_ptm — 单体蛋白预测
# alphafold2_multimer_v3 — 蛋白质复合物预测
# 5. 点击 Runtime > Run all,等待结果
# 短序列(<200aa): 约10-30分钟
# 长序列(>500aa): 可能需要数小时
第二步:本地安装 ColabFold(批量预测)¶
白话解释: 如果你有GPU服务器,可以本地安装,批量预测大量蛋白质。
# 1. 创建 conda 环境
conda create -n colabfold python=3.10 # 创建Python 3.10环境
conda activate colabfold # 激活环境
# 2. 安装 ColabFold(pip方式)
pip install "colabfold[alphafold]" # 安装ColabFold及其AlphaFold依赖
# 3. 下载 ColabFold 数据库(约100GB,需要耐心)
# 如果网络不好可以用代理
colabfold_batch --help # 查看帮助信息
# 4. 准备输入文件(FASTA格式)
cat > my_proteins.fasta << 'EOF'
>protein_1
MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH
>protein_2
MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSELDKAIGRN
EOF
# 5. 运行预测
colabfold_batch \
my_proteins.fasta \ # 输入FASTA文件
output_dir/ \ # 输出目录
--num-recycle 3 \ # 循环次数(默认3,越多越慢但可能更准)
--model-type auto \ # 模型类型:auto自动选择
--amber \ # 使用AMBER力场优化结构
--num-models 5 # 使用5个模型,取最佳结果
第三步:安装完整版 AlphaFold2(高级用户)¶
白话解释: 完整安装需要>3TB存储空间和强大GPU,一般用不到,科研机构用。
# 1. 克隆 AlphaFold2 仓库
git clone https://github.com/deepmind/alphafold.git # 克隆官方代码
cd alphafold # 进入目录
# 2. 使用 Docker 运行(推荐,避免依赖问题)
# 先安装 Docker 和 NVIDIA Container Toolkit
docker pull alphafold/alphafold:latest # 拉取Docker镜像
# 3. 下载数据库(约2.6TB)
# 包括 BFD, MGnify, PDB70, UniRef90, UniProt 等
bash scripts/download_all_data.sh /data/alphafold_db # 下载所有数据库
# 4. 运行预测
python docker/run_docker.py \
--fasta_paths=input.fasta \ # 输入序列
--max_template_date=2024-01-01 \ # 模板截止日期
--data_dir=/data/alphafold_db \ # 数据库路径
--output_dir=output/ \ # 输出路径
--model_preset=monomer # 单体模式
第四步:结果解读¶
白话解释: 预测完成后,你会得到PDB文件(3D结构)和质量评估分数。
# 用 Python 解读 AlphaFold2 结果
import json # 导入JSON处理库
import matplotlib.pyplot as plt # 导入绑图库
import numpy as np # 导入数组计算库
# 1. 读取排名文件(ranking_debug.json)
with open("output/ranking_debug.json", "r") as f: # 打开排名文件
ranking = json.load(f) # 解析JSON
# 查看各模型的 pLDDT 分数
for model, score in ranking["plddts"].items(): # 遍历每个模型
print(f"{model}: pLDDT = {score:.2f}") # 打印模型名和分数
# 2. 解读 pLDDT 分数含义
# > 90: 非常可靠(蓝色)— 可以信赖的结构
# 70-90: 较可靠(青色)— 大致可信
# 50-70: 低置信度(黄色)— 需谨慎
# < 50: 很不可靠(橙色)— 可能是无序区域
# 3. 可视化 pLDDT 分布
# 使用 PyMOL 打开 PDB 文件
# PyMOL 命令:
# load ranked_0.pdb # 加载最佳模型
# spectrum b, blue_white_red, minimum=50, maximum=100 # 按B因子着色
# 蓝色=高置信度,红色=低置信度
# 4. 查看 PAE(预测对齐误差)图
# PAE 图是一个热图,显示残基i和残基j之间的位置误差
# 对角线附近深色 = 域内结构可靠
# 非对角线深色 = 域间相对位置可靠
第五步:使用 AlphaFold 数据库查询已有结构¶
白话解释: 很多蛋白质的结构已经被预测好了,直接查就行,不用自己跑。
# 1. 访问 AlphaFold 蛋白质结构数据库
# https://alphafold.ebi.ac.uk/
# 搜索你的蛋白质名称或 UniProt ID
# 2. 使用 API 批量下载
# 下载单个蛋白质的预测结构(以人类p53为例)
curl -O https://alphafold.ebi.ac.uk/files/AF-P04637-F1-model_v4.pdb # 下载PDB文件
curl -O https://alphafold.ebi.ac.uk/files/AF-P04637-F1-predicted_aligned_error_v4.json # 下载PAE
# 3. 用 Python 批量下载
import requests # 导入HTTP请求库
uniprot_ids = ["P04637", "P53_HUMAN"] # UniProt ID列表
for uid in uniprot_ids: # 遍历每个ID
url = f"https://alphafold.ebi.ac.uk/files/AF-{uid}-F1-model_v4.pdb" # 构建URL
response = requests.get(url) # 发送请求
if response.status_code == 200: # 如果成功
with open(f"AF-{uid}.pdb", "w") as f: # 保存文件
f.write(response.text) # 写入内容
print(f"下载成功: {uid}") # 打印成功信息
常见报错与解决¶
| 报错 | 原因 | 解决方案 |
|---|---|---|
CUDA out of memory | GPU显存不够 | 减少序列长度,或用 --num-models 1 减少模型数 |
MSA too shallow | 同源序列太少 | 检查序列是否正确,尝试降低 MSA 深度要求 |
Connection timeout | ColabFold 的 MMseqs2 服务器繁忙 | 换个时间段再试,或使用本地数据库 |
FileNotFoundError: database | 数据库路径配置错误 | 检查 --data_dir 路径是否正确 |
Colab disconnected | Google Colab 免费版有时间限制 | 保持浏览器页面活跃,或使用本地安装版 |
Invalid FASTA format | 输入序列格式错误 | 确保只有标准氨基酸字母,去掉空格和特殊字符 |
Template not found | PDB模板数据库不完整 | 更新模板数据库或设置 --max_template_date |
速查表¶
┌─────────────────────────────────────────────────────────────┐
│ AlphaFold2 / ColabFold 速查 │
├─────────────────────────────────────────────────────────────┤
│ 在线预测: │
│ ColabFold Colab: colab.research.google.com/.../AlphaFold2 │
│ AlphaFold Server: alphafoldserver.com(AF3) │
│ │
│ 数据库查询: │
│ AlphaFold DB: alphafold.ebi.ac.uk(2亿+结构) │
│ UniProt: uniprot.org(获取序列) │
│ │
│ 本地安装: │
│ pip install "colabfold[alphafold]" │
│ colabfold_batch input.fasta output_dir/ │
│ │
│ 质量评估: │
│ pLDDT > 90: 非常可靠(蓝色) │
│ pLDDT 70-90: 较可靠(青色) │
│ pLDDT 50-70: 低置信度(黄色) │
│ pLDDT < 50: 不可靠/无序区域(橙色) │
│ │
│ 模型选择: │
│ 单体: alphafold2_ptm │
│ 复合物: alphafold2_multimer_v3 │
│ 自动: auto(推荐) │
│ │
│ 可视化工具: │
│ PyMOL / ChimeraX / Mol*(在线) │
└─────────────────────────────────────────────────────────────┘
面试高频问题¶
AlphaFold2 的核心创新是什么? 答:两大创新——Evoformer 模块(融合 MSA 信息和残基对信息的注意力机制)和端到端训练(从序列直接到3D坐标,不需要中间步骤)。它在 CASP14 中达到了接近实验解析的精度(GDT > 90)。
pLDDT 和 PAE 分数分别代表什么?怎么用? 答:pLDDT 是每个残基的局部置信度(0-100),衡量单个残基位置预测的可靠性;PAE 是残基对之间的预测对齐误差,衡量两个残基相对位置的可靠性。pLDDT 用于判断局部结构可信度,PAE 用于判断结构域间的相对位置是否可信,对多聚体预测尤其重要。
ColabFold 和 AlphaFold2 有什么区别? 答:ColabFold 用 MMseqs2 替代 jackHMMER/HHblits 做序列搜索,速度快得多,资源占用小(不需要3TB数据库),预测结果基本一致。ColabFold 支持 Google Colab 在线运行,适合快速预测;完整 AlphaFold2 需要大量存储和GPU,适合大规模研究。
AlphaFold2 有哪些局限性? 答:不能预测蛋白质动态构象变化、不能预测配体结合模式(AF3改进了这一点)、对无序区域预测不可靠、依赖同源序列(孤儿蛋白效果差)、不考虑翻译后修饰。
AlphaFold3 相比 AlphaFold2 有什么改进? 答:AF3 可以预测蛋白质与DNA、RNA、小分子配体的复合物结构,使用了扩散模型(diffusion model)替代了AF2的结构模块,预测范围从蛋白质扩展到了整个生物分子世界。