# RFD4ProteinaAutoencoder

Автоэнкодер [RFD4-Proteína](../pipelines/rfd4_proteina). `encode` отображает координаты atom37 в локальные латенты для каждого токена, а `decode` преобразует латенты и позиции каркаса обратно в структуру atom37 и идентичности остатков. В конвейере он зарегистрирован как `vae`.

```py
from diffusers import RFD4ProteinaAutoencoder

vae = RFD4ProteinaAutoencoder.from_pretrained("nvidia/RFD4-Proteina-Diffusers", subfolder="vae")
```

## RFD4ProteinaAutoencoder[[diffusers.RFD4ProteinaAutoencoder]]

#### diffusers.RFD4ProteinaAutoencoder[[diffusers.RFD4ProteinaAutoencoder]]

```python
diffusers.RFD4ProteinaAutoencoder(atom37_mask: collections.abc.Sequence[collections.abc.Sequence[bool]], allowed_residue_types: collections.abc.Sequence[collections.abc.Sequence[bool]], latent_dim: int = 32, n_residue_types: int = 147, num_token_types: int = 7, nlayers: int = 12, token_dim: int = 768, nheads: int = 12, dim_cond: int = 128, pair_repr_dim: int = 256, token_type_emb_dim: int = 32, encoder_feats_seq: tuple[str, ...] = ('token_type', 'x1_a37coors_nm', 'x1_a37coors_nm_rel', 'chain_idx_seq', 'incident_bond_type_counts', 'atom37_element_charge_embedding'), decoder_feats_seq: tuple[str, ...] = ('ca_coors_nm', 'z_latent_seq', 'token_type', 'cond_residue_type'))
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L500)

**Параметры:**

latent_dim (`int`, по умолчанию `32`) : Ширина локального латентного представления для каждого токена.

n_residue_types (`int`, по умолчанию `147`) : Размер словаря остатков.

num_token_types (`int`, по умолчанию `7`) : Размер словаря типов токенов: белок, РНК, ДНК, атомизированный, неизвестный, гликан и неканоническая аминокислота.

allowed_residue_types (`list[list[bool]]`) : таблица `(num_token_types, n_residue_types)`, описывающая классы остатков, в которые может декодироваться каждый тип токена.

nlayers (`int`, по умолчанию `12`) : Количество слоёв в каждом из энкодера и декодера.

token_dim (`int`, по умолчанию `768`) : Ширина представления токена.

nheads (`int`, по умолчанию `12`) : Количество головок внимания на слой.

dim_cond (`int`, по умолчанию `128`) : Ширина вектора условий (не используется, нулевой).

pair_repr_dim (`int`, по умолчанию `256`) : Ширина пары, с которой конструируются слои ствола. В выпущенном автоэнкодере не используется смещение пары, поэтому этот параметр не содержит обучаемых весов.

token_type_emb_dim (`int`, по умолчанию `32`) : Ширина эмбеддинга типа токена.

encoder_feats_seq, decoder_feats_seq (`list[str]`) : Признаки, спроецированные во входные данные энкодера и декодера.

atom37_mask (`list[list[bool]]`) : Допустимые слоты atom37 для каждого типа остатка, с формой `(n_residue_types, 37)`.

Сопоставленный молекулярный энкодер и декодер atom37.

Координаты, передаваемые в эту модель и возвращаемые ею, указаны в нанометрах.

#### encode[[diffusers.RFD4ProteinaAutoencoder.encode]]

```python
encode(coords_nm: 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, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L583)

**Параметры:**

coords_nm (`torch.Tensor`) : `(batch, tokens, 37, 3)` координаты atom37 в нанометрах.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, значения true там, где токен является реальным, а не заполняющим.

token_type (`torch.Tensor`, *необязательный*) : коды типов токенов `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *необязательный*) : `(batch, tokens, 37)`, true там, где используется слот атома.

conditioning (`dict[str, Any]`, *необязательный*) : Остальные тензоры топологии и условий, под ключами, которые выдаёт препроцессор.

generator (`torch.Generator` или `list[torch.Generator]`, *необязательный*) : По одному генератору на каждую строку батча для независимых стохастических латентных выборок. Если генератор не указан, выборка выполняется из глобального потока.

return_dict (`bool`, по умолчанию `True`) : Возвращает типизированный вывод или кортеж его полей.

**Возвращает:** `RFD4ProteinaEncoderOutput` или `tuple`

Тензоры латентных, средних и лог-масштабных значений с формой `(batch, tokens, latent_dim)`.

Кодируйте подготовленные координаты и условия в сэмплированные локальные латенты для каждого токена.

#### decode[[diffusers.RFD4ProteinaAutoencoder.decode]]

```python
decode(z_latent: Tensor, ca_coors_nm: 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, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L624)

**Параметры:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` локальные латенты для каждого токена.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` позиции CA backbone в нанометрах.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, значения true там, где токен является реальным, а не заполняющим.

token_type (`torch.Tensor`, *необязательный*) : коды типов токенов `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *необязательный*) : `(batch, tokens, 37)`, true там, где используется слот атома.

conditioning (`dict[str, Any]`, *необязательный*) : Остальные тензоры топологии и условий, под ключами, которые выдаёт препроцессор. Условие последовательности читается отсюда.

return_dict (`bool`, по умолчанию `True`) : Возвращает типизированный вывод или кортеж его полей.

**Возвращает:** `RFD4ProteinaDecoderOutput` или `tuple`

Координаты `(batch, tokens, 37, 3)` в нанометрах, типы остатков `(batch, tokens)`, маска эмиссии `(batch, tokens)` и маска атомов `(batch, tokens, 37)`. Координаты атомов, не участвующих в эмиссии, равны нулю.

Декодирование латентов и позиций бэкбона для каждого токена в структуру atom37.

#### forward[[diffusers.RFD4ProteinaAutoencoder.forward]]

```python
forward(z_latent: Tensor, ca_coors_nm: 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, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L666)

**Параметры:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` локальные латенты для каждого токена.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` позиции CA backbone в нанометрах.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, значения true там, где токен является реальным, а не заполняющим.

token_type (`torch.Tensor`, *необязательный*) : коды типов токенов `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *необязательный*) : `(batch, tokens, 37)`, true там, где используется слот атома.

conditioning (`dict[str, Any]`, *необязательный*) : Остальные тензоры топологии и условий.

return_dict (`bool`, по умолчанию `True`) : Возвращает типизированный вывод или кортеж его полей.

**Возвращает:** `RFD4ProteinaDecoderOutput` или `tuple`

Декодированные координаты, типы остатков и маски атомов/эмиссии.

Декодирование латентов и позиций бэкбона для каждого токена; эквивалентно вызову [decode()](/docs/diffusers/v0.43.0/ru/api/models/rfd4_proteina_autoencoder#diffusers.RFD4ProteinaAutoencoder.decode).

## RFD4ProteinaEncoderOutput[[diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaEncoderOutput]]

#### diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaEncoderOutput[[diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaEncoderOutput]]

```python
diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaEncoderOutput(latent: Tensor, mean: typing.Optional[torch.Tensor] = None, log_scale: typing.Optional[torch.Tensor] = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L469)

**Параметры:**

latent (`torch.Tensor`) : Выборка `mean + noise * exp(log_scale)`, ноль вне эмитированных латентных токенов.

mean (`torch.Tensor`) : среднее значение гауссовского распределения, ноль за пределами излучённых латентных токенов.

log_scale (`torch.Tensor`) : Стандартное отклонение логарифма, ноль вне выпущенных латентных токенов.

Сэмплированные латентные и гауссовы параметры, каждый с формой `(batch, tokens, latent_dim)`.

## RFD4ProteinaDecoderOutput[[diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaDecoderOutput]]

#### diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaDecoderOutput[[diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaDecoderOutput]]

```python
diffusers.models.autoencoders.autoencoder_rfd4_proteina.RFD4ProteinaDecoderOutput(coordinates: Tensor, residue_type: typing.Optional[torch.Tensor] = None, emit_mask: typing.Optional[torch.Tensor] = None, atom_mask: typing.Optional[torch.Tensor] = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L484)

**Параметры:**

coordinates (`torch.Tensor`) : Координаты `(batch, tokens, 37, 3)` в нанометрах; атомы, не входящие в эмиссию, равны нулю.

residue_type (`torch.Tensor`) : Индексы остаточного словаря с формой `(batch, tokens)`.

emit_mask (`torch.Tensor`) : Булева маска выпущенных токенов с формой `(batch, tokens)`.

atom_mask (`torch.Tensor`) : Булева маска валидных атомов с формой `(batch, tokens, 37)`.

Декодированные молекулярные координаты и дискретная топология atom37.

