AlphaFold Server 任务 JSON 文件格式详解:多任务批量建模请求的完整结构与字段规范
2026/9/14 12:52:04 网站建设 项目流程

AlphaFold Server 任务 JSON 文件格式详解:多任务批量建模请求的完整结构与字段规范

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

本篇技术指南以 AlphaFold 开源仓库中server/README.md为核心,系统讲解 AlphaFold Server 任务请求 JSON 文件的整体结构、name/modelSeeds/sequences三个顶层字段,以及proteinChaindnaSequencernaSequenceligandion五类实体(分子)的字段定义与允许取值,并逐节给出可直接复制的 JSON 示例。读完本文,你可以独立编写支持糖基化、翻译后修饰(PTM)、核酸化学修饰、配体与离子的多任务建模请求文件,并理解随机种子在本项目 JAX 推理链路中的实际作用。

1. 任务请求文件的总体结构:一个列表对应多个 Job

AlphaFold Server 的任务请求文件是一个JSON 列表——即使只提交一个任务,也必须使用单元素列表包裹。列表中每个元素是一个字典,对应一个独立的建模 Job:

[ { "name": "Test Fold Job Number One", "modelSeeds": [], "sequences": [ ... ] }, { "name": "Test Fold Job Number Two", "modelSeeds": [], "sequences": [ ... ] } ]

仓库中提供的完整示例文件 server/example.json 正是这一结构的实例:它包含两个 Job,第一个 Job 同时建模两条蛋白链、一对 DNA 双链(两条dnaSequence)、一条 RNA、两个配体和两种离子,第二个 Job 则是一个"一条蛋白链 + 一条 DNA"的简单组合。

每个 Job 字典包含三个键:

字段类型说明
namestring任务名,在 Server 的作业历史表中以此显示
modelSeedslist of uint32 字符串随机种子列表,例如["1593933729", "4273"]推荐留空[],由 Server 自动分配一个随机种子
sequenceslist of dict待建模实体(分子)列表,每个元素描述一个实体

两个关键特性值得注意:

  • 一个文件可指定多个 Job——这使得该格式天然适合自动化重复性建模任务(例如筛查一个蛋白与若干个候选分子的相互作用);
  • JSON 文件不允许写注释,编写自动化脚本生成请求文件时要避免在生成器中注入注释。

文档同时给出了一条实用建议:最简单的起步方式是通过 AlphaFold Server 的 Web GUI 提交一次任务,然后从结果 zip 包中取出<job_name>_job_request.json(其中保存了该任务的完整输入 JSON),用它作为模板在文本编辑器或 Colab 等编程环境中修改,比从零手写更可靠。

2. 随机种子(modelSeeds)在本项目推理链路中的真实含义

modelSeeds看起来只是 Server 服务端的输入参数,但从本仓库的源码结构看,它对应的是 JAX 推理管线中的随机数发生器(PRNG)种子,具有明确的复现语义:

  • 在本地推理入口 run_alphafold.py 中,若未显式指定--random_seed,系统会随机抽取一个种子:random_seed = random.randrange(sys.maxsize // len(model_runners));随后在 run_alphafold.py 按模型索引派生每个模型的种子:model_random_seed = model_index + random_seed * num_models
  • 种子最终在 alphafold/model/model.py 的RunModel.predict中消费:result = self.apply(self.params, jax.random.PRNGKey(random_seed), feat)。该方法的文档字符串特别指出:在 Multimer 模型中,随机种子控制 MSA 采样——这意味着固定种子可以在一定程度上复现同一输入下的采样行为。
  • 仓库还通过 alphafold/model/prng.py 中的SafeKey包装器管理 PRNG key 的使用(防止同一 key 被重复消费),说明种子在整个前向计算图中是被严格追踪的。

因此 Server 侧的modelSeeds语义与本地--random_seed一脉相承:提供多个种子即等价于运行多次独立采样。官方推荐做法是提交空列表[],让服务自动分配单个随机种子;只有在需要复现性验证或多采样比较时才显式指定 uint32 种子值。

3. 实体类型总览

sequences列表中每个元素的键名即实体类型,与 AlphaFold Server Web 界面支持的类型一一对应:

实体类型用途
proteinChain蛋白质链
dnaSequenceDNA(单链)
rnaSequenceRNA(单链)
ligand允许的配体
ion允许的离子

每类实体都带一个整数count字段,表示该分子的拷贝数。以下按类型逐一展开字段说明与示例(均继承自 server/README.md,并对照 server/example.json 校验过)。

3.1 蛋白质链(proteinChain)

  • sequence:蛋白序列字符串。约束与 Web UI 相同,只允许 IUPAC 定义的氨基酸字母,仅支持 20 种标准氨基酸
  • count:该链的拷贝数(整数);
  • glycans(可选):糖基化描述列表,每项包含:
    • residues:定义糖链的字符串(格式与允许的糖基类型可参考 Server FAQ);
    • position:糖链连接的氨基酸位置(整数,1-based 索引);
  • modifications(可选):翻译后修饰(PTM)描述列表,每项包含:
    • ptmType:修饰的CCD 码字符串(与 UI 允许的一致);
    • position:被修饰氨基酸的位置(整数)。

允许出现的蛋白 PTM CCD 码共 22 个:CCD_SEPCCD_TPOCCD_PTRCCD_NEPCCD_HIPCCD_ALYCCD_MLYCCD_M3LCCD_MLZCCD_2MRCCD_AGMCCD_MCSCCD_HYPCCD_HY3CCD_LYZCCD_AHBCCD_P1LCCD_SNNCCD_SNCCCD_TRFCCD_KCRCCD_CIRCCD_YHA

示例(与 server/example.json 中第一个 Job 的两条蛋白链一致):

{ "proteinChain": { "sequence": "PREACHINGS", "glycans": [ { "residues": "NAG(NAG)(BMA)", "position": 8 }, { "residues": "BMA", "position": 10 } ], "modifications": [ { "ptmType": "CCD_HY3", "ptmPosition": 1 }, { "ptmType": "CCD_P1L", "ptmPosition": 5 } ], "count": 1 } }, { "proteinChain": { "sequence": "REACHER", "count": 1 } }

注意glycansresidues使用括号表达分支结构(NAG(NAG)(BMA)表示一个 NAG 上挂有 NAG 与 BMA 两个分支),position是 1-based,编写脚本换算 0-based 索引时要小心。

3.2 DNA 链(dnaSequence)

dnaSequence类型指的是单链 DNA。若要建模双链 DNA,需要另外添加一条携带反向互补序列的dnaSequence——server/example.json 中GATTACATGTAATC两条链即构成一对互补双链。

  • sequence:DNA 序列字符串,只允许ATGC四个字母(与 UI 约束相同);
  • count:该 DNA 链的拷贝数(整数);
  • modifications(可选):DNA 化学修饰列表,每项包含:
    • modificationType:修饰的 CCD 码字符串;
    • basePosition:被修饰核苷酸的位置(整数)。

允许的 DNA 修饰 CCD 码共 9 个:CCD_5CMCCD_C34CCD_5HCCCD_6OGCCD_6MACCD_1CCCCD_8OGCCD_5FCCCD_3DR

示例:

{ "dnaSequence": { "sequence": "GATTACA", "modifications": [ { "modificationType": "CCD_6OG", "basePosition": 1 }, { "modificationType": "CCD_6MA", "basePosition": 2 } ], "count": 1 } }, { "dnaSequence": { "sequence": "TGTAATC", "count": 1 } }

3.3 RNA 链(rnaSequence)

  • sequence:RNA 序列(单链)字符串,只允许AUGC四个字母;
  • count:该 RNA 链的拷贝数(整数);
  • modifications(可选):RNA 化学修饰列表,字段结构与 DNA 相同(modificationType+basePosition)。

允许的 RNA 修饰 CCD 码共 14 个:CCD_PSUCCD_5MCCCD_OMCCCD_4OCCCD_5MUCCD_OMUCCD_UR3CCD_A2MCCD_MA6CCD_6MZCCD_2MGCCD_OMGCCD_7MGCCD_RSQ

示例:

{ "rnaSequence": { "sequence": "GUAC", "modifications": [ { "modificationType": "CCD_2MG", "basePosition": 1 }, { "modificationType": "CCD_5MC", "basePosition": 4 } ], "count": 1 } }

3.4 配体(ligand)

  • ligand:配体的CCD 码字符串(与 UI 允许的一致);
  • count:该配体的拷贝数(整数)。

允许的配体共 19 个:CCD_ADPCCD_ATPCCD_AMPCCD_GTPCCD_GDPCCD_FADCCD_NADCCD_NAPCCD_NDPCCD_HEMCCD_HECCCD_PLMCCD_OLACCD_MYRCCD_CITCCD_CLACCD_CHLCCD_BCLCCD_BCB

示例:

{ "ligand": { "ligand": "CCD_ATP", "count": 1 } }, { "ligand": { "ligand": "CCD_HEM", "count": 2 } }

3.5 离子(ion)

  • ion:离子的 CCD 码字符串(与 UI 允许的一致);离子电荷由 CCD 码隐含指定,无需单独写电荷字段;
  • count:该离子的拷贝数(整数)。

允许的离子共 10 个:MGZNCLCANAMNKFECUCO

示例:

{ "ion": { "ion": "MG", "count": 2 } }, { "ion": { "ion": "NA", "count": 3 } }

4. 多任务示例与本地推理的对照

文档末尾给出"一个蛋白链 + 两份回文 DNA 拷贝"的多任务示例,这里完整保留:

{ "name": "Test Fold Job Number Two", "modelSeeds": [], "sequences": [ { "proteinChain": { "sequence": "TEACHINGS", "count": 1 } }, { "dnaSequence": { "sequence": "TAGCTA", "count": 2 } } ] }

需要强调的是,这套 JSON 格式面向的是AlphaFold Server 托管服务,而非本仓库的本地推理流程。本仓库开源的本地运行入口是 FASTA 文件 + docker/run_docker.py 命令行参数(--fasta_paths--model_preset--db_preset等),多序列 FASTA 用于multimer预设下的复合物预测(参见 README.md 中 "Folding a heteromer" 一节)。两条路径的理念相通:

  • 本地多拷贝复合物通过在 FASTA 中重复序列条目实现,对应 Server JSON 中的count字段;
  • 本地--random_seed的缺省随机行为对应modelSeeds: []的自动种子分配(见第 2 节源码分析)。

因此,当你用 Server JSON 完成交互筛查后,需要把筛选出的候选迁移到本地开源管线做深度验证时,只需把 JSON 中的序列按实体类型转写为多序列 FASTA 即可,实体定义本身是等价的。

5. 编写请求文件的检查清单

结合 server/README.md 的约束与 server/example.json 的实例,生成请求文件前建议核对:

  1. 顶层是否为列表(即使只有一个 Job);
  2. 每个 Job 是否同时具备namemodelSeedssequences三个键,modelSeeds留空即采用推荐的可自动分配种子的模式;
  3. 蛋白序列是否只含 20 种标准氨基酸字母;核酸序列是否只含合法字母(DNA 为 ATGC,RNA 为 AUGC);
  4. 双链 DNA 是否同时提供了反向互补的第二条dnaSequence
  5. glycansposition是否为 1-based 且落在序列长度内;
  6. 所有ptmType/modificationType/ligand/ion取值是否落在本文列出的允许清单内;
  7. 文件中是否误写了 JSON 不支持的注释。

满足以上条件后,该 JSON 即可作为批量建模任务的请求文件提交给 AlphaFold Server,结果将以 zip 包形式返回,其中同样包含<job_name>_job_request.json作为下一次迭代的模板。

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询