AlphaFold 多聚体预测:从 Docker 环境到 PAE 热图判读,四个任务跑通你的第一条多链 PDB
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
AlphaFold 开源仓库里同时包含单体和多聚体两条推理管线,其中 AlphaFold-Multimer 能把多条蛋白序列一起喂给模型,直接输出蛋白复合体结构的 PDB 文件。这篇文章按"先判断、再准备、然后跑、最后验收"的路径组织,帮你跑通一次多聚体预测,并学会用 pLDDT 和 PAE 热图判断结果能不能信。
先判断:手里这个复合物适不适合让 AlphaFold-Multimer 来算
多聚体预测不是万能的。AlphaFold-Multimer 的设计前提是你已知复合物的化学计量比——明确知道有几条链、各是什么序列,才能把它们都写进输入文件。
如果你连亚基组成都不确定(比如做基因组规模预测),官方技术文档 technical_note_v2.3.0.md 的说法是:这种情况下单链 AlphaFold 平均更准,除非目标链长达几千残基。
另外两个前置条件:
- 只支持 Linux,且建议有 NVIDIA GPU 的机器
- 多聚体模式比单体模式多要两个数据库:UniProt和PDB seqres(跑单体的时候用不到)
满足这些,再往下看。
用 Docker 把环境搭起来,数据库放对位置是关键
官方推荐的部署方式就是容器化,步骤本身不长,坑都藏在目录结构里。
1. 装 Docker 和 NVIDIA Container Toolkit(GPU 支持靠它),然后克隆代码:
git clone https://gitcode.com/GitHub_Trending/al/alphafold cd alphafold2. 下载遗传数据库和模型权重(需要先装aria2c):
bash scripts/download_all_data.sh /path/to/DOWNLOAD_DIR > download.log 2> download_all.log &全量库下载约 556 GB,解压后近 3 TB,BFD 一个库就占 1.8 TB。强烈建议 SSD。这个下载脚本会顺带拉下模型参数:5 个 CASP14 单体模型、5 个带 pTM 头的模型、5 个 AlphaFold-Multimer 模型。
这里有一个官方反复强调的坑:DOWNLOAD_DIR绝对不能放在仓库目录里面。否则 Docker 构建时会把几个 TB 的数据库整个拷进构建上下文,慢到怀疑人生。
3. 验证 GPU 对容器可见:
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi输出里能看到你的显卡列表才算通过。
4. 构建镜像并安装宿主机的run_docker.py依赖:
docker build -f docker/Dockerfile -t alphafold . pip3 install -r docker/requirements.txt到这一步,Docker 部署 AlphaFold 的活儿就算干完了。
把多链 FASTA 写对:一个文件装下所有亚基
多链 FASTA 输入的规则很简单:一个文件里放全部亚基,每条链一个条目,>后面的名字自己起,比如:
>chain_A MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN >chain_B SLLKTLKRFLPLILPLIFPKAQRAPQVRVPPPVAPLRA注意两点:
- 同源多聚体就把同一条序列重复写多份,每份是一个独立条目,名字各不相同(三聚体就写三遍)
- 链 ID 按 FASTA 里的出现顺序分配,第一条是 A、第二条是 B……上限 20 条链,再多的会直接抛异常
这个链 ID 映射逻辑在 pipeline_multimer.py 的_make_chain_id_map里,想确认输出里某条链对应自己输入的哪段序列时,翻这里最准。
跑第一条多聚体预测:命令里真正要紧的三个参数
日常入口是docker/run_docker.py,它在容器里替你调run_alphafold.py。多聚体运行的最小命令:
python3 docker/run_docker.py \ --fasta_paths=complex.fasta \ --model_preset=multimer \ --num_multimer_predictions_per_model=5 \ --max_template_date=2021-11-01 \ --data_dir=/path/to/DOWNLOAD_DIR \ --output_dir=/home/user/abs/path/out参数里真正值得解释的就三个,其余(--max_template_date限制模板搜索日期、--data_dir指向数据库)照着填即可:
| 参数 | 作用 | 建议 |
|---|---|---|
--model_preset=multimer | 切换多聚体模型,同时会额外校验 UniProt 和 PDB seqres 两个库 | 跑复合物必加 |
--num_multimer_predictions_per_model | 每个模型用多少个随机种子 | 默认 5,乘 5 个模型共 25 个预测;首次验证设 1 可以省不少时间 |
--models_to_relax | 松弛哪些模型 | 默认best(只松弛最优模型);all全松弛;none不松弛 |
其余开关知道就行:--db_preset=reduced_dbs换缩小版 BFD(8 核 / 8 GB 内存 / 600 GB 磁盘就能跑),--enable_gpu_relax=false把能量松弛切到 CPU。
跑的过程中,管线内部在做什么
从输入到ranked_0.pdb,大致经过这么几步:
搜索环节用的是 JackHMMER、HHblits、HHsearch 这一套,对应封装都在 data/tools/ 目录下。折叠环节的多链处理在 folding_multimer.py,不变点注意力机制就是在那里把链间几何关系算出来的。
要跑多久
官方给了 A100 上的参考耗时(只计折叠阶段,不含 MSA 搜索):2000 残基约 450 秒,3000 残基约 20 分钟,5000 残基约 5.2 小时。小结构想快一点,可以在 config.py 里调大subbatch_size。
跑完别急着画:pLDDT 和 PAE 热图先看完
结构文件出来了,先做验收,再谈可视化。
第一层:pLDDT。残基级置信度,0 到 100,直接写在每个ranked_*.pdb的 B-factor 字段里(注意方向和普通 B-factor 相反:值越高越可信)。ranking_debug.json里是 5 个模型的 pLDDT 汇总和它们对应原始模型名的映射。
第二层:PAE 热图。result_model_*.pkl里有predicted_aligned_error数组,形状 [N_res, N_res],值域 0 到上限,越小代表这两个残基的相对位置越确定。判读时的两个常用姿势:
- 矩阵对角块高(值大):同一结构域内部还算稳,块与块之间的区域大 → 结构域之间的相对排布不可靠
- 跨链区域高 → 两条链的界面关系没把握,这个复合物的结合模式要存疑
画热图最快的方式是用仓库自带的 notebooks/AlphaFold.ipynb,直接加载result_model_*.pkl出 pLDDT 条形图和 PAE 热图。
输出目录里的文件各管什么
<output_dir>/<target_name>/ ├── ranked_0.pdb # 置信度最高(默认经 Amber 松弛) ├── ranked_1..4.pdb # 其余排名(默认未松弛) ├── unrelaxed_model_1..5.pdb ├── relaxed_model_*.pdb ├── result_model_1..5.pkl # plddt / predicted_aligned_error / ptm 等数组 ├── ranking_debug.json # pLDDT 排序依据 ├── relax_metrics.json # 松弛后的残余违规 ├── timings.json # 各阶段耗时 └── msas/ # 序列搜索的原始命中多聚体模型还会在 pkl 里给出pTM:一个标量,衡量模型对整体结构打包和结合状态有没有信心。pTM 低 + 跨链 PAE 高,基本可以断定这次预测的复合物界面不可靠。
跑挂了?四种最常见情况的排查顺序
docker build卡住或镜像巨大——先检查数据库目录是不是放进了仓库内部。run_docker.py里有硬检查,--data_dir落在仓库路径下会直接报错拒跑。- MSA 阶段报错且信息含糊——多半是数据库目录读写权限不足。给下载目录递归加权限(如
chmod 755到下载目录及子目录)通常能解决。 - 报缺
uniprot_database_path或pdb_seqres_database_path——说明数据库不全。这两个库只有多聚体模式才要,用scripts/download_uniprot.sh和scripts/download_pdb_seqres.sh补齐。 - GPU 上松弛阶段崩掉——
--enable_gpu_relax=false切到 CPU 松弛,慢但稳。
还有个省时技巧:想反复试不同的折叠参数时,加--use_precomputed_msas=true复用第一次跑出来的 MSA,直接跳过最耗时的序列搜索环节。
至于多聚体预测参数调优,CASP15 基线用的配置是把每个模型的种子数从 5 提到 20、最大循环次数提到 20(带提前停止),官方认为这对大型和困难靶点值得加,但计算时间会明显上去。日常建议默认配置先跑,发现大复合物置信度可疑再往上加。
(上文 GIF 已出现一次,此处不再重复引用。)
下一步
去scripts/目录确认你的数据库版本,把课题里那个复合物的几条链按化学计量比写进一个 FASTA,设--num_multimer_predictions_per_model=1先快速跑一遍,然后打开result_model_1.pkl看跨链区域的 PAE——如果那里是冷色,恭喜你,这个界面可以信;如果是热色,把序列再核对一遍,确认没有漏掉或写错亚基。
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考