AlphaFold 蛋白质结构预测:从一条序列到可信三维结构的完整实操路径
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
手上只有一条 FASTA 氨基酸序列,想在两天内拿到一份可信的三维结构,还要知道哪些残基可信、哪些只是猜测?AlphaFold(DeepMind 开源的 AlphaFold 2 推理流水线)做的事就一件:输入蛋白质序列,输出 5 个候选结构、按置信度排序的 PDB 文件和逐残基的 pLDDT 分数。
🎯 它解决了什么
这个仓库提供 AlphaFold v2 的完整推理代码,外加处理多链复合物的 AlphaFold-Multimer 模块。输入是一个 FASTA 文件,输出是ranked_0.pdb这样的结构文件,同时附带result_model_*.pkl里的原始模型输出(含 pLDDT、pAE、pTM 等置信度数组)。
与实验方法相比,它的优势可以直接量化:
| 维度 | X 射线晶体学/冷冻电镜 | AlphaFold |
|---|---|---|
| 单目标耗时 | 数周到数月 | A100 上 300 残基约 13 秒(不含 MSA 搜索) |
| 失败场景 | 无法结晶/纯化的蛋白直接无解 | 低置信度区域会显式标注,而不是整体失败 |
| 批量成本 | 每个结构单独实验 | 一条命令循环即可,README 给出 5000 残基约 5.2 小时的参考值 |
官方在 CASP14(蛋白质结构预测的年度竞赛)中用它拿下了多个目标:下图两个目标域分别得到 GDT 90.7 和 93.3(GDT-TS 是 0–100 的模拟相似度分,越接近 100 越接近实验结构)。
AlphaFold 在 CASP14 中两个目标的结构预测,GDT 分别为 90.7 和 93.3
⏱️ 10 分钟跑通第一个结果
先明确硬件底线(官方验证配置:12 vCPU、85GB 内存、A100):
- Linux(不支持其他系统)+ 一块 NVIDIA GPU
- Docker 和 NVIDIA Container Toolkit
aria2下载工具- 磁盘:完整数据库 3TB;用
reduced_dbs预设最低 600GB、8 vCPU、8GB 内存
最小路径四步(下载体积大,务必放后台跑):
git clone https://gitcode.com/GitHub_Trending/al/alphafold && cd alphafold # 下载数据库,reduced_dbs 表示精简版(约 600GB) scripts/download_all_data.sh /data/af_dbs reduced_dbs > dl.log 2>&1 & docker build -f docker/Dockerfile -t alphafold . pip3 install -r docker/requirements.txt准备一个单序列 FASTA,然后:
python3 docker/run_docker.py \ --fasta_paths=monomer.fasta --max_template_date=2022-01-01 \ --model_preset=monomer --db_preset=reduced_dbs \ --data_dir=/data/af_dbs --output_dir=/home/user/output闭环完成:跑完在/home/user/output/monomer/下拿到ranked_0.pdb(置信度最高的预测结构)。注意DOWNLOAD_DIR不要放在仓库目录里,否则 Docker 构建上下文会被拖慢。
🔬 核心机制拆解
MSA 搜索:从数据库里找进化证据
做什么:为目标序列构建 MSA(多序列比对,即把目标蛋白与数据库里的同源序列逐列对齐)。怎么做:jackhmmer先扫 UniRef90 和 MGnify,再用hhblits迭代搜 BFD/UniRef30,结果去重后送入模型;同时hhsearch在 PDB70 中检索最多 20 个结构模板。为什么:同一位置上的保守突变携带结构约束——如果两个位置的残基总是一起变化,它们大概率在空间上靠近。MSA 的深度直接决定预测上限,这也是完整库(2.62TB)和精简库的核心差异。
Evoformer + StructureModule:网络如何"折叠"
做什么:从序列特征生成原子坐标。怎么做:EvoformerIteration(定义在 alphafold/model/modules.py)交替精化 MSA 行表征和残基对表征,把进化信息逐步转成几何约束;StructureModule(alphafold/model/folding.py)在此基础上迭代预测全原子结构,每轮用当前的距离图(distogram,残基对距离的概率分布)和 pLDDT 头反馈修正。为什么这样做:单次前向得到的结构往往带局部穿模和键角异常,多轮"预测—修正"迭代让输出逐步收敛到物理合理的构象,和数值方法里的松弛过程是同一个思想。
Amber 弛豫与模型排序:从网络输出到可交付结构
做什么:把 5 个独立模型的输出变成 1 个最优交付结构。怎么做:用 pLDDT(逐残基置信度,0–100)对 5 个模型排序,默认只对排名第一的模型跑 OpenMM + Amber 力场的能量最小化,消除键长键角违例(见 alphafold/relax/relax.py)。为什么:网络输出对局部几何不严格,弛豫后结构才能直接用于对接、分子动力学等下游计算;--models_to_relax=all可放宽为全部松弛,代价是时间。
🧪 一个完整场景实战:单链酶的结构预测
准备:一条约 300 残基的酶序列,FASTA 内容即>target_name+ 一行序列。数据库用reduced_dbs(见上节)。
执行:
python3 docker/run_docker.py \ --fasta_paths=enzyme.fasta \ --max_template_date=2022-01-01 # 只用该日期前的模板 --model_preset=monomer \ --db_preset=reduced_dbs \ --data_dir=/data/af_dbs --output_dir=/home/user/output300 残基在 A100 上的纯推理约 13 秒,加上 MSA 搜索和弛豫,单卡几分钟到十几分钟量级。
调参:如果第一次跑完想只换参数(比如弛豫开关、模型预设)重跑,最耗时的 MSA 搜索不必重复:
python3 docker/run_docker.py \ --fasta_paths=enzyme.fasta --max_template_date=2022-01-01 \ --model_preset=monomer_ptm \ --use_precomputed_msas=true \ --models_to_relax=none --data_dir=/data/af_dbs \ --output_dir=/home/user/output--use_precomputed_msas=true直接复用上次写到output_dir的 MSA 文件(要求序列和输出目录不变);monomer_ptm预设额外输出 PAE 矩阵;--models_to_relax=none跳过弛豫,适合快速对比。
拿到结果:输出目录结构固定——
enzyme/ ranked_{0..4}.pdb # 按置信度排序的 5 个结构 ranking_debug.json # 每个模型的 pLDDT relax_metrics.json # 弛豫后剩余的几何违例 result_model_*.pkl # 原始输出:plddt、PAE、pTM 数组 msas/ # 各数据库的命中文件 timings.json # 各阶段耗时交付文件是ranked_0.pdb;pLDDT 就存在 PDB 的 B 因子列里(注意方向和普通 B 因子相反:值越高越好)。
📖 读懂输出:别只看分数
| 指标 | 含义 | 看到这个数值你该怎么做 |
|---|---|---|
| pLDDT ≥ 90(H 级) | 结构高度可信,接近实验精度 | 直接用于对接、设计等下游任务 |
| pLDDT 70–90(M 级) | 局部结构可信 | 可用,但功能位点建议对照同源实验结构核验 |
| pLDDT 50–70(L 级) | 方向性正确但细节不可靠 | 只看大尺度拓扑,别依赖具体原子位置 |
| pLDDT < 50(D 级) | 大概率是无序区或预测失败 | 把这段当作柔性连接区处理,不要建模 |
| PAE 对角块低、非对角块高 | 域内可靠,域间相对位置不确定 | 结构不能当成刚体整体使用,做对接前先分域 |
| pTM(标量) | 整体折叠/域堆积的全局置信度 | 与 pLDDT 交叉验证:pLDDT 均值高但 pTM 低,说明整体组装可疑 |
| relax_metrics.json 违例数 | 弛豫后剩余的键长键角问题 | 数量大时检查该区域 pLDDT,大概率本就低置信 |
分级标准来自代码里的_confidence_category(D/L/M/H 四档),逐残基的 JSON 由 alphafold/common/confidence.py 生成,和上面表格一一对应。
🛠️ 踩坑手册
症状:Docker 构建奇慢,构建上下文巨大原因:DOWNLOAD_DIR放进了仓库目录,数据库文件全被塞进构建上下文。 解法:数据库目录放仓库外,例如/data/af_dbs,通过--data_dir传入。
症状:MSA 工具报出含糊的外部错误原因:下载目录或数据库文件缺少读写权限。 解法:sudo chmod 755 --recursive "$DOWNLOAD_DIR"后重跑。
症状:多序列 FASTA 用monomer预设跑,结果不对原因:FASTA 里含多条序列时会被按多链复合物折叠,monomer预设并不合适。 解法:显式加--model_preset=multimer,且需已下载 UniProt 和 PDB seqres 库。
症状:2000+ 残基的大蛋白 OOM 或跑数小时原因:显存随序列长度增长,5000 残基推理就要约 5.2 小时(A100,不含 MSA)。 解法:换更大显存的卡;复合物场景用--num_multimer_predictions_per_model=1把默认 25 次预测降到 5 次,精度损失很小;小蛋白批量推理可加大alphafold/model/config.py里的global_config.subbatch_size。
🚀 效率与资源调优
- 数据库预设按场景切:日常用
--db_preset=reduced_dbs(600GB 磁盘、8 vCPU、8GB 内存可跑),追求 MSA 深度再上full_dbs(2.62TB)。收益:硬件门槛从"工作站"降到"普通云主机"。 - 数据库放 SSD:MSA 搜索阶段对磁盘 IO 敏感,官方明确建议 SSD。收益:jackhmmer/hhblits 阶段显著提速,这部分往往比 GPU 推理还慢。
- 重复调参用
--use_precomputed_msas=true:同序列多次运行时跳过最贵的 MSA 搜索。收益:调参迭代从小时级压到分钟级。
🧭 下一步怎么走
- ✅ 通读 docs/technical_note_v2.3.0.md,搞清 v2.3.0 相对 CASP14 模型的结构改动
- ✅ 用
--model_preset=multimer跑一个蛋白复合物或同源寡聚体,对比 PAE 矩阵里的界面区域 - ✅ 对照
docs/casp15_predictions.zip里的基线预测,理解"人工干预"对结果的影响范围 - ✅ 批量场景基于
RunModel.predict自写循环,或用make_fixed_size把输入 pad 成统一尺寸减少编译次数 - ✅ 把
relax_metrics.json和timing.json纳入自己的质检流程,而不是只看 pLDDT 均值
把一条 300 残基的序列丢进reduced_dbs预设跑一遍,是你验证整条流水线最快的方式——结构出图后,剩下的都是参数问题。
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考