# RFD4ProteinaAutoencoder

L'autoencodeur de [RFD4-Proteína](../pipelines/rfd4_proteina). `encode` mappe les coordonnées atom37 vers des latents locaux par jeton, et `decode` transforme les latents et les positions du squelette en structure atom37 et identités de résidus. Il est enregistré dans le pipeline sous le nom `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: Sequence, allowed_residue_types: Sequence, 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 = ('token_type', 'x1_a37coors_nm', 'x1_a37coors_nm_rel', 'chain_idx_seq', 'incident_bond_type_counts', 'atom37_element_charge_embedding'), decoder_feats_seq: tuple = ('ca_coors_nm', 'z_latent_seq', 'token_type', 'cond_residue_type'))
```

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

**Paramètres :**

latent_dim (`int`, par défaut `32`) : Largeur du latent local par jeton.

n_residue_types (`int`, par défaut `147`) : Taille du vocabulaire des résidus.

num_token_types (`int`, par défaut `7`) : Taille du vocabulaire des types de jetons : protéine, ARN, ADN, atomisé, inconnu, glycan et acide aminé non canonique.

allowed_residue_types (`list[list[bool]]`) : table `(num_token_types, n_residue_types)` des classes de résidus auxquelles chaque type de jeton peut être décodé.

nlayers (`int`, par défaut `12`) : Couches du tronc dans chacun de l'encodeur et du décodeur.

token_dim (`int`, par défaut `768`) : Largeur de la représentation des jetons.

nheads (`int`, par défaut `12`) : Têtes d'attention par couche.

dim_cond (`int`, par défaut `128`) : Largeur du vecteur de conditionnement (non utilisé, nul).

pair_repr_dim (`int`, par défaut `256`) : Largeur des paires avec lesquelles les couches du tronc sont construites. L'autoencodeur publié n'utilise aucun biais de paire, ce paramètre ne contient donc aucun paramètre.

token_type_emb_dim (`int`, par défaut `32`) : Largeur de l'embedding du type de jeton.

encoder_feats_seq, decoder_feats_seq (`list[str]`) : Caractéristiques projetées dans les entrées de l'encodeur et du décodeur.

atom37_mask (`list[list[bool]]`) : Emplacements atom37 valides pour chaque type de résidu, de forme `(n_residue_types, 37)`.

Encodeur moléculaire apparié et décodeur atom37.

Les coordonnées fournies à ce modèle et renvoyées par celui-ci sont exprimées en nanomètres.

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

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

**Paramètres :**

coords_nm (`torch.Tensor`) : `(batch, tokens, 37, 3)` coordonnées atom37 en nanomètres.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, vrai là où un jeton est réel plutôt que du bourrage.

token_type (`torch.Tensor`, *facultatif*) : codes de type de jeton `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *facultatif*) : `(batch, tokens, 37)`, vrai là où un emplacement d'atome est utilisé.

conditioning (`dict[str, Any]`, *facultatif*) : Les tenseurs de topologie et de conditionnement restants, sous les clés émises par le préprocesseur.

generator (`torch.Generator` ou `list[torch.Generator]`, *facultatif*) : Un générateur par ligne du lot pour des échantillons latents stochastiques indépendants. En l'absence de générateur, l'échantillonnage est effectué à partir du flux global.

return_dict (`bool`, par défaut `True`) : Retourne une sortie typée, ou un tuple de ses champs.

**Retourne :** `RFD4ProteinaEncoderOutput` ou `tuple`

Tenseurs latents, de moyenne et d'échelle logarithmique de forme `(batch, tokens, latent_dim)`.

Encoder les coordonnées préparées et les conditions en latents locaux par jeton échantillonnés.

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

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

**Paramètres :**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` latents locaux par jeton.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` positions CA du backbone en nanomètres.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, vrai là où un jeton est réel plutôt que du bourrage.

token_type (`torch.Tensor`, *facultatif*) : codes de type de jeton `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *facultatif*) : `(batch, tokens, 37)`, vrai là où un emplacement d'atome est utilisé.

conditioning (`dict[str, Any]`, *facultatif*) : Les tenseurs de topologie et de conditionnement restants, sous les clés émises par le préprocesseur. La condition de séquence est lue ici.

return_dict (`bool`, par défaut `True`) : Retourne une sortie typée, ou un tuple de ses champs.

**Retourne :** `RFD4ProteinaDecoderOutput` ou `tuple`

Coordonnées `(batch, tokens, 37, 3)` en nanomètres, types de résidus `(batch, tokens)`, masque d'émission `(batch, tokens)` et masque d'atomes `(batch, tokens, 37)`. Les coordonnées des atomes non émis sont nulles.

Décoder les latents par jeton et les positions du backbone en structure 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)
```

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

**Paramètres :**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` latents locaux par jeton.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` positions CA du backbone en nanomètres.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, vrai là où un jeton est réel plutôt que du bourrage.

token_type (`torch.Tensor`, *facultatif*) : codes de type de jeton `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *facultatif*) : `(batch, tokens, 37)`, vrai là où un emplacement d'atome est utilisé.

conditioning (`dict[str, Any]`, *facultatif*) : Les tenseurs restants de topologie et de conditionnement.

return_dict (`bool`, par défaut `True`) : Retourne une sortie typée, ou un tuple de ses champs.

**Retourne :** `RFD4ProteinaDecoderOutput` ou `tuple`

Coordonnées décodées, types de résidus et masques d'atomes/émissions.

Décode les latents par jeton et les positions du backbone ; équivalent à l'appel de [decode()](/docs/diffusers/main/fr/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)
```

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

**Paramètres :**

latent (`torch.Tensor`) : Échantillon `mean + noise * exp(log_scale)`, nul en dehors des jetons latents émis.

mean (`torch.Tensor`) : moyenne gaussienne, nulle en dehors des jetons latents émis.

log_scale (`torch.Tensor`) : Écart-type logarithmique, nul en dehors des jetons latents émis.

Paramètres latents échantillonnés et gaussiens, chacun de forme `(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)
```

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

**Paramètres :**

coordinates (`torch.Tensor`) : Coordonnées `(batch, tokens, 37, 3)` en nanomètres ; les atomes non émis sont nuls.

residue_type (`torch.Tensor`) : Indices du vocabulaire des résidus, de forme `(batch, tokens)`.

emit_mask (`torch.Tensor`) : masque booléen des jetons émis, de forme `(batch, tokens)`.

atom_mask (`torch.Tensor`) : Masque booléen des atomes valides, de forme `(batch, tokens, 37)`.

Coordonnées moléculaires décodées et topologie discrète atom37.

