AlphaFold实操:3步从一条序列到3D蛋白质结构预测
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
拿到一条氨基酸序列,怎么看到它的三维结构
你手里只有一条氨基酸序列,想做蛋白质结构预测,看它的三维形状长什么样。手动装环境、下几十上百 GB 的序列数据库、配 GPU,每一步都能卡你半天。这个仓库就是 AlphaFold 的官方开源推理代码,干的事很单一:输入序列,输出排好序的结构文件和逐残基置信度。接下来我会带你把序列文件准备好、用容器提交一个结构预测任务、学会给多聚体和翻译后修饰写配置,以及看懂结果里的 pLDDT、PAE 这几个数到底意味着什么。
AlphaFold 是什么:一套容器化的蛋白质结构预测管线
这个项目是 AlphaFold v2 及其多链版 AlphaFold-Multimer 的官方实现。核心能力是:给你一条或几条序列,它自动完成多序列比对(MSA)搜索、结构模板搜索、5 个模型的推理,再加一轮几何弛豫,最后输出一组按置信度排序的结构。
自己搭环境的话,你要分别装 HH-suite、HMMER、OpenMM、JAX/TensorFlow 这一整条依赖链,再逐个下载 UniRef90、BFD、MGnify、PDB70 等 8 个数据库,装完再祈祷版本对得上。用这个仓库则不同:docker/Dockerfile把所有推理依赖打进了一个镜像,docker/run_docker.py负责把你的 FASTA 文件、数据库、输出目录挂载进容器,整条流程就是两条命令。代价是本地部署的硬件门槛:Linux 机器、NVIDIA GPU(显存越大能跑的蛋白越长)、最多 3 TB 磁盘(下载 556 GB,解压后 2.62 TB)。
原理一句话:序列经 JackHMMER 和 HHblits 去 UniRef90、BFD 等数据库建 MSA,HHsearch 查 PDB70 找模板,模型用 5 个不同随机种子各推一遍结构,最后 Amber 力场弛豫几何。
从输入到输出:单体结构预测完整走一遍
准备序列文件
AlphaFold 的入口是标准 FASTA 文件。一个文件里只放一条序列时按单体处理,放多条序列时按复合物处理。
>sequence_name <SEQUENCE>来源:README.md Examples 部分。
提示:FASTA 文件的基础名会直接用作输出目录名,所以批量跑多个文件时,每个文件的基础名必须唯一。
文件放好之后,缺的就是数据库和镜像,下面一步把这两件事一次解决。
下载数据库并构建镜像
克隆仓库后用scripts/download_all_data.sh下载全部数据库和模型参数,体量很大,建议放后台跑;同一时间可以构建 Docker 镜像、装脚本依赖。
git clone https://gitcode.com/GitHub_Trending/al/alphafold cd ./alphafold scripts/download_all_data.sh <DOWNLOAD_DIR> > download.log 2> download_all.log &docker build -f docker/Dockerfile -t alphafold . pip3 install -r docker/requirements.txt来源:README.md 安装部分、docker/Dockerfile、docker/requirements.txt。
注意:
<DOWNLOAD_DIR>千万不要放在仓库目录里面,否则构建镜像时大数据库会被拷进构建上下文,慢得离谱。机器小一点的话,给脚本追加参数reduced_dbs下载缩减版数据库,大约 600 GB 磁盘、8 核 CPU、8 GB 内存即可。
数据库和镜像都就位后,就可以提交预测任务了。
提交预测任务
先跑一句docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi,能列出 GPU 再往下走。然后执行预测,下面是单体模型配缩减数据库的组合:
python3 docker/run_docker.py \ --fasta_paths=your_protein.fasta \ --max_template_date=2022-01-01 \ --model_preset=monomer \ --db_preset=reduced_dbs \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/tmp/alphafold来源:README.md 示例命令,完整参数含义见 docker/run_docker.py。
注意:
--max_template_date限定只能用该日期之前入库的模板结构,折叠历史测试集(比如复现 CASP 目标)时必加。单体推理本身很快,参考值:A100 上 100 残基约 5 秒,2500 残基约 16 分钟,MSA 搜索时间另算。
下载并打开结果
任务结束后,输出目录里会为每个目标建一个子目录,结构如下:
<target_name>/ ranked_{0,1,2,3,4}.pdb relaxed_model_{1,2,3,4,5}.pdb unrelaxed_model_{1,2,3,4,5}.pdb ranking_debug.json result_model_{1,2,3,4,5}.pkl timings.json msas/来源:README.md "AlphaFold output" 部分。
打开ranked_0.pdb就能看到置信度最高的结构,PyMOL 或 ChimeraX 直接载入即可。pLDDT 分数被写进了 PDB 的 B-factor 列(注意:和真 B-factor 相反,值越高越可靠),5 个种子的排序细节在ranking_debug.json里。想要 PAE 和 pTM 这两项指标,需要换用带 pTM 头的预设(monomer_ptm或multimer),两个数组存在result_model_*.pkl里。
提示:默认只对最优模型做 Amber 弛豫(
--models_to_relax=best)。想 5 个全弛豫改成all,时间会明显拉长。
需求变复杂了:复合物、修饰与配体
要预测的体系一旦超过单条蛋白链,只需要换一种输入写法,推理代码本身不用动。
多聚体怎么配置:多序列 FASTA
蛋白-蛋白相互作用、同源多聚体、A2B3 这类异源寡聚体,做法都一样:把所有链的拷贝按顺序放进同一个 FASTA,预设换成multimer。这个预设额外要求下载过 UniProt 数据库。
>sequence_1 <SEQUENCE A> >sequence_2 <SEQUENCE A> >sequence_3 <SEQUENCE B>来源:README.md "Folding a heteromer" 示例。命令只改一个预设,顺手把每个模型的种子数降下来:
python3 docker/run_docker.py \ --fasta_paths=heteromer.fasta \ --model_preset=multimer \ --num_multimer_predictions_per_model=1 \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/tmp/alphafold注意:multimer 默认每个模型跑 5 个随机种子,5 个模型共 25 次预测;
--num_multimer_predictions_per_model=1只跑 1 个种子,精度略降但快很多。
需要给蛋白加翻译后修饰或糖基化
研究磷酸化、糖基化等修饰态蛋白时,server/目录描述的批量任务格式可以用 JSON 把它们写出来:modifications里给 CCD 编码和残基位置,glycans描述糖链结构。
"proteinChain": { "sequence": "PREACHINGS", "modifications": [ { "ptmType": "CCD_P1L", "ptmPosition": 5 } ], "glycans": [ { "residues": "NAG(NAG)(BMA)", "position": 8 } ], "count": 1 }来源:server/example.json。
提示:序列只接受 IUPAC 标准 20 种氨基酸;允许的修饰 CCD 编码共 23 个,完整清单在 server/README.md。
蛋白要带上 DNA/RNA、配体和离子
核酸、配体、离子在 JSON 里和蛋白链是平级的"实体",往sequences数组里追加条目即可:dnaSequence和rnaSequence是单链序列,ligand与ion只要 CCD 编码和份数。
{ "dnaSequence": { "sequence": "TAGGACA", "count": 1 } }, { "ligand": { "ligand": "CCD_ATP", "count": 1 } }, { "ion": { "ion": "MG", "count": 2 } }来源:server/example.json。
提示:
dnaSequence是单链 DNA,双链要自己把反向互补链作为第二条dnaSequence加进来。允许的配体(ATP、HEM、FAD 等 19 种)和离子(MG、ZN、CA 等 10 种)名单同样在 server/README.md。
结果靠不靠谱:三个关键指标
拿到 PDB 之后别急着看形状,先检查置信度指标,它们决定这份结构能用到什么程度。
| 指标 | 范围 | 在哪里看 | 怎么读 |
|---|---|---|---|
| pLDDT(逐残基置信度) | 0–100,越高越可靠 | PDB 的 B-factor 列、ranking_debug.json | 低于 50 大概率是无序区,别拿去做对接;90 以上多为结构核心 |
| PAE(预测对齐误差) | 0 到上限值,0 最可靠 | result_model_*.pkl(pTM 预设) | 界面残基对 PAE 低,说明两条链的相对取向可信 |
| pTM(预测 TM-score) | 标量 | result_model_*.pkl(pTM 预设) | 评估整体折叠和结构域堆积是否站得住 |
实际怎么用:某个区域要拿去做对接或表位分析之前,先看它的 pLDDT 是否普遍高于 70;整条蛋白 pLDDT 大面积低于 50,那它很可能是内在无序蛋白,预测出的"结构"只是构象倾向,别当真。复合物场景看 PAE:两条链之间 PAE 低,相互作用界面才值得信,成片高值说明相对取向不确定。另外注意,默认monomer预设只输出 pLDDT,PAE 和 pTM 要用monomer_ptm或multimer。
上图是 CASP14 两个目标的预测(蓝色)对实验结构(绿色):T1037 的 RNA 聚合酶结构域 GDT 90.7,T1049 的黏附素尖端 GDT 93.3,主链几乎完全重合,这就是"靠谱"长什么样。
踩坑记录:五个高频问题
GPU 检测列不出显卡
如果docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi打印不出 GPU 列表,说明 NVIDIA Container Toolkit 没装好 → 装 Toolkit 并重启 Docker 服务,这是 README 里排在安装前的前置步骤。
MSA 阶段报出莫名其妙的权限错误
如果你在比对阶段看到外部工具抛出的、看不出来源的错误,多半是数据库目录读写权限不全 → 对下载目录执行sudo chmod 755 --recursive "$DOWNLOAD_DIR"再重跑。
序列太长,被拒或内存不够
如果序列超过 2500 残基,单体模型这条路走不通 → 换multimer预设来建模,或在 notebooks/AlphaFold.ipynb 里勾选use_multimer_model_for_monomers(notebook 版硬上限:单体链 2500、总长 4000 残基)。超过 3000 残基的精度没有完整验证过,运行也慢,建议拆成结构域分别预测。
Docker 构建慢得反常
如果 build 在拷贝上下文阶段卡很久,说明下载目录放进了仓库目录里,大数据库正在被拷进构建上下文 → 把DOWNLOAD_DIR挪到仓库外再构建;run_docker.py检测到这种布局也会直接报错拦下你。
同一个目标重跑结果差异很大
如果你用相同序列重跑、结构波动明显,这是模型固有的随机性(CASP14 的 T1064 是著名的波动大目标)→ 系统默认用 5 个不同种子的模型、按 pLDDT 取最优来对冲这种差异,需要复现时把参数和数据库版本都记录下来。
继续深入
- docs/technical_note_v2.3.0.md:v2.3.0 技术说明,模型架构与推理细节,想改参数或复现结果前读它。
- server/README.md:JSON 任务格式完整字段参考,全部修饰、配体、离子的 CCD 编码名单都在这里。
- scripts/download_all_data.sh:数据库下载入口,加
reduced_dbs参数可拿缩减版数据库,适合磁盘小的机器。 - notebooks/AlphaFold.ipynb:简化版 Colab notebook,没有本地 GPU 时可以先在浏览器里把整个流程跑通,再迁到本地容器。
打开终端,把你的 FASTA 文件放好,一条序列的三维结构就在接下来的几十分钟里出结果了。
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考