☰
标注CIF入门指南:RFD4-Proteína中固定靶标与设计区域的全部16个标注字段写法清单
2026/11/3 19:17:57 网站建设 项目流程

标注CIF入门指南:RFD4-Proteína中固定靶标与设计区域的全部16个标注字段写法清单

【免费下载链接】RFD4-Proteina项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/RFD4-Proteina

RFD4-Proteína 是 Baker Lab 与 NVIDIA GenAIR 联合发布的生物分子设计模型,能同时生成蛋白质序列与全原子结构。在运行生成之前,你需要用一个Annotated CIF(标注 CIF)告诉模型:哪些原子坐标要作为靶标固定下来、哪些区域交给模型重新设计。本文用仓库自带的 4 个真实示例,逐一讲清"固定靶标"与"设计区域"的全部 16 个标注字段写法。

1. 什么是标注 CIF?为什么设计前必须"标注"

RFD4-Proteína 是一种 flow-matching 模型,它并不凭空设计,而是以"你想保留的分子环境"为条件进行生成:结合靶标、酶活性基序、小分子配体,或选定的结构特征。

README 中有一句关键提示:an ordinary, unannotated structure is not a complete design specification——一个普通的、没有标注的结构并不是完整的设计说明书。模型必须从文件里读出以下信息:

  • 🎯 哪些原子的坐标已经固定(靶标蛋白、配体、金属离子);
  • 🔒 哪些残基的序列不允许改动;
  • ✂️ 哪一段是设计区域(起始/结束残基号、长度);
  • ⚡ 特殊约束:热点残基、氢键、坐标分组等。

这些信息就以若干"额外列"的形式写在 CIF 的_atom_site循环里,再配合少量辅助记录。这套"CIF + 标注列"就是Annotated CIF。

标注列按前缀分成三族,先看总览:

前缀字段数一句话作用
annotation_*3 个"值型"标注:区段起止残基号、原始组件参照
mask_*5 个"开关型"标注:True/False 决定哪些部位被固定
condition_*(含 1 个坐标循环)8 个"约束型"标注:序列、热点、坐标组、氢键等

再加上 1 个设计区域元数据_rfd_design.sampled_contig,合计16 个字段。

2. 16 个标注字段完整清单(总表)

以下清单全部来自本仓库examples/下 4 个示例输入文件的实际列头,可对照原文核对。

#字段粒度作用(依据示例判断)出现在
1_atom_site.annotation_expsegmin_1_residue残基标注区段起始残基号(如50、180,无则-1)binder / enzyme / monomer
2_atom_site.annotation_expsegmax_1_residue残基标注区段结束残基号(如120、100)同上
3_atom_site.mask_coordinate_1_atom原子True=坐标固定为输入条件,False=由模型自由生成全部示例
4_atom_site.mask_sequence_1_residue残基True=残基身份(序列)固定,False=可重新设计全部示例
5_atom_site.mask_expsegmin_1_residue残基True标记"设计区段起点"原子binder / enzyme / monomer
6_atom_site.mask_expsegmax_1_residue残基True标记"设计区段终点"原子同上
7_atom_site.mask_hotspot_1_atom原子标记热点残基(界面关键位点),示例中为Falsebinder
8_atom_site.mask_index_1_residue残基索引掩码,标记参与索引的残基enzyme / monomer
9_atom_site.annotation_src-component_1_atom原子指回"原始组件"名称(如A250、ORO、ZN),输出时会写回enzyme / monomer
10_atom_site.condition_hbond_1_atom原子氢键约束数值(示例中配体为1、金属为2、普通为0)enzyme / monomer
11_atom_site.condition_index-group_1_tokentoken索引组编号enzyme / monomer
12_atom_site.condition_sequence_1_residue残基直接写残基三字母码(如ASP)做序列条件antibody
13_atom_site.condition_hotspot_1_atom原子热点开关,示例中为Falseantibody
14_atom_site.condition_CoordinateGroup_1_atom原子坐标分组编号(0/1/2),同组原子共享同一固定坐标条件antibody
15_condition_coordinate_1_atom.idx0/val0/val1/val2循环固定坐标清单:idx0是原子索引,val0~val2是 x/y/z(与原子顺序一一对应)antibody
16_rfd_design.sampled_contig设计区声明设计区域的 token 名(如100-100、180-180)enzyme / monomer

💡 记忆口诀:mask 管"锁没锁",annotation 管"锁在哪段",condition 管"附加约束"。

3. 固定靶标的写法:两个开关mask_coordinate+mask_sequence

以 PD-L1 结合蛋白示例 examples/protein_binder/input.cif 为例,文件里有两条链:

  • 链 A(靶标,PD-L1 片段,残基 17–130):所有原子mask_coordinate_1_atom=True且mask_sequence_1_residue=True——坐标和序列双双锁定,作为固定背景。
  • 链 B(设计区域):只有一个占位残基50-120,写法如下(第 1521 行):
HETATM X UNK . 50-120 B 2 1 . 1 50-120 B UNK 924 nan 0.0 ? 120 50 False True True False False 924 nan nan nan 1

对照列头(input.cif#L585-L591):annotation_expsegmax=120、annotation_expsegmin=50、mask_coordinate=False、mask_expsegmin=True、mask_expsegmax=True、mask_sequence=False——含义是"设计第 50~120 号共 71 个残基,序列由模型决定,坐标也重新生成"。

固定靶标的核心就两条:把靶标原子写成mask_coordinate_1_atom=True+mask_sequence_1_residue=True,其余标注列保持False/-1。

4. 设计区域的写法:占位组件三步法

最简样例是纯长度规格 examples/monomer.cif——没有任何输入坐标,只表达"请设计 100 个残基"。写法四步:

  1. 定义占位组件:在_chem_comp中声明100-100,类型为NON-POLYMER(monomer.cif#L26-L32);
  2. 挂到链上:_entity_poly_seq中写一个残基100-100,_entity_poly的序列一字母代码写成X;
  3. 原子行占位:_atom_site写一条HETATM,type_symbol=X、坐标nan、occupancy0.0,并标注annotation_expsegmin/max=100、mask_expsegmin/max=True(monomer.cif#L50-L58);
  4. 声明设计 token:文件尾部加一行_rfd_design.sampled_contig 100-100(monomer.cif#L67)。

酶基序支架示例 examples/enzyme_design/input.cif 更进一步:同一条链上既有固定的活性基序(一个 ASP 残基 + 配体 ORO + 金属 ZN,mask_coordinate/mask_sequence=True,并用annotation_src-component指回A250/ORO/ZN),又有设计 token180-180(input.cif#L116-L132)。它的配体/金属原子还带condition_hbond_1_atom约束值(1/2),用于表达氢键相关条件。

抗体示例 examples/antibody_design/input.cif 则展示了condition 风格:序列条件直接写在_atom_site.condition_sequence_1_residue列(每行一个残基名,如ASP),固定坐标另起一个_condition_coordinate_1_atom循环按原子顺序列出 x/y/z(input.cif#L756-L758、#L5009-L5012),并用condition_CoordinateGroup_1_atom把原子划入 0/1/2 三个坐标组。

5. 跑一次设计:input.cif 到 design.cif 一条命令

标注好输入后,用原生 CLI 一行启动(权重指向本仓库):

rfd4-generate inputs=examples/protein_binder/input.cif \ hf_ckpt_path=nvidia/RFD4-Proteina \ num_replicates=1 out_dir=./runs/pdl1 '~metrics' compile_lengths=null

生成的 CIF 会在runs/pdl1/inference_samples/下。可对照的官方输出样例:

设计目标输入示例输出
蛋白-蛋白结合体(固定靶标)input.cifdesign.cif
酶基序支架input.cifdesign.cif
抗体设计(condition 风格)input.cifdesign.cif
纯长度单体(100 残基)monomer.cif—

6. 输出 design.cif 里多出来的标注列怎么看

输出文件本身也是标注 CIF。除了坐标,模型会写回这些列(以 protein_binder/design.cif#L690-L740 为例):

  • condition_sequence-probability-ALA_1_residue… 等24 列:20 种氨基酸 + A/C/G/U、DA/DC/DG/DT 4 种核苷酸的序列概率,方便你直接读出生成的序列偏好;
  • annotation_src-component_1_atom/annotation_src-index-group_1_atom/annotation_src-coordinate-conditioned-region_1_atom:写回设计残基的"来源参照"(原始组件、索引组、坐标条件区域);
  • condition_sequence_1_residue、condition_hotspot_1_atom、condition_CoordinateGroup_1_atom:与输入同名的条件列。

7. 新手避坑速查 ⚠️

疑问解答
直接把没标注的 CIF 丢进去可以吗?不能当作完整设计说明书——模型不知道哪里该动、哪里该留,务必补齐 mask/annotation 列
mask_expsegmin/max=True只该出现在哪里?只出现在设计区段的起点/终点原子行上(配合annotation_expsegmin/max的残基号),其余行保持False
靶标为什么要两列都写True?mask_coordinate锁坐标、mask_sequence锁身份,只锁坐标不锁序列时模型可能改动残基类型
设计区域为什么用X/nan占位?设计区没有真实原子,用HETATM X UNK+ 坐标nan占位,长度由annotation_expsegmin/max决定
想复现权重版本怎么办?见 release-checkpoints.json 中的配对身份与 SHA-256;推理参数默认值在 inference.yaml(如hf_ckpt_path、num_replicates)

8. 相关文件清单

  • README.md:项目总览、权重说明与快速开始
  • examples/protein_binder/input.cif:固定靶标 + 71 残基设计区(mask/annotation 风格)
  • examples/enzyme_design/input.cif:固定酶基序 + 设计 token(含 hbond 约束)
  • examples/antibody_design/input.cif:condition 风格序列/坐标条件
  • examples/monomer.cif:最小设计区域规格(100 残基,无坐标)
  • inference.yaml:生成默认配置

【免费下载链接】RFD4-Proteina项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/RFD4-Proteina

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

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

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

立即咨询