# RFD4ProteinaTransformer

[RFD4-Proteína](../pipelines/rfd4_proteina) 的去噪器。它根据准备好的分子张量，预测采样器所集成的两种模态的速度——骨架 CA 坐标和逐 token 的局部潜变量。输入为命名字张量以及一个条件映射，其内容由检查点配置决定；结构解析不在此类中处理。

```py
from diffusers import RFD4ProteinaTransformer

transformer = RFD4ProteinaTransformer.from_pretrained(
    "nvidia/RFD4-Proteina-Diffusers", subfolder="transformer"
)
```

## RFD4ProteinaTransformer[[diffusers.RFD4ProteinaTransformer]]

#### diffusers.RFD4ProteinaTransformer[[diffusers.RFD4ProteinaTransformer]]

```python
diffusers.RFD4ProteinaTransformer(nlayers: int = 14, token_dim: int = 768, nheads: int = 12, dim_cond: int = 256, pair_repr_dim: int = 384, latent_dim: int = 32, token_type_emb_dim: int = 32, cath_emb_dim: int = 32, t_emb_dim: int = 256, seq_sep_dim: int = 64, xt_pair_dist_dim: int = 30, xt_pair_dist_min: float = 0.1, xt_pair_dist_max: float = 3.0, feats_seq: tuple[str, ...] = ('xt_bb_ca', 'xt_local_latents', 'token_type', 'sequence_probabilities', 'cond_a37coors_nm', 'cond_a37coors_internal_nm', 'rasa_binned', 'secondary_structure', 'hbond_modernized', 'pistack', 'pication', 'saltbridge', 'hydrophobic', 'metal_coord', 'na_ss_state', 'hotspot', 'atom_charge', 'atomic_element', 'coord_group_seq', 'chirality', 'chain_centroid_xyz'), feats_cond_seq: tuple[str, ...] = ('time_emb_bb_ca', 'time_emb_local_latents', 'cath_code', 'recycle_remaining'), feats_pair_repr: tuple[str, ...] = ('xt_bb_ca_pair_dists', 'bond_mask', 'bond_order', 'is_aromatic', 'index_group_pair', 'molecule_idx_pair', 'molecule_entity_pair', 'token_bond_path_length', 'canonical_polymer_ordering', 'na_ss_pair'), feats_pair_cond: tuple[str, ...] = ('time_emb_bb_ca', 'time_emb_local_latents'), update_pair_repr_every_n: int = 2, tri_mult_c: int = 256, num_sequence_classes: int = 147, num_token_types: int = 7, recycle_conditioning_dim: int = 1)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_rfd4_proteina.py#L906)

**参数：**

nlayers (`int`，默认为 `14`)：主干层数。

token_dim (`int`，默认为 `768`)：Token 表示的宽度。

nheads (`int`，默认为 `12`)：每层的注意力头数。

dim_cond (`int`，默认为 `256`)：条件向量（时间、回收索引、CATH 标签）的宽度。

pair_repr_dim (`int`，默认为 `384`)：成对表示的宽度。

latent_dim (`int`，默认为 `32`)：每个 token 的局部潜在表示的宽度。

token_type_emb_dim (`int`，默认为 `32`)：Token 类型嵌入的宽度。

cath_emb_dim (`int`，默认值为 `32`)：每个 CATH 类别/架构/拓扑嵌入的宽度。

t_emb_dim (`int`，默认为 `256`)：正弦时间嵌入的宽度。

seq_sep_dim (`int`，默认为 `64`)：键路径长度分箱的数量。

xt_pair_dist_dim (`int`，默认为 `30`)：主干网络中成对距离的 bin 数量。

xt_pair_dist_min (`float`，默认为 `0.1`)，xt_pair_dist_max (`float`，默认为 `3.0`)：纳米为单位的成对距离范围。

feats_seq, feats_cond_seq, feats_pair_repr, feats_pair_cond (`list[str]`) : 投影到 token、conditioning、pair 和 pair-conditioning 输入中的特征名称。

update_pair_repr_every_n (`int`，默认为 `2`)：在层与层之间，根据 token 更新成对表示的频率。

tri_mult_c (`int`，默认为 `256`)：在这些更新中，三角乘法（triangle multiplication）的隐藏宽度。

num_token_types (`int`，默认为 `7`)：token 类型词汇表的大小：蛋白质、RNA、DNA、原子化、未知、糖链和非标准氨基酸。

recycle_conditioning_dim (`int`，默认为 `1`)：当 `feats_cond_seq` 中包含该特征时，`recycle_remaining` 的 one-hot 宽度。

num_sequence_classes (`int`，默认为 `147`)：序列读出所预测的残基词汇表大小。

RFD4 速度去噪器，采用配对的骨干网络和本地潜在模态。

模型在其自身的 dtype 下运行：加载时使用 `dtype=torch.bfloat16` 进行低精度推理。传递给 `forward` 的采样状态保持为 float32；特征嵌入在 float32 下计算，并在输入投影处进行类型转换。

#### forward[[diffusers.RFD4ProteinaTransformer.forward]]

```python
forward(bb_ca: Tensor, local_latents: Tensor, bb_ca_time: Tensor, local_latents_time: Tensor, padding_mask: Tensor, token_type: typing.Optional[torch.Tensor] = None, atom37_mask: typing.Optional[torch.Tensor] = None, conditioning: dict[str, typing.Any] | None = None, recycle_depth: int = 0, attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_rfd4_proteina.py#L1062)

**参数：**

bb_ca (`torch.Tensor`) : 带噪声的 backbone 坐标，单位为纳米，形状为 `(batch, tokens, 3)`。

local_latents (`torch.Tensor`) : 带噪声的局部潜变量 `(batch, tokens, latent_dim)`。

bb_ca_time (`torch.Tensor`) : `(batch,)` 主干网络的时间，取值范围为 [0, 1]。

local_latents_time (`torch.Tensor`) : `(batch,)` 局部潜在时间，取值范围为 [0, 1]。

padding_mask (`torch.Tensor`) : `(batch, tokens)`，其中为 true 的位置表示该 token 是真实 token 而非填充。

token_type (`torch.Tensor`, *可选*) : `(batch, tokens)` 的 token 类型编码。

atom37_mask (`torch.Tensor`, *可选*) : `(batch, tokens, 37)`，原子槽位被使用时为 true。

conditioning (`dict[str, Any]`, *可选*) : 其余的拓扑和条件张量，位于预处理器输出的键下。哪些键会被读取由检查点的 `feats_seq`、`feats_cond_seq`、`feats_pair_repr` 和 `feats_pair_cond` 决定；如果某个已配置的特征请求的键不存在，则该特征将保持无条件状态，而不会引发错误。

recycle_depth (`int`，默认为 `0`)：主干遍历次数；即使为 0 也会执行一次遍历。

attention_kwargs (`dict`，*可选*)：仅读取 `scale`，作为本次调用的 LoRA 缩放系数。

return_dict (`bool`，默认为 `True`)：返回带类型的输出，或一个包含非 None 字段的元组。

**返回：** `RFD4ProteinaTransformerOutput` 或 `tuple`

在调度器集成之前，主干/局部潜在速度以及可选的序列/插入 logits。

从准备好的分子张量中预测速度，而不推进采样器。

## RFD4ProteinaTransformerOutput[[diffusers.models.transformers.transformer_rfd4_proteina.RFD4ProteinaTransformerOutput]]

#### diffusers.models.transformers.transformer_rfd4_proteina.RFD4ProteinaTransformerOutput[[diffusers.models.transformers.transformer_rfd4_proteina.RFD4ProteinaTransformerOutput]]

```python
diffusers.models.transformers.transformer_rfd4_proteina.RFD4ProteinaTransformerOutput(backbone: Tensor, local_latents: typing.Optional[torch.Tensor] = None, sequence_logits: typing.Optional[torch.Tensor] = None, insertion_logits: typing.Optional[torch.Tensor] = None)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_rfd4_proteina.py#L890)

**参数：**

backbone (`torch.Tensor`) : 形状为 `(batch, tokens, 3)` 的 Backbone 速度，单位为纳米每单位时间。

local_latents (`torch.Tensor`) : 形状为 `(batch, tokens, latent_dim)` 的潜在速度。

sequence_logits (`torch.Tensor`, *可选*) : 形状为 `(batch, tokens, 147)` 的残基 logits。

insertion_logits (`torch.Tensor`, *可选*) : 形状为 `(batch, tokens, tokens)` 的插入赋值 logits。

在调度器集成之前，去噪器的预测结果。

