# RFD4ProteinaAutoencoder

Autoencoder của [RFD4-Proteína](../pipelines/rfd4_proteina). `encode` ánh xạ tọa độ atom37 sang các latent cục bộ theo từng token, và `decode` chuyển các latent cùng vị trí khung xương trở lại thành cấu trúc atom37 và danh tính các residue. Nó được đăng ký trong pipeline dưới tên `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'))
```

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

**Tham số:**

latent_dim (`int`, mặc định là `32`) : Độ rộng của latent cục bộ cho từng token.

n_residue_types (`int`, mặc định là `147`) : Kích thước từ vựng của residue.

num_token_types (`int`, mặc định là `7`) : Kích thước của từ điển token-type: protein, RNA, DNA, atomized, unknown, glycan và amino acid không chính tắc.

allowed_residue_types (`list[list[bool]]`) : bảng kích thước `(num_token_types, n_residue_types)` của các lớp residue mà mỗi loại token có thể giải mã thành.

nlayers (`int`, mặc định là `12`) : Số lớp trunk trong mỗi bộ mã hóa và bộ giải mã.

token_dim (`int`, mặc định là `768`) : Độ rộng biểu diễn token.

nheads (`int`, mặc định là `12`) : Số đầu attention mỗi lớp.

dim_cond (`int`, mặc định là `128`) : Độ rộng của vector điều kiện (không được sử dụng, bằng không).

pair_repr_dim (`int`, mặc định là `256`) : Bề rộng của cặp mà các lớp thân được xây dựng với. Autoencoder được phát hành không sử dụng pair bias, vì vậy tham số này không giữ bất kỳ tham số nào.

token_type_emb_dim (`int`, mặc định là `32`) : Độ rộng nhúng kiểu token.

encoder_feats_seq, decoder_feats_seq (`list[str]`) : Các đặc trưng được chiếu vào đầu vào của encoder và decoder.

atom37_mask (`list[list[bool]]`) : Các vị trí atom37 hợp lệ cho từng loại residue, có hình dạng `(n_residue_types, 37)`.

Bộ mã hóa phân tử ghép cặp và bộ giải mã atom37.

Tọa độ được cung cấp cho và trả về bởi mô hình này được tính bằng nanomet.

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

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

**Tham số:**

coords_nm (`torch.Tensor`) : `(batch, tokens, 37, 3)` tọa độ atom37 tính bằng nanomet.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, giá trị true tại các token thực, không phải padding.

token_type (`torch.Tensor`, *tùy chọn*) : mã token-type `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *tùy chọn*) : `(batch, tokens, 37)`, giá trị true tại các vị trí mà một slot nguyên tử được sử dụng.

conditioning (`dict[str, Any]`, *tùy chọn*) : Các tensor topology và conditioning còn lại, nằm dưới các key mà preprocessor phát ra.

generator (`torch.Generator` hoặc `list[torch.Generator]`, *tuỳ chọn*) : Một generator cho mỗi hàng trong batch để lấy mẫu latent ngẫu nhiên độc lập. Nếu không có, việc lấy mẫu sẽ lấy từ luồng toàn cục.

return_dict (`bool`, mặc định là `True`) : Trả về một đầu ra có kiểu, hoặc một bộ (tuple) gồm các trường của nó.

**Trả về:** `RFD4ProteinaEncoderOutput` hoặc `tuple`

Các tensor dạng latent, mean và log-scale có hình dạng `(batch, tokens, latent_dim)`.

Mã hóa các tọa độ đã chuẩn bị và điều kiện thành các latent cục bộ theo từng token đã lấy mẫu.

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

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

**Tham số:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` các latent cục bộ theo từng token.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` vị trí CA của backbone tính bằng nanomet.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, giá trị true tại các token thực, không phải padding.

token_type (`torch.Tensor`, *tùy chọn*) : mã token-type `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *tùy chọn*) : `(batch, tokens, 37)`, giá trị true tại các vị trí mà một slot nguyên tử được sử dụng.

conditioning (`dict[str, Any]`, *tùy chọn*) : Các tensor topology và conditioning còn lại, nằm dưới các key mà preprocessor phát ra. Điều kiện sequence được đọc từ đây.

return_dict (`bool`, mặc định là `True`) : Trả về một đầu ra có kiểu, hoặc một bộ (tuple) gồm các trường của nó.

**Trả về:** `RFD4ProteinaDecoderOutput` hoặc `tuple`

Tọa độ `(batch, tokens, 37, 3)` tính bằng nanomet, loại residue `(batch, tokens)`, emission mask `(batch, tokens)` và atom mask `(batch, tokens, 37)`. Tọa độ của các atom không được phát ra là số 0.

Giải mã các ẩn (latents) theo từng token và các vị trí của backbone thành cấu trúc 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)
```

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

**Tham số:**

z_latent (`torch.Tensor`) : `(batch, tokens, latent_dim)` các latent cục bộ theo từng token.

ca_coors_nm (`torch.Tensor`) : `(batch, tokens, 3)` vị trí CA của backbone tính bằng nanomet.

padding_mask (`torch.Tensor`) : `(batch, tokens)`, giá trị true tại các token thực, không phải padding.

token_type (`torch.Tensor`, *tùy chọn*) : mã token-type `(batch, tokens)`.

atom37_mask (`torch.Tensor`, *tùy chọn*) : `(batch, tokens, 37)`, giá trị true tại các vị trí mà một slot nguyên tử được sử dụng.

conditioning (`dict[str, Any]`, *tùy chọn*) : Các tensor topology và conditioning còn lại.

return_dict (`bool`, mặc định là `True`) : Trả về một đầu ra có kiểu, hoặc một bộ (tuple) gồm các trường của nó.

**Trả về:** `RFD4ProteinaDecoderOutput` hoặc `tuple`

Tọa độ đã giải mã, các loại gốc và mặt nạ nguyên tử/phát xạ.

Giải mã các ẩn (latents) và vị trí backbone cho từng token; tương đương với việc gọi [decode()](/docs/diffusers/v0.43.0/vi/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)
```

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

**Tham số:**

latent (`torch.Tensor`) : Mẫu `mean + noise * exp(log_scale)`, bằng 0 bên ngoài các token tiềm năng được phát ra.

mean (`torch.Tensor`) : trung bình Gaussian, bằng 0 bên ngoài các token tiềm năng được phát ra.

log_scale (`torch.Tensor`) : Độ lệch chuẩn log, bằng 0 bên ngoài các token tiềm ẩn được phát ra.

Các tham số latent và Gaussian được lấy mẫu, mỗi tham số có hình dạng `(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)
```

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

**Tham số:**

coordinates (`torch.Tensor`) : Tọa độ `(batch, tokens, 37, 3)` tính bằng nanomet; các nguyên tử không được phát ra có giá trị bằng 0.

residue_type (`torch.Tensor`) : Các chỉ số từ vựng của residue có hình dạng `(batch, tokens)`.

emit_mask (`torch.Tensor`) : Mặt nạ token phát ra dạng Boolean có hình dạng `(batch, tokens)`.

atom_mask (`torch.Tensor`) : Mặt nạ nguyên tử hợp lệ dạng Boolean có hình dạng `(batch, tokens, 37)`.

Tọa độ phân tử đã giải mã và topo nguyên tử37 rời rạc.

