alphafold
AlphaFold 是由 DeepMind 开发的开源人工智能系统,核心功能是根据氨基酸序列高精度预测蛋白质的三维结构。它成功解决了生物学领域长期存在的“蛋白质折叠问题”,即如何从一维基因信息推导出决定生物功能的复杂空间形态,其预测精度在多项国际竞赛中已达到实验级水平。
这套代码实现了 AlphaFold 2 的完整推理流程,并包含了用于预测蛋白质复合物的 AlphaFold-Multimer 模型。其独特的技术亮点在于深度学习架构与进化生物学数据的深度融合:通过挖掘多序列比对中的共进化信号,结合注意力机制神经网络,无需依赖大量已知结构模板即可实现从头预测。
AlphaFold 主要面向生物信息学研究人员、计算生物学家及具备 Linux 操作基础的开发者使用。由于运行该系统需要配置 Docker 环境、下载数百 GB 的遗传数据库,并依赖高性能 NVIDIA GPU 进行计算,它对硬件资源和工程部署能力有一定门槛,因此不太适合无编程背景的普通用户或仅需简单可视化设计的设计师。对于科研团队而言,AlphaFold 提供了强大的本地化部署方案,能够加速新药研发、酶设计及基础生命科学探索,是连接基因序列与生命功能的关键桥梁。
使用场景
某生物医药公司的结构生物学团队正急需解析一种新型病毒蛋白的三维结构,以加速抗病毒药物的靶点筛选与设计。
没有 alphafold 时
- 耗时漫长:依赖传统的 X 射线晶体学或冷冻电镜实验,从蛋白表达、纯化到最终解析结构,往往需要数月甚至数年的反复试错。
- 成本高昂:实验过程需要昂贵的专业设备、大量试剂消耗以及高水平技术人员的持续投入,单次失败的经济损失巨大。
- 成功率低:对于难以结晶或稳定性差的膜蛋白等目标,传统实验方法经常无法获得高质量数据,导致项目被迫停滞。
- 信息滞后:在等待实验结果的漫长周期中,药物研发进程被迫中断,错失抢占治疗窗口的最佳时机。
使用 alphafold 后
- 极速预测:只需输入氨基酸序列,alphafold 即可在数小时至数天内利用 GPU 集群输出高精度的三维结构模型,将周期从“月级”压缩至“天级”。
- 成本骤降:无需前期投入巨额实验经费,仅需常规的服务器算力资源,即可对成千上万个潜在靶点进行低成本的大规模虚拟筛选。
- 突破瓶颈:即使面对传统手段难以攻克的复杂蛋白或多聚体(通过 AlphaFold-Multimer),alphafold 也能提供可靠的构象预测,填补实验空白。
- 迭代高效:研究人员可基于预测结果快速设计突变体或优化药物分子,实现“预测 - 验证 - 优化”的敏捷研发闭环。
alphafold 将蛋白质结构解析从一项高门槛的实验艺术转变为高效的计算流程,彻底重塑了现代药物发现的速度与广度。
运行环境要求
- Linux
- 必需
- 需要现代 NVIDIA GPU(支持 CUDA),需安装 NVIDIA Container Toolkit
- 显存大小未明确具体数值,但说明显存越大可预测的蛋白质结构越大
- README 中构建镜像时使用的测试基础镜像为 nvidia/cuda:11.0-base
未说明

快速开始

AlphaFold
本软件包提供了 AlphaFold v2 推理流程的实现。为简便起见,在本文档的其余部分中,我们将该模型简称为 AlphaFold。
我们还提供:
- AlphaFold-Multimer 的实现。这仍处于开发阶段,因此 AlphaFold-Multimer 的稳定性预计不如我们的单体 AlphaFold 系统。请参阅更新现有安装指南,了解如何升级和更新代码。
- 技术说明,其中包含更新后的 AlphaFold v2.3.0 模型及推理流程。
- 一套CASP15 基线预测,以及对任何人工干预操作的说明文档。
任何披露使用本源代码或模型参数所得成果的出版物,均应引用《AlphaFold 论文》(https://doi.org/10.1038/s41586-021-03819-2),并在适用时引用《AlphaFold-Multimer 论文》(https://www.biorxiv.org/content/10.1101/2021.10.04.463034v1)。
此外,请参阅补充信息,以获取方法的详细描述。
您也可以使用社区支持版本中的简化版 AlphaFold(见下文)。
如有任何疑问,请联系 AlphaFold 团队:alphafold@deepmind.com。

安装与首次运行预测
您需要一台运行 Linux 的机器;AlphaFold 不支持其他操作系统。完整安装需要最多 3 TB 的磁盘空间来存储遗传数据库(建议使用 SSD 存储),并配备现代 NVIDIA GPU(具有更大显存的 GPU 可以预测更大的蛋白质结构)。
请按照以下步骤操作:
安装 Docker。
- 安装NVIDIA Container Toolkit,以支持 GPU。
- 设置以非 root 用户身份运行 Docker:非 root 用户管理 Docker。
克隆此仓库并进入该目录。
git clone https://github.com/deepmind/alphafold.git cd ./alphafold下载遗传数据库和模型参数:
安装
aria2c。在大多数 Linux 发行版中,可通过包管理器以aria2软件包的形式获得(例如,在基于 Debian 的发行版上,可运行sudo apt install aria2进行安装)。rsync同理。请使用脚本
scripts/download_all_data.sh来下载并设置完整的数据库。这可能需要较长时间(下载大小为 556 GB),因此建议在后台运行该脚本:
scripts/download_all_data.sh <DOWNLOAD_DIR> > download.log 2> download_all.log &注意:下载目录
<DOWNLOAD_DIR>不应位于 AlphaFold 仓库目录的子目录中。 如果是,则 Docker 构建过程会非常缓慢,因为大型数据库会被复制到 Docker 构建上下文中。也可以使用精简版数据库运行 AlphaFold;请参阅完整文档。
通过运行以下命令检查 AlphaFold 是否能够使用 GPU:
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi该命令的输出应显示您的 GPU 列表。如果未显示,请检查是否已正确完成NVIDIA Container Toolkit的安装步骤,或查看以下NVIDIA Docker 问题。
如果您希望在 HPC 系统上使用 Singularity(一种常见的容器化平台)运行 AlphaFold,建议参考以下链接中的第三方 Singularity 配置:https://github.com/deepmind/alphafold/issues/10 或 https://github.com/deepmind/alphafold/issues/24。
构建 Docker 镜像:
docker build -f docker/Dockerfile -t alphafold .如果遇到以下错误:
W: GPG 错误:https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease:以下签名无法验证,因为公钥不可用:NO_PUBKEY A4B469963BF863CC E: 存储库 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease' 未签名。请使用 https://github.com/deepmind/alphafold/issues/463#issuecomment-1124881779 中描述的解决方法。
安装
run_docker.py的依赖项。注意:您可以选择创建一个Python 虚拟环境,以避免与系统 Python 环境发生冲突。pip3 install -r docker/requirements.txt确保输出目录存在(默认为
/tmp/alphafold),并且您拥有写入该目录的权限。运行
run_docker.py,指定包含您希望预测结构的蛋白质序列的 FASTA 文件(--fasta_paths参数)。AlphaFold 将在--max_template_date参数指定的日期之前搜索可用模板;这可用于在建模过程中排除某些模板。--data_dir是下载的遗传数据库所在目录,而--output_dir是输出目录的绝对路径。python3 docker/run_docker.py \ --fasta_paths=your_protein.fasta \ --max_template_date=2022-01-01 \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/home/user/absolute_path_to_the_output_dir运行完成后,输出目录将包含目标蛋白质的预测结构。有关更多选项和故障排除提示,请参阅下方文档。
遗传数据库
此步骤要求您的机器上已安装 aria2c。
AlphaFold 运行需要多个遗传(序列)数据库:
- BFD,
- MGnify,
- PDB70,
- PDB(mmCIF 格式的结构文件),
- PDB seqres——仅用于 AlphaFold-Multimer,
- UniRef30(原 UniClust30),
- UniProt——仅用于 AlphaFold-Multimer,
- UniRef90。
我们提供了一个脚本 scripts/download_all_data.sh,可用于下载并设置所有这些数据库:
推荐的默认方式:
scripts/download_all_data.sh <DOWNLOAD_DIR>将下载完整的数据库。
使用
reduced_dbs参数:scripts/download_all_data.sh <DOWNLOAD_DIR> reduced_dbs将下载一个精简版的数据库,供后续使用
reduced_dbs数据库预设时调用。在运行 AlphaFold 时,请配合相应的参数--db_preset=reduced_dbs使用(请参阅 AlphaFold 参数 部分)。
:ledger: 注意:下载目录 <DOWNLOAD_DIR> 不应位于 AlphaFold 代码库目录下。 如果位于子目录中,Docker 镜像构建过程会因复制大型数据库而变得缓慢。
我们并未提供与 CASP14 完全一致的数据库版本——请参阅 关于可重复性的说明。部分数据库为提升速度进行了镜像,详情请见 镜像数据库。
:ledger: 注意:完整数据库的总下载量约为 556 GB,解压后总大小达 2.62 TB。请确保您有足够的硬盘空间、带宽和时间来完成下载。为了获得更好的基因搜索性能,建议使用 SSD 硬盘。
:ledger: 注意:如果下载目录及其包含的数据集没有完全的读写权限,可能会导致 MSA 工具出现错误,并产生模糊不清的外部报错信息。请确保已赋予必要的权限,例如使用 sudo chmod 755 --recursive "$DOWNLOAD_DIR" 命令。
download_all_data.sh 脚本还会下载模型参数文件。脚本执行完毕后,您将得到如下目录结构:
$DOWNLOAD_DIR/ # 总计:约 2.62 TB(下载:556 GB)
bfd/ # 约 1.8 TB(下载:271.6 GB)
# 6 个文件。
mgnify/ # 约 120 GB(下载:67 GB)
mgy_clusters_2022_05.fa
params/ # 约 5.3 GB(下载:5.3 GB)
# 5 个 CASP14 模型,
# 5 个 pTM 模型,
# 5 个 AlphaFold-Multimer 模型,
# LICENSE 文件,
# 共 16 个文件。
pdb70/ # 约 56 GB(下载:19.5 GB)
# 9 个文件。
pdb_mmcif/ # 约 238 GB(下载:43 GB)
mmcif_files/
# 约 199,000 个 .cif 文件。
obsolete.dat
pdb_seqres/ # 约 0.2 GB(下载:0.2 GB)
pdb_seqres.txt
small_bfd/ # 约 17 GB(下载:9.6 GB)
bfd-first_non_consensus_sequences.fasta
uniref30/ # 约 206 GB(下载:52.5 GB)
# 7 个文件。
uniprot/ # 约 105 GB(下载:53 GB)
uniprot.fasta
uniref90/ # 约 67 GB(下载:34 GB)
uniref90.fasta
bfd/ 只有在下载完整数据库时才会被下载;而 small_bfd/ 则仅在下载精简数据库时才会被下载。
模型参数
尽管 AlphaFold 的代码采用 Apache 2.0 许可证授权,但 AlphaFold 的参数以及 CASP15 的预测数据则依据 CC BY 4.0 许可证条款发布。更多详细信息请参阅下方的 免责声明。
AlphaFold 参数可从 https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar 获取,并且会在运行 scripts/download_all_data.sh 脚本时一并下载。该脚本将下载以下参数:
- 5 个在 CASP14 中使用并经过广泛验证的结构预测质量的模型(详情请参阅 Jumper 等人 2021 年的研究,补充方法 1.12)。
- 5 个 pTM 模型,这些模型经过微调,可在进行结构预测的同时输出 pTM(预测 TM 分数)及 PAE(预测对齐误差)值(详情请参阅 Jumper 等人 2021 年的研究,补充方法 1.9.7)。
- 5 个 AlphaFold-Multimer 模型,它们同样能够在结构预测的同时输出 pTM 和 PAE 值。
更新现有安装
如果您已经安装了旧版本,您可以选择从头开始全新安装(删除所有内容并重新运行安装程序),也可以进行增量更新。增量更新速度会快很多,但需要多做一些准备工作。请务必按照以下列出的精确顺序执行这些步骤:
- 更新代码。
- 进入克隆的 AlphaFold 仓库目录,运行
git fetch origin main以获取所有代码更新。
- 进入克隆的 AlphaFold 仓库目录,运行
- 更新 UniProt、UniRef、MGnify 和 PDB seqres 数据库。
- 删除
<DOWNLOAD_DIR>/uniprot。 - 运行
scripts/download_uniprot.sh <DOWNLOAD_DIR>。 - 删除
<DOWNLOAD_DIR>/uniclust30。 - 运行
scripts/download_uniref30.sh <DOWNLOAD_DIR>。 - 删除
<DOWNLOAD_DIR>/uniref90。 - 运行
scripts/download_uniref90.sh <DOWNLOAD_DIR>。 - 删除
<DOWNLOAD_DIR>/mgnify。 - 运行
scripts/download_mgnify.sh <DOWNLOAD_DIR>。 - 删除
<DOWNLOAD_DIR>/pdb_mmcif。为了确保 PDB SeqRes 和 PDB 数据来自完全相同的日期,必须执行此步骤。如果未按要求操作,在运行 AlphaFold-Multimer 进行模板搜索时可能会出现错误。 - 运行
scripts/download_pdb_mmcif.sh <DOWNLOAD_DIR>。 - 运行
scripts/download_pdb_seqres.sh <DOWNLOAD_DIR>。
- 删除
- 更新模型参数。
- 删除
<DOWNLOAD_DIR>/params中的旧模型参数。 - 使用
scripts/download_alphafold_params.sh <DOWNLOAD_DIR>下载新的模型参数。
- 删除
- 按照 运行 AlphaFold 的说明进行操作。
使用已弃用的模型权重
要使用已弃用的 v2.2.0 版本 AlphaFold-Multimer 模型权重:
- 将
scripts/download_alphafold_params.sh中的SOURCE_URL更改为https://storage.googleapis.com/alphafold/alphafold_params_2022-03-02.tar, 并下载旧版参数。 - 将
config.py中的 multimerMODEL_PRESETS中的_v3改为_v2。
要使用已弃用的 v2.1.0 版本 AlphaFold-Multimer 模型权重:
- 将
scripts/download_alphafold_params.sh中的SOURCE_URL更改为https://storage.googleapis.com/alphafold/alphafold_params_2022-01-19.tar, 并下载旧版参数。 - 将
config.py中的 multimerMODEL_PRESETS中的_v3删除。
运行 AlphaFold
运行 AlphaFold 最简单的方式是使用提供的 Docker 脚本。 该方法已在 Google Cloud 上经过测试,使用的机器配备 nvidia-gpu-cloud-image 镜像,具有 12 个 vCPU、85 GB 内存、100 GB 启动盘,数据库存储在额外的 3 TB 磁盘上,并搭载 A100 GPU。首次运行时,请按照
安装与首次预测运行
部分的说明进行操作。
默认情况下,AlphaFold 会尝试使用所有可见的 GPU 设备。若需使用部分 GPU,可通过
--gpu_devices标志指定以逗号分隔的 GPU UUID 或索引列表。有关详细信息,请参阅 GPU 枚举。您可以通过添加
--model_preset=标志来控制运行的 AlphaFold 模型。我们提供以下模型:monomer:这是 CASP14 时使用的原始模型,未采用集成方法。
monomer_casp14:这是 CASP14 时使用的原始模型,设置了
num_ensemble=8,与我们的 CASP14 配置一致。此选项主要用于结果的可重复性,尽管其计算成本高出 8 倍,但准确率提升有限(CASP14 数据集上的平均 GDT 提升仅为 0.1)。monomer_ptm:这是在 CASP14 原始模型基础上微调后的版本,增加了 pTM 头部,可提供成对置信度评分。其准确率略低于普通单体模型。
multimer:这是 AlphaFold-Multimer 模型。要使用此模型,需提供包含多个序列的 FASTA 文件,并且必须提前下载 UniProt 数据库。
您可以通过在运行命令中添加
--db_preset=reduced_dbs或--db_preset=full_dbs来控制 MSA 的速度与质量之间的权衡。我们提供以下预设:reduced_dbs:此预设针对速度和较低的硬件要求进行了优化,使用精简版的 BFD 数据库。它需要 8 个 CPU 核心(vCPUs)、8 GB 内存和 600 GB 磁盘空间。
full_dbs:此预设使用 CASP14 时所用的所有遗传数据库。
例如,使用
monomer模型预设和reduced_dbs数据预设运行上述命令时,命令如下:python3 docker/run_docker.py \ --fasta_paths=T1050.fasta \ --max_template_date=2020-05-14 \ --model_preset=monomer \ --db_preset=reduced_dbs \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/home/user/absolute_path_to_the_output_dir在生成预测模型后,AlphaFold 会执行一个松弛步骤以改善局部几何结构。默认情况下,仅对最佳模型(根据 pLDDT 评分)进行松弛处理(
--models_to_relax=best),但也可以选择对所有模型(--models_to_relax=all)或不进行任何松弛处理(--models_to_relax=none)。松弛步骤可以在 GPU 上运行(速度更快,但稳定性可能较差)或在 CPU 上运行(速度较慢,但更稳定)。这可以通过
--enable_gpu_relax=true(默认值)或--enable_gpu_relax=false来控制。AlphaFold 可以通过
--use_precomputed_msas=true选项复用同一序列的 MSA(多序列比对),这对于尝试不同的 AlphaFold 参数非常有用。此选项的前提是输出目录中已存在首次运行 AlphaFold 生成的目录结构,且蛋白质序列相同。
运行 AlphaFold-Multimer
所有步骤与运行单体系统时相同,但您需要:
- 提供包含多个序列的输入 FASTA 文件,
- 设置
--model_preset=multimer,
以下是一个折叠蛋白质复合物 multimer.fasta 的示例:
python3 docker/run_docker.py \
--fasta_paths=multimer.fasta \
--max_template_date=2020-05-14 \
--model_preset=multimer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
默认情况下,multimer 系统会对每个模型运行 5 个种子(共 25 次预测)。如果您希望在略微降低准确率的情况下减少预测次数,可以将每个模型的种子数设置为 1。这可以通过 --num_multimer_predictions_per_model 标志实现,例如将其设置为 --num_multimer_predictions_per_model=1 即可让每个模型只运行一个种子。
AlphaFold 预测速度
下表报告了不同长度蛋白质的预测运行时间。我们仅测量三次迭代的未松弛结构预测,不包括 MSA 和模板搜索的运行时间。当使用 --benchmark=true 运行 docker/run_docker.py 时,此运行时间会存储在 timings.json 文件中。所有运行时间均来自单个 A100 NVIDIA GPU。对于较小的结构,可以通过在 alphafold/model/config.py 中增加 global_config.subbatch_size 来提高 A100 上的预测速度。
| 残基数 | 预测时间 (秒) |
|---|---|
| 100 | 4.9 |
| 200 | 7.7 |
| 300 | 13 |
| 400 | 18 |
| 500 | 29 |
| 600 | 36 |
| 700 | 53 |
| 800 | 60 |
| 900 | 91 |
| 1,000 | 96 |
| 1,100 | 140 |
| 1,500 | 280 |
| 2,000 | 450 |
| 2,500 | 969 |
| 3,000 | 1,240 |
| 3,500 | 2,465 |
| 4,000 | 5,660 |
| 4,500 | 12,475 |
| 5,000 | 18,824 |
示例
以下是不同场景下使用 AlphaFold 的示例。
折叠单体
假设我们有一个序列为 <SEQUENCE> 的单体。输入的 FASTA 文件应为:
>sequence_name
<SEQUENCE>
然后运行以下命令:
python3 docker/run_docker.py \
--fasta_paths=monomer.fasta \
--max_template_date=2021-11-01 \
--model_preset=monomer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
折叠同源多聚体
假设我们有一个由 3 个相同序列 <SEQUENCE> 组成的同源多聚体。输入的 FASTA 文件应为:
>sequence_1
<SEQUENCE>
>sequence_2
<SEQUENCE>
>sequence_3
<SEQUENCE>
然后运行以下命令:
python3 docker/run_docker.py \
--fasta_paths=homomer.fasta \
--max_template_date=2021-11-01 \
--model_preset=multimer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
折叠异源多聚体
假设我们有一个 A2B3 异源多聚体,即包含 2 个 <SEQUENCE A> 和 3 个 <SEQUENCE B>。输入的 FASTA 文件应为:
>sequence_1
<SEQUENCE A>
>sequence_2
<SEQUENCE A>
>sequence_3
<SEQUENCE B>
>sequence_4
<SEQUENCE B>
>sequence_5
<SEQUENCE B>
然后运行以下命令:
python3 docker/run_docker.py \
--fasta_paths=heteromer.fasta \
--max_template_date=2021-11-01 \
--model_preset=multimer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
依次折叠多个单体
假设我们有两个单体文件:monomer1.fasta 和 monomer2.fasta。
我们可以使用以下命令依次折叠这两个单体:
python3 docker/run_docker.py \
--fasta_paths=monomer1.fasta,monomer2.fasta \
--max_template_date=2021-11-01 \
--model_preset=monomer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
依次折叠多个多聚体
假设我们有两个多聚体文件:multimer1.fasta 和 multimer2.fasta。
我们可以使用以下命令依次折叠这两个多聚体:
python3 docker/run_docker.py \
--fasta_paths=multimer1.fasta,multimer2.fasta \
--max_template_date=2021-11-01 \
--model_preset=multimer \
--data_dir=$DOWNLOAD_DIR \
--output_dir=/home/user/absolute_path_to_the_output_dir
AlphaFold 输出
输出将保存在通过 run_docker.py 的 --output_dir 标志指定的目录下的子目录中(默认为 /tmp/alphafold/)。输出内容包括计算得到的多序列比对(MSA)、未弛豫结构、弛豫结构、按置信度排序的结构、原始模型输出、预测元数据以及各步骤的耗时信息。--output_dir 目录的结构如下:
<target_name>/
features.pkl
ranked_{0,1,2,3,4}.pdb
ranking_debug.json
relax_metrics.json
relaxed_model_{1,2,3,4,5}.pdb
result_model_{1,2,3,4,5}.pkl
timings.json
unrelaxed_model_{1,2,3,4,5}.pdb
msas/
bfd_uniref_hits.a3m
mgnify_hits.sto
uniref90_hits.sto
每个输出文件的内容说明如下:
features.pkl– 一个pickle文件,包含模型用于生成结构的输入特征 NumPy 数组。unrelaxed_model_*.pdb– 一个 PDB 格式的文本文件,包含模型直接输出的预测结构。relaxed_model_*.pdb– 一个 PDB 格式的文本文件,包含对未弛豫结构预测进行 Amber 弛豫处理后的最终结构(详细信息请参见 Jumper 等人 2021 年的研究,补充方法 1.8.6)。ranked_*.pdb– 一个 PDB 格式的文本文件,包含按模型置信度重新排序后的预测结构。其中ranked_i.pdb应该是置信度第 (i + 1) 高的预测结构(即ranked_0.pdb具有最高置信度)。模型置信度的排序依据是预测的 LDDT 分数(pLDDT;详细信息请参见 Jumper 等人 2021 年的研究,补充方法 1.9.6)。如果使用--models_to_relax=all,则所有排序后的结构都会被弛豫;如果使用--models_to_relax=best,则仅对ranked_0.pdb进行弛豫,其余均为未弛豫状态;若使用--models_to_relax=none,则所有排序后的结构均保持未弛豫状态。ranking_debug.json– 一个 JSON 格式的文本文件,包含用于模型排序的 pLDDT 值,以及这些值与原始模型名称之间的映射关系。relax_metrics.json– 一个 JSON 格式的文本文件,包含弛豫过程中的各项指标,例如残留的违反约束情况等。timings.json– 一个 JSON 格式的文本文件,记录 AlphaFold 流程中各个步骤的执行时间。msas/– 一个目录,包含用于构建输入 MSA 的各类基因工具比对结果文件。result_model_*.pkl– 一个pickle文件,包含由模型直接生成的各种嵌套 NumPy 数组。除了结构模块的输出外,还包括以下辅助输出:- 距离图(
distogram/logits是一个形状为 [N_res, N_res, N_bins] 的 NumPy 数组,distogram/bin_edges则定义了 bin 的边界)。 - 每个残基的 pLDDT 分数(
plddt是一个形状为 [N_res] 的 NumPy 数组,取值范围为0至100,其中100表示置信度最高)。这可用于识别预测置信度较高的序列区域,或通过对所有残基取平均来作为整体目标的置信度评分。 - 仅在使用 pTM 模型时存在:预测的 TM 得分(
ptm字段为一个标量)。作为全局叠加指标的预测值,该分数还用于评估模型对整体结构域堆叠的信心。 - 仅在使用 pTM 模型时存在:预测的成对对齐误差(
predicted_aligned_error是一个形状为 [N_res, N_res] 的 NumPy 数组,取值范围为0至max_predicted_aligned_error,其中0表示置信度最高)。这可用于可视化结构中各结构域堆叠的置信度。
- 距离图(
输出的 PDB 文件中,pLDDT 置信度指标存储在 B-factor 字段中(但与传统的 B-factor 不同,pLDDT 值越高表示置信度越高,因此在使用该字段进行分子置换等任务时需特别注意)。
经测试,本代码在 CASP14 测试集上采用 pLDDT 排序结合 5 次模型预测的结果,其平均 top-1 准确率与官方结果一致(部分 CASP 目标曾使用早期版本的 AlphaFold 进行预测,且部分目标还进行了人工干预;具体细节请参见我们即将发表的论文)。然而,某些目标如 T1064 可能会因随机种子的不同而出现较大的单次运行方差。
多蛋白推理
提供的推理脚本针对单个蛋白质的结构预测进行了优化,它会编译神经网络以专门适应输入序列、MSA 和模板的具体尺寸。对于大型蛋白质而言,编译时间在整个运行时间中占比极小,但对于小型蛋白质或已预先计算好多序列比对的情况,编译时间可能会变得较为显著。在批量推理场景下,可以考虑使用我们的 make_fixed_size 函数将输入数据填充至统一尺寸,从而减少所需的编译次数。
我们并未提供专门的批量推理脚本,但基于 RunModel.predict 方法并结合并行系统预先计算多序列比对,开发此类脚本应较为容易。此外,也可以重复调用该脚本,仅带来适度的额外开销。
关于 CASP14 可复现性的说明
AlphaFold 对少数蛋白质的输出具有较高的运行间差异,且可能受到输入数据变化的影响。CASP14 目标 T1064 是一个典型例子:近期大量 SARS-CoV-2 相关序列的加入显著改变了其 MSA。尽管通过运行多个模型并选择置信度最高的结果可以在一定程度上缓解这种变异性,但要尽可能复现我们 CASP14 系统的成果,仍需使用我们在 CASP 中所使用的相同数据库版本。这些版本可能与我们脚本默认下载的版本不一致。
基因数据库方面:
模板数据库方面:
- PDB:(2020-05-14 下载)
- PDB70: 2020-05-13
另一种方案是使用最新的 PDB 和 PDB70 数据库,但同时添加 --max_template_date=2020-05-14 标志,以限制模板仅使用在 CASP14 开始时已存在的结构。
引用本工作
如果您使用本软件包中的代码或数据,请引用以下文献:
@Article{AlphaFold2021,
author = {Jumper, John and Evans, Richard and Pritzel, Alexander and Green, Tim and Figurnov, Michael and Ronneberger, Olaf and Tunyasuvunakool, Kathryn and Bates, Russ and {\v{Z}}{\'\i}dek, Augustin and Potapenko, Anna and Bridgland, Alex and Meyer, Clemens and Kohl, Simon A A and Ballard, Andrew J and Cowie, Andrew and Romera-Paredes, Bernardino and Nikolov, Stanislav and Jain, Rishub and Adler, Jonas and Back, Trevor and Petersen, Stig and Reiman, David and Clancy, Ellen and Zielinski, Michal and Steinegger, Martin and Pacholska, Michalina and Berghammer, Tamas and Bodenstein, Sebastian and Silver, David and Vinyals, Oriol and Senior, Andrew W and Kavukcuoglu, Koray and Kohli, Pushmeet and Hassabis, Demis},
journal = {Nature},
title = {Highly accurate protein structure prediction with {AlphaFold}},
year = {2021},
volume = {596},
number = {7873},
pages = {583--589},
doi = {10.1038/s41586-021-03819-2}
}
此外,如果您使用 AlphaFold-Multimer 模式,请引用以下文献:
@article {AlphaFold-Multimer2021,
author = {Evans, Richard and O{\textquoteright}Neill, Michael and Pritzel, Alexander and Antropova, Natasha and Senior, Andrew and Green, Tim and {\v{Z}}{\'\i}dek, Augustin and Bates, Russ and Blackwell, Sam and Yim, Jason and Ronneberger, Olaf and Bodenstein, Sebastian and Zielinski, Michal and Bridgland, Alex and Potapenko, Anna and Cowie, Andrew and Tunyasuvunakool, Kathryn and Jain, Rishub and Clancy, Ellen and Kohli, Pushmeet and Jumper, John and Hassabis, Demis},
journal = {bioRxiv},
title = {Protein complex prediction with AlphaFold-Multimer},
year = {2021},
elocation-id = {2021.10.04.463034},
doi = {10.1101/2021.10.04.463034},
URL = {https://www.biorxiv.org/content/early/2021/10/04/2021.10.04.463034},
eprint = {https://www.biorxiv.org/content/early/2021/10/04/2021.10.04.463034.full.pdf},
}
社区贡献
社区提供的 Colab 笔记本(请注意,这些笔记本可能与我们的完整 AlphaFold 系统有所不同,我们并未验证其准确性):
- ColabFold AlphaFold2 笔记本,由 Martin Steinegger、Sergey Ovchinnikov 和 Milot Mirdita 提供,该笔记本使用基于 MMseqs2 服务器的 Södinglab 托管 API 来进行多序列比对的构建。 (Mirdita et al. 2019, Bioinformatics)
致谢
AlphaFold 与以下独立的库和软件包进行通信和/或引用:
- Abseil
- Biopython
- Colab
- Docker
- HH Suite
- HMMER Suite
- Haiku
- JAX
- Kalign
- matplotlib
- ML Collections
- NumPy
- OpenMM
- OpenStructure
- pymol3d
- Sonnet
- TensorFlow
- Tree
- tqdm
我们感谢所有这些项目的贡献者和维护者!
联系我们
如果您有任何本概述未涵盖的问题,请联系 AlphaFold 团队,邮箱地址为:alphafold@deepmind.com。
我们非常期待您的反馈,并希望了解 AlphaFold 如何在您的研究中发挥作用。请将您的故事分享给我们,发送至:alphafold@deepmind.com。
许可与免责声明
本项目并非 Google 官方支持的产品。
版权所有 © 2022 DeepMind Technologies Limited。
AlphaFold 2 及其输出仅用于理论建模,不适用于临床用途,也未经验证或批准用于临床。您不应将 AlphaFold 2 或其输出用于临床目的,亦不应依赖其结果获取医疗或其他专业建议。任何与此类主题相关的内容仅供信息参考,不能替代合格专业人士的建议。
AlphaFold 2 的预测结果具有不同程度的置信度,应谨慎解读。在依赖、发表、下载或以其他方式使用 AlphaFold 2 及其输出之前,请务必谨慎判断。
AlphaFold 代码许可
本文件根据 Apache License, Version 2.0(“许可证”)授权。除非符合许可证的规定,否则不得使用本文件。您可以在 https://www.apache.org/licenses/LICENSE-2.0 获取许可证副本。
除非适用法律另有要求或双方另有约定,否则根据本许可证分发的软件按“原样”提供,不附带任何形式的保证或条件,无论是明示还是暗示。有关许可证的具体语言、权限及限制,请参阅许可证条款。
模型参数许可
AlphaFold 的模型参数依据 Creative Commons Attribution 4.0 International (CC BY 4.0) 许可协议提供。详细信息请访问:https://creativecommons.org/licenses/by/4.0/legalcode
第三方软件
上述【致谢】部分提及的第三方软件、库或代码的使用,可能受单独的条款、条件或许可协议约束。您对这些第三方软件、库或代码的使用需遵守相应的规定,并在使用前确认自己能够遵守所有适用的限制和条款。
镜像数据库
以下数据库已由 DeepMind 进行镜像,并可根据如下说明使用:
BFD(未修改),由 Steinegger M. 和 Söding J. 提供,采用 知识共享署名-相同方式共享 4.0 国际许可协议。
BFD(已修改),由 Steinegger M. 和 Söding J. 提供,经 DeepMind 修改后发布,采用 知识共享署名-相同方式共享 4.0 国际许可协议。 详情请参阅 AlphaFold 蛋白质组论文 的方法部分。
Uniref30: v2021_03 (未修改),由 Mirdita M. 等人提供,采用 知识共享署名-相同方式共享 4.0 国际许可协议。
MGnify: v2022_05 (未修改),由 Mitchell AL 等人提供,不受任何版权限制,完全免费向公众开放,可用于非商业及商业用途,采用 CC0 1.0 协议(即放弃所有权利的公共领域奉献)。
版本历史
v2.3.22023/04/05v2.3.12023/01/12v2.3.02022/12/13v2.2.42022/09/21v2.2.32022/08/25v2.2.22022/06/13v2.2.12022/06/13v2.2.02022/03/10v2.1.22022/01/28v2.1.12021/11/05v2.1.02021/11/02v2.0.12021/09/30v2.0.02021/07/16常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。
scikit-learn
scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最
keras
Keras 是一个专为人类设计的深度学习框架,旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。 无论是刚入门的学生、专注算法的研究人员,还是需要快速落地产品的工程师,都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。 Keras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码,即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性,还允许开发者根据需求自由选择:利用 JAX 或 PyTorch 的即时执行模式进行高效调试,或切换至速度最快的后端以获得最高 350% 的性能提升。此外,Keras 具备强大的扩展能力,能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群,是连接原型开发与生产部署的理想桥梁。