Skip to main content

AlphaFold3

AlphaFold3 是由谷歌 DeepMind 和 Isomorphic Labs 团队开发的人工智能程序,于2024年11月开源供学术用途,它能准确预测蛋白质、DNA、RNA 等多种生物分子及其复合体的结构和相互作用,预测精度较 AlphaFold2 大幅提升,在药物研发等领域应用广泛。其架构引入 Pairformer 和扩散模块,采用跨蒸馏技术训练,减少了多重序列比对处理量,提高了计算效率和泛化能力,为生命科学研究提供了更强大的工具。

注意事项:

  • 运行AlphaFold3 作业需要选择单卡的GPU机型,多卡GPU没有加速效果。
  • 对于序列长度1000以下的序列,建议选择北极鲸(L20)机型,1000以上的序列选择长须鲸(H20)机型。
  • 对于长度过长、结构过于复杂的序列,受限于实际选择的GPU显卡性能和Alphafold3程序问题,不保证一定能输出正常的计算结果。
  • 与 AlphaFold2不同, AlphaFold3 输入文件需要修改成json 格式。

单个蛋白输入文件示例:

{
"name": "2pv7",
"sequences": [
{
"protein": {
"id": ["A", "B"],
"sequence": "GMRESYANENQFGFKTINSDIHKIVIVGGYGKLGGLFARYLRASGYPISILDREDWAVAESILANADVVIVSVPINLTLETIERLKPYLTENMLLADLTSVKREPLAKMLEVHTGAVLGLHPMFGADIASMAKQVVVRCDGRFPERYEWLLEQIQIWGAKIYQTNATEHDHNMTYIQALRHFSTFANGLHLSKQPINLANLLALSSPIYRLELAMIGRLFAQDAELYADIIMDKSENLAVIETLKQTYDEALTFFENNDRQGFIDAFHKVRDWFGDYSEQFLKESRQLLQQANDLKQG"
}
}
],
"modelSeeds": [1],
"dialect": "alphafold3",
"version": 1
}

单个蛋白输入文件字段解析

顶层结构

  • 描述: 包含与蛋白质序列和相关参数的建模任务相关的所有信息。
  • 含义: 每个输入文件对应一个蛋白质或蛋白质复合物的建模任务,包含了蛋白质的序列、种子信息、模板、修改、外部 MSA 数据等。

name

  • 类型: 字符串
  • 示例值: "2PV7"
  • 含义: 蛋白质或任务的名称/标识符。
  • 用途: 用于唯一标识此建模任务,可以是具体的蛋白质名称、编号或任意标识符。

sequences

  • 类型: 数组
  • 示例值:
"sequences": [
{
"protein": {
"id": ["A", "B"],
"sequence": "GMRESYANENQFGFKTINSDIHKIVIVGGYGKLGGLFARYLRASGYPISILDREDWAVAESILANADVVIVSVPINLTLETIERLKPYLTENMLLADLTSVKREPLAKMLEVHTGAVLGLHPMFGADIASMAKQVVVRCDGRFPERYEWLLEQIQIWGAKIYQTNATEHDHNMTYIQALRHFSTFANGLHLSKQPINLANLLALSSPIYRLELAMIGRLFAQDAELYADIIMDKSENLAVIETLKQTYDEALTFFENNDRQGFIDAFHKVRDWFGDYSEQFLKESRQLLQQANDLKQG"
}
}
]
  • 含义: 每个蛋白质的序列信息。每个蛋白体序列用一个对象表示,其中包括:
    • id: 蛋白质链的标识符(如 "A" 或 "B")。
    • sequence: 蛋白质链的氨基酸序列。

modelSeeds

  • 类型: 数组(整数)
  • 示例值: [1]
  • 含义: 用于建模的种子数据,用来控制模型的初始化。这里为 [1] 表示使用种子为 1 的模型。
  • 用途: 提供多个随机种子值时,模型将基于这些种子生成多个可能的结构,以增加结果的可靠性或多样性。

dialect

  • 类型: 字符串
  • 示例值: "alphafold3"
  • 含义: 指定输入文件的格式或方言。
  • 用途: 确保模型理解并正确解析输入文件。在这个例子中,使用了 alphafold3 格式。

version

  • 类型:整数
  • 示例值:1
  • 含义:表示输入文件的版本号,可以是1或2,1 是初始 AlphaFold 3 输入格式,2 是通过 unpairedMsaPath 字段 和 pairedMsaPath 字段自定义指定外部的 MSA 文件,还有mmcifPath 字段来指定外部自定义模板文件路径。

多聚体蛋白输入文件示例:

{
"name": "2PV7",
"sequences": [
{
"protein": {
"id": "A",
"sequence": "WNYLSEKRPNEPVHKHDQKAIITREWCPIFKSCLGFWIQGQGSKVLIYTFTIGSALKICYSAQHNNKNNANCGQSIAAEQNKMRFGLQTADRIIPTLYFEVQKPNEREQSCESLAFIYHFCVCPQGHAKKIHFHHMMNHGHTCWLALIHWLYWSSHTFRVQMFYWRPHVCNAQQCSDSSSPFLRRDTKMRQINYNMCYTFWYYDKCHEWMAWCTTHNPSYQVKCQQMYAAGHCWPPIELFFPGASQKEEPGHCCYYTLNAVVMKWQLETLDAMFGAQQLCVRSWASGFGPYEYFQDHPSRNYPKVHMLCIEANHKDRMADMDAEKKAKREIDGLSWEVMPREFHAGFWPRFFNVLHSEIWHSIWPELNRRRWLAKPWKECNFQWPWRDGKFWRQSFTWKKFIFWMCVDLVREFPMNERKSHHFAAVGRLPQRTYTAMLLPHWFNMHFCNTWPQFWDTWGESYKDFWFTKKPSVSRGDSYRISHTVPYFYIEFNKVFSDKM"
}
},
{
"protein": {
"id": "B",
"sequence": "SHHTPYQMHLFRSLAIYTHNYEHKDEIFEITVIAWLENIWGCRWLLFTMWMAHRISVAPPLRNGIYSHWPCHWEAGNPRLYRKIVQGEVIQPWHIHCCYPGDDINPGQCAMNDQAWMLFKWWPHVQAAVFKLSGYQEQNKQMGWSDHKPEWAQKRFFDYFRRHKTLGSPCIDVFIHQCNWVYYNAHHTWNLCISPYFYFPAMYFCDELMIHLVMVADFSNTNSAQLRHATIKSNKCKANHSNFIWITINVGMFKGWWIFCCRMVFKYGPNWNYLHHRMHVVAAVSSQDRMVCIMMNAFGRHRSDYRLSWAPDQVDGSGAWAEQEQTKCEGKMARWVRGTVIGANVAWCGPVYIYPDYECFAFAWWQGVEMRMYIIPKNVHMHQIVWFAPALACRMVCKCTPYQKHTAWDKYNHVHPIHYPYDRFIFTLFQPLSDCTFPSSAMSMWPRKPQDPMLIFMEMRMHTCDAQWCYNVREARIWDVVYGRPSHTEININMGVWKIE"
}
}
],
"modelSeeds": [1,2],
"dialect": "alphafold3",
"version": 1
}

多聚体蛋白输入文件字段解析

顶层结构

  • 描述: 包含与蛋白质序列和相关参数的建模任务相关的所有信息。
  • 含义: 每个输入文件对应一个蛋白质或蛋白质复合物的建模任务,包含了蛋白质的序列、种子信息、模板、修改、外部 MSA 数据等。

name

  • 类型: 字符串
  • 示例值: "2PV7"
  • 含义: 蛋白质或任务的名称/标识符。
  • 用途: 用于唯一标识此建模任务,可以是具体的蛋白质名称、编号或任意标识符。

sequences

  • 类型: 数组
  • 示例值:
"sequences": [
{
"protein": {
"id": "A",
"sequence": "WNYLSEKRPNEPVHKHDQKAIITREWCPIFKSCLGFWIQGQGSKVLIYTFTIGSALKICYSAQHNNKNNANCGQSIAAEQNKMRFGLQTADRIIPTLYFEVQKPNEREQSCESLAFIYHFCVCPQGHAKKIHFHHMMNHGHTCWLALIHWLYWSSHTFRVQMFYWRPHVCNAQQCSDSSSPFLRRDTKMRQINYNMCYTFWYYDKCHEWMAWCTTHNPSYQVKCQQMYAAGHCWPPIELFFPGASQKEEPGHCCYYTLNAVVMKWQLETLDAMFGAQQLCVRSWASGFGPYEYFQDHPSRNYPKVHMLCIEANHKDRMADMDAEKKAKREIDGLSWEVMPREFHAGFWPRFFNVLHSEIWHSIWPELNRRRWLAKPWKECNFQWPWRDGKFWRQSFTWKKFIFWMCVDLVREFPMNERKSHHFAAVGRLPQRTYTAMLLPHWFNMHFCNTWPQFWDTWGESYKDFWFTKKPSVSRGDSYRISHTVPYFYIEFNKVFSDKM"
}
},
{
"protein": {
"id": "B",
"sequence": "SHHTPYQMHLFRSLAIYTHNYEHKDEIFEITVIAWLENIWGCRWLLFTMWMAHRISVAPPLRNGIYSHWPCHWEAGNPRLYRKIVQGEVIQPWHIHCCYPGDDINPGQCAMNDQAWMLFKWWPHVQAAVFKLSGYQEQNKQMGWSDHKPEWAQKRFFDYFRRHKTLGSPCIDVFIHQCNWVYYNAHHTWNLCISPYFYFPAMYFCDELMIHLVMVADFSNTNSAQLRHATIKSNKCKANHSNFIWITINVGMFKGWWIFCCRMVFKYGPNWNYLHHRMHVVAAVSSQDRMVCIMMNAFGRHRSDYRLSWAPDQVDGSGAWAEQEQTKCEGKMARWVRGTVIGANVAWCGPVYIYPDYECFAFAWWQGVEMRMYIIPKNVHMHQIVWFAPALACRMVCKCTPYQKHTAWDKYNHVHPIHYPYDRFIFTLFQPLSDCTFPSSAMSMWPRKPQDPMLIFMEMRMHTCDAQWCYNVREARIWDVVYGRPSHTEININMGVWKIE"
}
}
]
  • 含义: 每个蛋白质的序列信息。每个蛋白体序列用一个对象表示,其中包括:
    • id: 蛋白质链的标识符(如 "A" 或 "B")。
    • sequence: 蛋白质链的氨基酸序列。

modelSeeds

  • 类型: 数组(整数)
  • 示例值: [1, 2]
  • 含义: 指定随机种子,以便模型生成多个预测结果。
  • 用途: 提供多个随机种子值时,模型将基于这些种子生成多个可能的结构,以增加结果的可靠性或多样性。

dialect

  • 类型: 字符串
  • 示例值: "alphafold3"
  • 含义: 指定输入文件的格式或方言。
  • 用途: 确保模型理解并正确解析输入文件。在这个例子中,使用了 alphafold3 格式。

version

  • 类型:整数
  • 示例值:1
  • 含义:表示输入文件的版本号,可以是1或2,1 是初始 AlphaFold 3 输入格式,2 是通过 unpairedMsaPath 字段 和 pairedMsaPath 字段自定义指定外部的 MSA 文件,还有mmcifPath 字段来指定外部自定义模板文件路径。

RNA输入文件示例:

{
"name": "rna",
"sequences": [
{
"rna": {
"id": ["A"],
"sequence": "AGCU",
"modifications": [
{"modificationType": "2MG","basePosition": 1},
{"modificationType": "5MC","basePosition": 4}
]
}
}
],
"modelSeeds": [1],
"dialect": "alphafold3",
"version": 1
}

RNA 输入文件字段解析

顶层字段:rna

  • 类型:对象
  • 用途:指定单个 RNA 链的相关信息,包括序列、修饰、以及多序列比对(MSA)的内容。

内部字段解析:

id

  • 类型strlist[str]
  • 示例值"A"["A", "B", "C"]
  • 含义:RNA 链的唯一标识符。
    • 如果是字符串,表示单个 RNA 链的 ID。
    • 如果是字符串列表,表示多个相同 RNA 链(同源链)的拷贝。
  • 用途:在输出的 mmCIF 文件中使用该 ID 作为标识。

sequence

  • 类型str
  • 示例值"AGCU"
  • 含义:RNA 链的核苷酸序列。
    • 使用 ACGU 表示序列中的碱基。
  • 用途:定义 RNA 链的主要结构信息。

modifications

  • 类型list[RnaModification](可选)
  • 示例值
[
{"modificationType": "2MG", "basePosition": 1},
{"modificationType": "5MC", "basePosition": 4}
]
  • 含义:RNA 链上的修饰信息。
    • modificationType:修饰类型,使用 CCD 代码(化学组件字典代码)表示。
    • basePosition:修饰所在碱基的位置,1 为基准的索引。
  • 用途:描述 RNA 链中碱基的化学修饰,影响功能或结构。

unpairedMsa

  • 类型str(可选)
  • 示例值:A3M 格式的多序列比对内容。
  • 含义:该链的可选多序列比对(MSA)信息,内联提供。
  • 用途:为链提供多序列比对的背景信息以支持建模。

unpairedMsaPath

  • 类型str(可选)
  • 示例值"/path/to/msa.a3m"
  • 含义:多序列比对文件的路径。
  • 路径可以是绝对路径或相对于输入 JSON 文件的相对路径。
  • 文件必须为 A3M 格式,可以是纯文本或压缩格式(gzip、xz、zstd)。
  • 用途:与 unpairedMsa 互斥,用于外部文件提供 MSA 数据。

modelSeeds

  • 类型: 数组(整数)
  • 示例值: [1, 2]
  • 含义: 指定随机种子,以便模型生成多个预测结果。
  • 用途: 提供多个随机种子值时,模型将基于这些种子生成多个可能的结构,以增加结果的可靠性或多样性。

dialect

  • 类型: 字符串
  • 示例值: "alphafold3"
  • 含义: 指定输入文件的格式或方言。
  • 用途: 确保模型理解并正确解析输入文件。在这个例子中,使用了 alphafold3 格式。

version

  • 类型:整数
  • 示例值:1
  • 含义:表示输入文件的版本号,可以是1或2,1 是初始 AlphaFold 3 输入格式,2 是通过 unpairedMsaPath 字段 和 pairedMsaPath 字段自定义指定外部的 MSA 文件,还有mmcifPath 字段来指定外部自定义模板文件路径。

DNA输入文件示例:

{
"name": "dna",
"sequences": [
{
"dna": {
"id": ["A"],
"sequence": "GACCTCT",
"modifications": [
{"modificationType": "6OG","basePosition": 1},
{"modificationType": "6MA","basePosition": 2}
]
}
}
],
"modelSeeds": [1],
"dialect": "alphafold3",
"version": 1
}

DNA 输入文件字段解析

顶层字段:dna

  • 类型:对象
  • 用途:描述 DNA 链的相关信息,包括其 ID、序列以及可选的修饰。

内部字段

  • id

    • 类型:字符串或字符串数组 (str | list[str])
    • 示例值"A"["A", "B", "C"]
    • 含义
      • 唯一标识 DNA 链的标识符。
      • 当指定为单个字符串(如 "A")时,表示只有一个 DNA 链。
      • 当指定为一个字符串数组(如 ["A", "B", "C"])时,表示同构链的多个拷贝。
    • 用途:在输出文件(如 mmCIF 文件)中也会使用这些 ID。
  • sequence

    • 类型:字符串
    • 示例值"GACCTCT"
    • 含义:DNA 的序列,由碱基的单字母代码表示,包括 A(腺嘌呤)、C(胞嘧啶)、G(鸟嘌呤)和 T(胸腺嘧啶)。
    • 用途:用于建模的基础数据,定义 DNA 链的化学结构。
  • modifications

    • 类型:列表 (list[DnaModification])
    • 示例值
      [
      {"modificationType": "6OG", "basePosition": 1},
      {"modificationType": "6MA", "basePosition": 2}
      ]
    • 含义:描述 DNA 链中碱基的化学修饰。
      • modificationType:字符串,表示修饰类型,通常用 CCD 代码标识(例如,"6OG" 表示氧化鸟嘌呤,"6MA" 表示甲基腺嘌呤)。
      • basePosition:整数,表示修饰位置,基于 1 的索引。
    • 用途
      • 定义 DNA 链中特定位置的化学修饰。
      • 在模拟中用来考虑 DNA 的非标准化学性质。

modelSeeds

  • 类型: 数组(整数)
  • 示例值: [1, 2]
  • 含义: 指定随机种子,以便模型生成多个预测结果。
  • 用途: 提供多个随机种子值时,模型将基于这些种子生成多个可能的结构,以增加结果的可靠性或多样性。

dialect

  • 类型: 字符串
  • 示例值: "alphafold3"
  • 含义: 指定输入文件的格式或方言。
  • 用途: 确保模型理解并正确解析输入文件。在这个例子中,使用了 alphafold3 格式。

version

  • 类型:整数
  • 示例值:1
  • 含义:表示输入文件的版本号,可以是1或2,1 是初始 AlphaFold 3 输入格式,2 是通过 unpairedMsaPath 字段 和 pairedMsaPath 字段自定义指定外部的 MSA 文件,还有mmcifPath 字段来指定外部自定义模板文件路径。

一. 命令行提交

通过SSH连接创建并连接管理节点

Step 1. 创建工作目录并进入,也同时创建input 目录,在 input 目录中放置输入 JSON 文件,自定义输入 JSON 文件可参考官方文档 https://github.com/google-deepmind/alphafold3/blob/main/docs/input.md;

mkdir $HOME/alphafold3Job1/input
cd $HOME/alphafold3Job1

Step 2. 通过文件传输上传所需的输入文件fold_input.json,详情请查看Linux数据传输

Step 3. 在该文件夹下创建如下执行脚本alphafold3.sh

run_alphafold.py 可以通过以下两种方式之一提供输入:

  • 单个输入文件:使用 --json_path 标志后跟单个 JSON 文件的路径。
  • 多个输入文件:使用 --input_dir 标志,后跟 JSON 文件目录的路径。
#!/bin/bash
export PROGRAM=/public/software/.local/easybuild/software/alphafold

# 创建输出目录和添加权限
mkdir -p $HOME/alphafold3Job1/output
chmod -R 777 $HOME/alphafold3Job1/output

cd $PROGRAM/alphafold3 && docker load < alphafold.tar

docker run -i --privileged \
--volume $HOME/alphafold3Job1/input:/tmp/af_input \
--volume $HOME/alphafold3Job1/output:/tmp/af_output \
--volume $PROGRAM/alphafold3-models:/root/models \
--volume $PROGRAM/alphafold3-databases/v3.0:/root/public_databases \
--gpus all \
alphafold3 \
python run_alphafold.py \
--jackhmmer_n_cpu=24 \ # 用于指定运行 Jackhmmer 工具搜索序列数据库使用的 CPU 核心数,比如g-l20-1机型配置的是16核心,这里填写16,比如g-h20-1机型单卡机型配置的是24核则填写24
--nhmmer_n_cpu=24 \ # 用于指定运行 Nhmmer 工具搜索RNA序列数据库使用的 CPU 核心数,比如g-l20-1机型配置的是16核心,这里填写16,比如g-h20-1机型单卡机型配置的是24核则填写24
--flash_attention_implementation=xla \
--json_path=/tmp/af_input/proteins_custom_format.json \ # 输入文件名称,需要修改成自己的输入文件名称,路径无需更改,如果是JSON 文件目录的路径,更改成 --input_dir 参数
--model_dir=/root/models \
--output_dir=/tmp/af_output

Step 4. 提交作业;

提交任务到带有一张L20卡的GPU节点运行。

sbatch -p g-l20-1 -c 16  alphafold3.sh

查看作业运行情况及参数详细介绍请点击查看slurm命令

结果文件下载请查看Linux数据传输

二. 结果文件介绍

正常的计算结果应包含有以下文件结构:

下面是一个名为“2pv7”的 AlphaFold 3 输出目录列表示例,该作业已使用 2 个种子和 2 个样本运行

output/2pv7
├── 2pv7_confidences.json
├── 2pv7_data.json
├── 2pv7_model.cif
├── 2pv7_summary_confidences.json
├── ranking_scores.csv
├── seed-1_sample-0
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-1_sample-1
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-1_sample-2
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-1_sample-3
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-1_sample-4
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-2_sample-0
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-2_sample-1
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-2_sample-2
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-2_sample-3
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
├── seed-2_sample-4
│   ├── confidences.json
│   ├── model.cif
│   └── summary_confidences.json
└── TERMS_OF_USE.md

三. 置信度指标

与 AlphaFold2 和 AlphaFold-Multimer 类似,AlphaFold 3 输出包括置信度指标。

  • pLDDT:

    • 0-100 范围内的每个原子置信度估计,值越高表示置信度越高。
    • pLDDT 旨在预测仅考虑聚合物距离的改进的 LDDT 分数。
    • 对于蛋白质,这类似于 lDDT-Cα 度量,但粒度更大,因为它可以因原子而异,而不仅仅是因残基而异。
    • 对于配体原子,改进的 LDDT 仅考虑配体原子和聚合物之间的误差,而不考虑其他配体原子。
    • 对于 DNA/RNA,改进的 LDDT 使用更宽的半径 30 Å,而不是 15 Å。
  • PAE(预测对齐误差):

    • 预测结构中两个标记之间的相对位置和方向的误差估计值值越高表示预测误差越大,因此置信度越低。
    • 对于蛋白质和核酸,PAE 分数与 AlphaFold2 基本相同,其中误差是相对于由蛋白质骨架构建的框架来测量的。
    • 对于小分子和翻译后修饰,每个原子的框架都是从参考构象异构体的最近邻居构建的。
  • pTM 和 ipTM 分数:

    • 预测模板建模 (pTM) 分数和界面预测模板建模 (ipTM) 分数均来自称为模板建模 (TM) 分数的度量。
    • 这可衡量整个结构的准确性(Zhang and Skolnick, 2004; Xu and Zhang, 2010)。
    • pTM 分数高于 0.5 表示预测的复合物整体折叠可能与真实结构相似。
    • ipTM 可衡量复合物内亚基相对位置预测的准确性。
    • 高于 0.8 的值代表有信心的高质量预测,而低于 0.6 的值则表示预测失败。
    • 0.6 到 0.8 之间的 ipTM 值是灰色区域,
    • 预测可能正确也可能不正确。
    • TM 分数对于小结构或短链非常严格,因此当涉及的标记少于 20 个时,pTM 会分配小于 0.05 的值;对于这些情况,PAE 或 pLDDT 可能更能表明预测质量。

四. 使用PyMOL对结果进行图形化展示

Step 1. 应用中心搜索PyMOL;

Step 2. 点击提交作业,选择图形界面提交;

Step 3. 启动PyMOL,选择硬件配置并启动,通过VNC连接启动的linux工作站,使用软件;

Step 4. 点击File 找到结果文件输出路径,打开.cif结尾的文件,查看输出;

五. 使用在线工具PAE Viewer 展示结构图和矢量图

Step 1. 在浏览器中输入:https://subtiwiki.uni-goettingen.de/v4/paeViewerDemo

Step 2. 上传结果文件中2pv7_model.cif2pv7_confidences.json文件,点击upload按钮;

Step 3. 展示计算生成的结构图和矢量图。

结构 图SVG 图
结构 图矢量 图