标注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 | 原子 | 标记热点残基(界面关键位点),示例中为False | binder |
| 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_token | token | 索引组编号 | enzyme / monomer |
| 12 | _atom_site.condition_sequence_1_residue | 残基 | 直接写残基三字母码(如ASP)做序列条件 | antibody |
| 13 | _atom_site.condition_hotspot_1_atom | 原子 | 热点开关,示例中为False | antibody |
| 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 个残基"。写法四步:
- 定义占位组件:在
_chem_comp中声明100-100,类型为NON-POLYMER(monomer.cif#L26-L32); - 挂到链上:
_entity_poly_seq中写一个残基100-100,_entity_poly的序列一字母代码写成X; - 原子行占位:
_atom_site写一条HETATM,type_symbol=X、坐标nan、occupancy0.0,并标注annotation_expsegmin/max=100、mask_expsegmin/max=True(monomer.cif#L50-L58); - 声明设计 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.cif | design.cif |
| 酶基序支架 | input.cif | design.cif |
| 抗体设计(condition 风格) | input.cif | design.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),仅供参考