# RFD4ProteinaAutoencoder

O autoencoder de [RFD4-Proteína](../pipelines/rfd4_proteina). `encode` mapeia as coordenadas atom36 para latentes locais por token, e `decode` converte latentes e posições do backbone de volta para a estrutura atom37 e identidades de resíduos. Ele é registrado no pipeline como `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'))
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L500)

**Parâmetros:**

latent_dim (`int`, padrão `32`) : Largura do latente local por token.

n_residue_types (`int`, padrão `147`) : Tamanho do vocabulário de resíduos.

num_token_types (`int`, padrão `7`) : Tamanho do vocabulário de tipos de tokens: proteína, RNA, DNA, atomizado, desconhecido, glicano e aminoácido não canônico.

allowed_residue_types (`list[list[bool]]`) : `(num_token_types, n_residue_types)` tabela das classes de resíduos para as quais cada tipo de token pode ser decodificado.

nlayers (`int`, padrão `12`) : Camadas do tronco em cada um dos codificador e decodificador.

token_dim (`int`, padrão `768`) : Largura da representação de tokens.

nheads (`int`, padrão `12`) : Cabeças de atenção por camada.

dim_cond (`int`, padrão `128`) : Largura do vetor de condicionamento (não utilizado, zero).

pair_repr_dim (`int`, padrão `256`) : Largura dos pares com que as camadas do tronco são construídas. O autoencoder liberado não usa viés de par, portanto isso não retém parâmetros.

token_type_emb_dim (`int`, padrão `32`) : Largura do embedding do tipo de token.

encoder_feats_seq, decoder_feats_seq (`list[str]`) : Recursos projetados nas entradas do codificador e do decodificador.

atom37_mask (`list[list[bool]]`) : Slots de atom37 válidos para cada tipo de resíduo, com forma `(n_residue_types, 37)`.

Codificador molecular em pares e decodificador atom37.

As coordenadas fornecidas a e retornadas por este modelo estão em nanômetros.

#### 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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L583)

**Parâmetros:**

coords_nm (`torch.Tensor`) : `(batch, tokens, 37, 3)` coordenadas atom37 em nanômetros.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, verdadeiro onde um token é real em vez de preenchimento.

token_type (`torch.Tensor`, *opcional*) : códigos de tipo de token `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *opcional*) : `(batch, tokens, 37)`, verdadeiro onde um slot de átomo é utilizado.

conditioning (`dict[str, Any]`, *opcional*) : Os tensores restantes de topologia e condicionamento, sob as chaves emitidas pelo pré-processador.

generator (`torch.Generator` ou `list[torch.Generator]`, *opcional*) : Um gerador por linha do lote para amostras latentes estocásticas independentes. Sem um, a amostragem é extraída do fluxo global.

return_dict (`bool`, padrão `True`) : Retorna uma saída tipada ou uma tupla de seus campos.

**Retorna:** `RFD4ProteinaEncoderOutput` ou `tuple`

Tensores latentes, de média e de escala logarítmica com forma `(batch, tokens, latent_dim)`.

Codifique as coordenadas preparadas e as condições em latentes locais por token amostrados.

#### 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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L624)

**Parâmetros:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` latentes locais por token.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` posições CA do backbone em nanômetros.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, verdadeiro onde um token é real em vez de preenchimento.

token_type (`torch.Tensor`, *opcional*) : códigos de tipo de token `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *opcional*) : `(batch, tokens, 37)`, verdadeiro onde um slot de átomo é utilizado.

conditioning (`dict[str, Any]`, *opcional*) : Os tensores restantes de topologia e condicionamento, sob as chaves emitidas pelo pré-processador. A condição de sequência é lida daqui.

return_dict (`bool`, padrão `True`) : Retorna uma saída tipada ou uma tupla de seus campos.

**Retorna:** `RFD4ProteinaDecoderOutput` ou `tuple`

Coordenadas `(batch, tokens, 37, 3)` em nanômetros, tipos de resíduos `(batch, tokens)`, máscara de emissão `(batch, tokens)` e máscara de átomos `(batch, tokens, 37)`. As coordenadas de átomos não emitidos são zero.

Decodifique os latentes por token e as posições do backbone para a estrutura 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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L666)

**Parâmetros:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` latentes locais por token.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` posições CA do backbone em nanômetros.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, verdadeiro onde um token é real em vez de preenchimento.

token_type (`torch.Tensor`, *opcional*) : códigos de tipo de token `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *opcional*) : `(batch, tokens, 37)`, verdadeiro onde um slot de átomo é utilizado.

conditioning (`dict[str, Any]`, *opcional*) : Os tensores restantes de topologia e condicionamento.

return_dict (`bool`, padrão `True`) : Retorna uma saída tipada ou uma tupla de seus campos.

**Retorna:** `RFD4ProteinaDecoderOutput` ou `tuple`

Coordenadas decodificadas, tipos de resíduos e máscaras de átomo/emissão.

Decodifica os latentes por token e as posições do backbone; equivalente a chamar [decode()](/docs/diffusers/v0.43.0/pt/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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L469)

**Parâmetros:**

latent (`torch.Tensor`) : Amostra `mean + noise * exp(log_scale)`, zero fora dos tokens latentes emitidos.

mean (`torch.Tensor`) : média gaussiana, zero fora dos tokens latentes emitidos.

log_scale (`torch.Tensor`) : Desvio padrão logarítmico, zero fora dos tokens latentes emitidos.

Parâmetros latentes amostrados e gaussianos, cada um com a forma `(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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_rfd4_proteina.py#L484)

**Parâmetros:**

coordinates (`torch.Tensor`) : Coordenadas `(batch, tokens, 37, 3)` em nanômetros; átomos não emitidos são zero.

residue_type (`torch.Tensor`) : Índices do vocabulário de resíduos com forma `(batch, tokens)`.

emit_mask (`torch.Tensor`) : Máscara booleana de tokens emitidos com forma `(batch, tokens)`.

atom_mask (`torch.Tensor`) : Máscara booleana de átomos válidos com forma `(batch, tokens, 37)`.

Coordenadas moleculares decodificadas e topologia discreta de atom37.

