# ESMFold2

## 概要

ESMFold2は全原子タンパク質構造予測モデルです。[ESMC](./esmc)タンパク質言語モデルをバックボーンとして使用し、アミノ酸配列から3D座標および残基ごとの信頼度（pLDDT、PAE、PDE）を直接予測します。アーキテクチャは、3D回転位置埋め込みを備えたスライディングウィンドウ原子エンコーダー、反復的に適用されるペアワイズフォールディングトランク、拡散ベースの構造ヘッド、および信頼度ヘッドを組み合わせています。

モデルのチェックポイントは、Hugging Face Hubの[`biohub/ESMFold2`](https://huggingface.co/biohub/ESMFold2)で利用できます。

## 使用例

```python
import torch

from transformers import EsmFold2Model

# The ESMC backbone is bundled in the checkpoint and loaded with the model.
# bf16 is the recommended inference precision.
model = EsmFold2Model.from_pretrained("biohub/ESMFold2", dtype=torch.bfloat16, device_map="auto")

pdb_string = model.infer_protein_as_pdb("MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ")
print(pdb_string)
```

`infer_protein` は、PDB 文字列ではなく生出力（原子座標、distogram の logits、信頼度メトリクス）が必要な場合に [EsmFold2Output](/docs/transformers/main/ja/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output) として返します。同じ配列を複数回実行すると、予測結果がわずかに異なる場合があります。完全に再現可能な構造を得たい場合は、シードを手動で設定してください。

ESMFold2 は、1回のフォールディングごとに`config.structure_head.num_diffusion_samples`個の構造を生成します。`infer_protein_as_pdb` は、最も評価が高いもの（pTMが最大のもの）をレンダリングします。特定のサンプルを選択する場合は、`sample_idx`を渡します。PDBファイルには、`plddt`の出力と同じ0〜1のスケールで、残基ごとのpLDDTがb-factor列に格納されています。

### `forward` と `fold`

構造予測は2つの部分から構成されています。`EsmFold2Model.forward`がその第一歩です。特徴量化された入力に対してフォールディングトランクを実行し、洗練されたペア表現とディストグラムを[EsmFold2TrunkOutput](/docs/transformers/main/ja/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput)として返します。3D座標は生成されません。ESMFold2は反復的なノイズ除去によってそれらを取得し、そのサンプリングループ（ノイズスケジュール、Kabsch整列、ODE/SDE更新）は、信頼度ヘッドの呼び出しとともに`EsmFold2FoldingMixin`に実装されています。

| メソッド | 使用用途 |
| --- | --- |
| `infer_protein_as_pdb(sequence)` | アミノ酸配列から直接生成されたPDB文字列 |
| `infer_protein(sequence)` | 生の [EsmFold2Output](/docs/transformers/main/ja/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output) |
| `fold(**features)` | 事前特徴化済み入力(`infer_protein`が呼び出すもの) |
| `forward(**features)` | 単独のtrunk — distogramとペア表現、サンプリングなし |

実際の構造を得るには、`fold` または `infer_protein` を呼び出してください。distogram だけが必要な場合、または拡散サンプラーを自分で制御したい場合は、`forward` を使用してください。`fold` は `forward` を一度呼び出し、その出力を `EsmFold2DiffusionModule` に渡します。`EsmFold2DiffusionModule` 自身の `forward` が、単一のデノイジングステップです。

## 融合カーネルによる高速な推論

folding trunk の主要な計算コストは、三角形乗算の更新です。[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) に `use_kernels=True` を渡すと、[`kernels`](https://github.com/huggingface/kernels) ライブラリを介して Hub から読み込まれる融合 Triton カーネルに置き換えられ、予測結果は変わりません。これは推論専用かつ CUDA 専用であり、CPU 上で実行する場合やカーネルがインストールされていない場合は、モデルが純粋な PyTorch 実装に透明にフォールバックします。カーネル化が発生する際は、モデルが CUDA デバイス上にあることを確認してください（例: `device_map` を使用する場合）。

```python
import torch

from transformers import EsmFold2Model

model = EsmFold2Model.from_pretrained(
    "biohub/ESMFold2", dtype=torch.bfloat16, device_map="cuda", use_kernels=True
)

pdb_string = model.infer_protein_as_pdb("MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ")
```

## EsmFold2Config[[transformers.EsmFold2Config]]

#### transformers.EsmFold2Config[[transformers.EsmFold2Config]]

```python
transformers.EsmFold2Config(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, hidden_size: int | None = 384, pairwise_hidden_size: int | None = 256, single_inputs_size: int | None = 451, pair_transition_intermediate_size: int | None = 1024, sliding_window: int | None = 128, chunk_size: int | None = 64, num_relative_residx_bins: int | None = 32, num_relative_chain_bins: int | None = 2, num_loops: int | None = 10, num_res_types: int | None = 33, max_atomic_number: int | None = 128, char_vocab_size: int | None = 64, max_chars: int | None = 4, max_atoms_per_token: int | None = 23, atom_feature_dim: int | None = None, folding_trunk_num_hidden_layers: int | None = 24, parcae_num_coda_layers: int | None = 2, atom_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2AtomEncoderConfig | None = None, structure_head: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2StructureHeadConfig | None = None, confidence_head: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2ConfidenceHeadConfig | None = None, msa_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2MsaEncoderConfig | None = None, lm_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2LmEncoderConfig | None = None, esmc_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/configuration_esmfold2.py#L292)

**パラメータ:**

hidden_size (`int`、*任意*、デフォルトは 384) : 単一表現の幅。

pairwise_hidden_size (`int`、*任意*、デフォルトは 256) : ペア表現の幅。

single_inputs_size (`int`, *任意*, デフォルト値は 451) : トランクおよび拡散条件付けに供給される連結された単一入力特徴の幅: `atom_encoder.output_dim` に、2 つの残基タイプ one-hot とプロファイルのスカラー値を加えたもの。

pair_transition_intermediate_size (`int`、*optional*、デフォルトは 1024) : ペアストリーム遷移の SwiGLU 幅です。

sliding_window (`int`、*任意*、デフォルトは 128) : atom-stack attention のスライディングウィンドウサイズ（トークンインデックス距離）を、半径ではなくウィンドウ全体の幅として指定します。

chunk_size (`int`, *任意*, デフォルトは 64) : メモリ負荷の高いペア/MSA ストリーム操作のチャンクサイズです。`None` を指定すると、チャンク分割が無効になります。

num_relative_residx_bins (`int`、*optional*、デフォルトは 32) : 相対位置エンコーディングにおける、相対残基インデックスのバイン数。

num_relative_chain_bins (`int`, *任意*, デフォルトは 2) : 相対位置エンコーディングにおける相対チェーンインデックスのビン数。

num_loops (`int`、*任意*、デフォルトは 10) : トランクの精錬ループの回数。

num_res_types (`int`、*任意*、デフォルトは 33) : 残基の種類数。

max_atomic_number (`int`、*任意*、デフォルトは 128) : 原子特徴量における one-hot 要素のサイズ。

char_vocab_size (`int`、*任意*、デフォルトは 64) : エンコードされた原子名の文字語彙サイズ。

max_chars (`int`、*任意*、デフォルトは 4) : エンコードされた原子名 1 つあたりの文字数。

max_atoms_per_token (`int`、*任意*、デフォルトは 23) : トークンあたりの最大原子数。

atom_feature_dim (`int`, *任意*) : 原子特徴の幅: xyz、電荷、マスク、および元素と原子名文字の one-hot。未設定の場合、`max_atomic_number`、`char_vocab_size`、`max_chars` から導出されます。

folding_trunk_num_hidden_layers (`int`, *任意*, デフォルトは 24) : フォールディングトランクにおけるペア更新ブロックの数。

parcae_num_coda_layers (`int`、*任意*、デフォルトは 2) : parcae coda におけるペア更新ブロックの数。

atom_encoder (`EsmFold2AtomEncoderConfig`、*任意*) : inputs-embedder SWA atom encoder の設定です。

structure_head (`EsmFold2StructureHeadConfig`、*任意*) : 拡散構造予測ヘッドの設定（`diffusion_module` サブ設定を保持します）。

confidence_head (`EsmFold2ConfidenceHeadConfig`、*任意*) : 信頼度ヘッドの設定。

msa_encoder (`EsmFold2MsaEncoderConfig`、*任意*) : MSAエンコーダーの設定です。

lm_encoder (`EsmFold2LmEncoderConfig`、*任意*) : 言語モデルの隠れ状態エンコーダーの設定です。

esmc_config ([EsmcConfig](/docs/transformers/main/ja/model_doc/esmc#transformers.EsmcConfig)、*任意*) : 同梱されている ESMC バックボーンの設定です。

これは Esmfold2Model の設定を保存するための設定クラスです。指定された引数に基づいて Esmfold2 モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[biohub/ESMFold2](https://huggingface.co/biohub/ESMFold2) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

#### validate_architecture[[transformers.EsmFold2Config.validate_architecture]]

```python
validate_architecture()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/configuration_esmfold2.py#L387)

サブ設定にまたがる幅の関係をチェックします。各サブ設定は、それ自身の幅の関係を個別にチェックします。

## EsmFold2PreTrainedModel[[transformers.EsmFold2PreTrainedModel]]

#### transformers.EsmFold2PreTrainedModel[[transformers.EsmFold2PreTrainedModel]]

```python
transformers.EsmFold2PreTrainedModel(config: PreTrainedConfig, *inputs, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L1848)

**パラメータ:**

config ([PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

## EsmFold2Model[[transformers.EsmFold2Model]]

#### transformers.EsmFold2Model[[transformers.EsmFold2Model]]

```python
transformers.EsmFold2Model(config: EsmFold2Config)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L1903)

**パラメータ:**

config ([EsmFold2Config](/docs/transformers/main/ja/model_doc/esmfold2#transformers.EsmFold2Config)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

ESMFold2は、ESMCタンパク質言語モデルのバックボーンをバンドルした全原子タンパク質構造予測器です。これは標準的にリリースされたESMFold2アーキテクチャであり、そのトランクは線形再帰スタック（内部では「parcae」と呼ばれる）で構成されています。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.EsmFold2Model.forward]]

```python
forward(token_index: Tensor, residue_index: Tensor, asym_id: Tensor, sym_id: Tensor, entity_id: Tensor, mol_type: Tensor, res_type: Tensor, token_bonds: Tensor, attention_mask: Tensor, atom_inputs: EsmFold2AtomInputs, deletion_mean: typing.Optional[torch.Tensor] = None, msa: typing.Optional[torch.Tensor] = None, has_deletion: typing.Optional[torch.Tensor] = None, deletion_value: typing.Optional[torch.Tensor] = None, msa_attention_mask: typing.Optional[torch.Tensor] = None, input_ids: typing.Optional[torch.Tensor] = None, lm_hidden_states: typing.Optional[torch.Tensor] = None, num_loops: int | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L2188)

**パラメータ:**

token_index (*torch.Tensor*、shape *(batch_size, num_tokens)*) : 完全なコンプレックス内のトークンごとの位置インデックス。相対位置エンコーディングに供給されます。

residue_index (*torch.Tensor*、shape *(batch_size, num_tokens)*) : 各チェーン内の残基インデックス。相対位置エンコーディングに使用されます。

asym_id (*torch.Tensor*、形状 *(batch_size, num_tokens)*) : 各トークンに対する非対称ユニット（チェーン）ID。

sym_id (*torch.Tensor*、shape *(batch_size, num_tokens)*) : 同量体（homomer）の同一チェーンを区別するための対称コピーID。

entity_id (*torch.Tensor*、shape *(batch_size, num_tokens)*) : 同じ分子エンティティに属するトークンをグループ化するエンティティID。

mol_type (*torch.Tensor*、shape *(batch_size, num_tokens)*) : 各トークンに対する分子タイプコード: `0` = protein、`1` = DNA、`2` = RNA、`3` = non-polymer (ligand)。

res_type (*torch.Tensor*、形状 *(batch_size, num_tokens)*) : 各トークンに対する残基型（アミノ酸の同一性）インデックス。

token_bonds (*torch.Tensor*、形状 *(batch_size, num_tokens, num_tokens, 1)*) : トークン間のペアワイズ共有結合特徴量。

attention_mask (*torch.Tensor*、形状 *(batch_size, num_tokens)*) : 有効なトークン (`1`) とパディング (`0`) を区別するマスク。入力には右パディングを適用する必要があります。

atom_inputs (*~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs*) : 生データの参照コンフォーマーの原子テンソルをまとめたものです。位置、原子番号、形式電荷、エンコードされた原子名、原子ごとのグループ ID、アトムのパディングマスク、およびアトムからトークンへのマッピングを含みます。

deletion_mean (*torch.Tensor*、shape *(batch_size, num_tokens)*、*optional*) : 各カラムあたりの平均 MSA 削除数。デフォルトはゼロ（MSA なし）です。

msa (*torch.Tensor*、shape *(batch_size, msa_depth, num_tokens)*、*optional*) : MSA の residue-type トークン（0 行目がクエリ配列）。デフォルトでは単一配列の MSA になります。

has_deletion (*torch.Tensor*、形状 *(batch_size, msa_depth, num_tokens)*、*optional*) : 削除に先行する MSA の位置を示すブールフラグ。

deletion_value (*torch.Tensor*、形状 *(batch_size, msa_depth, num_tokens)*、*optional*) : 各位置における MSA の削除数。

msa_attention_mask (*torch.Tensor*、shape *(batch_size, msa_depth, num_tokens)*、*optional*) : MSA の行/列の妥当性マスク。

input_ids (*torch.Tensor* of shape *(batch_size, num_tokens)*, *optional*) : ESMC-vocabulary token ids for the sequence. Fed to the bundled ESMC backbone to produce *lm_hidden_states* when those are not passed directly; ignored when *lm_hidden_states* is given.

lm_hidden_states (*torch.Tensor*、shape *(batch_size, num_tokens, num_esmc_layers + 1, esmc_hidden_size)*、*optional*) : 事前計算済みの ESMC バックボーンの隠れ状態。バックボーンの各層と埋め込み層のそれぞれに対応します。指定された場合、バックボーンは実行されず、*input_ids* は使用されません。

num_loops (*int*, *optional*) : トランクの精錬ループの回数。デフォルトは *config.num_loops* です。

**戻り値:** [*~models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput*] または *tuple(torch.FloatTensor)*

*~models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput*、または *torch.FloatTensor* のタプル（*return_dict=False* が渡された場合、または *config.return_dict=False* の場合）。設定（[*EsmFold2Config*]）や入力に応じて、さまざまな要素で構成されます。

フォールディングトランクを実行します。入力の特徴量抽出、ペア表現への埋め込み、*num_loops*回のリサイクル反復による洗練、そしてディストログラムの読み取りを行います。これは構造予測の決定論的な半分であり、返されたペア表現を3D座標に変換する拡散サンプラーは*EsmFold2FoldingMixin*に実装されています。エンドツーエンドの予測には、[*~EsmFold2Model.fold*]または[*~EsmFold2Model.infer_protein*]を呼び出してください。

- **distogram_logits** (*torch.FloatTensor*、shape *(batch_size, num_tokens, num_tokens, distogram_bins)*) -- 残基ペアに対する予測された距離分布の logits。
- **pair_states** (*torch.FloatTensor*、shape *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- trunk の最終的なペア表現（fp32）。
- **single_inputs** (*torch.FloatTensor*、shape *(batch_size, num_tokens, single_inputs_size)*) -- inputs embedder によって構築された、連結された単一入力特徴量。
- **relative_position_encoding** (*torch.FloatTensor*、shape *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- 相対位置ペアエンコーディング。
- **token_bonds_encoding** (*torch.FloatTensor*、shape *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- トークン間の共有結合特徴の埋め込み。
- **atom_inputs** (*~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs*、*optional*) -- 特徴量化された参照コンフォーマーの原子入力です。拡散原子スタックによって再利用されます。

#### 折りたたみ[[transformers.EsmFold2Model.fold]]

```python
fold(attention_mask: Tensor, asym_id: Tensor, mol_type: Tensor, distogram_atom_idx: Tensor, num_diffusion_samples: int | None = None, num_sampling_steps: int | None = None, **trunk_kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/generation_esmfold2.py#L103)

フィーチャリング済みの入力から構造をエンドツーエンドで予測します。トランク（*EsmFold2Model.forward*、特徴量引数がドキュメント化されています）を実行し、拡散構造ヘッドから座標をサンプリングして、信頼度ヘッドでスコアリングします。

ここで名前が付けられているのは、sampler と confidence head が必要とする引数のみです。それ以外の引数はそのまま trunk に転送されるため、`fold` は `forward` と同じ引数を受け取ります。

attention_mask (*torch.Tensor*、shape *(batch_size, num_tokens)*): 有効なトークン (`1`) とパディング (`0`) を区別するマスク。trunk にも転送されます。asym_id (*torch.Tensor*、shape *(batch_size, num_tokens)*): 各トークンに対する非対称ユニット (チェーン) ID。trunk にも転送されます。mol_type (*torch.Tensor*、shape *(batch_size, num_tokens)*): 各トークンに対する分子タイプコード: `0` = 蛋白质, `1` = DNA, `2` = RNA, `3` = 非ポリマー (リガンド)。trunk にも転送されます。distogram_atom_idx (*torch.Tensor*、shape *(batch_size, num_tokens)*): 各トークンの代表原子 (Cβ、グリシンは Cα) のインデックス。confidence head で使用されます。trunk では不要です。num_diffusion_samples (*int*、*optional*): 並列に取得する構造サンプルの数。confidence head はサンプルごとに 1 回再実行されます。デフォルト値は *config.structure_head.num_diffusion_samples* です。num_sampling_steps (*int*、*optional*): ディフュージョンサンプリングのステップ数。デフォルト値は *config.structure_head.inference_num_steps* です。trunk_kwargs: 残りの特徴化された入力 (*num_loops* を含む。また、以下の *atom_inputs* にまとめられた生データのアトム別テンソルも含まれます)。[*EsmFold2Model.forward*] に転送され、そこで文書化されています。

#### infer_protein[[transformers.EsmFold2Model.infer_protein]]

```python
infer_protein(sequence: str, **forward_kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/generation_esmfold2.py#L308)

`sequence` を特徴量化して、フォールディングを実行します。`forward_kwargs` は [*~EsmFold2Model.fold*] に渡されます。

#### infer_protein_as_pdb[[transformers.EsmFold2Model.infer_protein_as_pdb]]

```python
infer_protein_as_pdb(sequence: str, sample_idx: int | None = None, **forward_kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/generation_esmfold2.py#L315)

`sequence`をフォールディングし、予測結果をPDB文字列としてレンダリングします。

`sample_idx` は、レンダリングする拡散サンプルを選択します。デフォルトでは、最も評価の高いものが選択されます。

## EsmFold2Output[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output]]

#### transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output]]

```python
transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output(distogram_logits: typing.Optional[torch.Tensor] = None, sample_atom_coords: typing.Optional[torch.Tensor] = None, plddt_logits: typing.Optional[torch.Tensor] = None, plddt: typing.Optional[torch.Tensor] = None, plddt_per_atom: typing.Optional[torch.Tensor] = None, plddt_ca: typing.Optional[torch.Tensor] = None, complex_plddt: typing.Optional[torch.Tensor] = None, complex_iplddt: typing.Optional[torch.Tensor] = None, pae_logits: typing.Optional[torch.Tensor] = None, pae: typing.Optional[torch.Tensor] = None, pde_logits: typing.Optional[torch.Tensor] = None, pde: typing.Optional[torch.Tensor] = None, resolved_logits: typing.Optional[torch.Tensor] = None, ptm: typing.Optional[torch.Tensor] = None, iptm: typing.Optional[torch.Tensor] = None, pair_chains_iptm: typing.Optional[torch.Tensor] = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L1227)

**パラメータ:**

distogram_logits (`torch.FloatTensor`、shape `(batch_size, num_tokens, num_tokens, distogram_bins)`) : 残基ペアに対する予測された距離分布の logits（RNG に依存せず、拡散サンプリングは行いません）。

sample_atom_coords (`torch.FloatTensor`、shape `(num_diffusion_samples, num_atoms, 3)`) : 各拡散サンプルに対する予測された全原子デカルト座標。

plddt_logits (`torch.FloatTensor`、形状 `(num_diffusion_samples, num_atoms, num_plddt_bins)`) : 原子ごとの pLDDT バイナリジット。

plddt (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens)`) : 残基ごとの予測 lDDT 信頼度。

plddt_per_atom (`torch.FloatTensor`、shape `(num_diffusion_samples, num_atoms)`) : 原子ごとの予測 lDDT 信頼度。

plddt_ca (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens)`) : 各トークンの代表原子（Cα）における予測 lDDT。

complex_plddt (`torch.FloatTensor`、shape `(num_diffusion_samples,)`) : 複合体のすべての原子にわたる pLDDT の平均値。

complex_iplddt (`torch.FloatTensor`、shape `(num_diffusion_samples,)`) : インターフェース重み付き複合 pLDDT。

pae_logits (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens, num_tokens, num_pae_bins)`) : 予測されたアライメントエラーのビン logits。

pae (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens, num_tokens)`) : 各残基ペアに対する予測された整列誤差（Å）。

pde_logits (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens, num_tokens, num_pde_bins)`) : 予測距離誤差のビン logits。

pde (`torch.FloatTensor`、shape `(num_diffusion_samples, num_tokens, num_tokens)`) : 各残基ペアに対する予測された距離誤差 (Å)。

resolved_logits (`torch.FloatTensor`、shape `(num_diffusion_samples, num_atoms, 2)`) : 原子ごとの resolved/unresolved logits。

ptm (`torch.FloatTensor`、shape `(num_diffusion_samples,)`) : 各サンプルに対する予測TM-score。

iptm (`torch.FloatTensor`、shape `(num_diffusion_samples,)`) : 各サンプルに対する予測インターフェースTMスコア。

pair_chains_iptm (`torch.FloatTensor`、shape `(num_diffusion_samples, num_chains, num_chains)`) : 各順序付きチェーンペアに対する予測インターフェースTM-score。

[EsmFold2Model](/docs/transformers/main/ja/model_doc/esmfold2#transformers.EsmFold2Model)の出力です。すべての信頼度スコアは0〜1のスケールで表され、サンプルごとのテンソルには先頭に`num_diffusion_samples`軸があります。

## EsmFold2TrunkOutput[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput]]

#### transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput]]

```python
transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput(distogram_logits: typing.Optional[torch.Tensor] = None, pair_states: typing.Optional[torch.Tensor] = None, single_inputs: typing.Optional[torch.Tensor] = None, relative_position_encoding: typing.Optional[torch.Tensor] = None, token_bonds_encoding: typing.Optional[torch.Tensor] = None, atom_inputs: transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L1289)

**パラメータ:**

distogram_logits (`torch.FloatTensor`、形状 `(batch_size, num_tokens, num_tokens, distogram_bins)`) : 残基ペアに対する予測された距離分布の logits。

pair_states (`torch.FloatTensor`、shape `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : trunk の最終的なペア表現、fp32。

single_inputs (`torch.FloatTensor`、shape `(batch_size, num_tokens, single_inputs_size)`) : inputs embedder によって構築された、連結された単一入力特徴量。

relative_position_encoding (`torch.FloatTensor`、shape `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : 相対位置ペアエンコーディング。

token_bonds_encoding (`torch.FloatTensor`、shape `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : トークン間の共有結合特徴量（埋め込み）。

atom_inputs (`~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs`、*任意*) : 特徴量化された参照コンフォーマーのアトム入力です。拡散アトムスタックによって再利用されます。

[EsmFold2Model.forward()](/docs/transformers/main/ja/model_doc/esmfold2#transformers.EsmFold2Model.forward) の出力: 折りたたみトランクのペア表現、そこから読み取られるディストグラム、および構造ヘッドと信頼度ヘッドが消費する条件付けテンソルです。トランクのランダムな初期ペア状態を除き、ここにあるすべての値は入力に対して決定的です。

## EsmFold2AtomInputs[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs]]

#### transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs[[transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs]]

```python
transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs(ref_pos: Tensor, ref_charge: Tensor, atom_attention_mask: Tensor, ref_element: Tensor, ref_atom_name_chars: Tensor, ref_space_uid: Tensor, atom_to_token: Tensor)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/esmfold2/modeling_esmfold2.py#L45)

**パラメータ:**

ref_pos : *(batch_size, num_atoms, 3)* 参照コンフォーマーのデカルト座標。

ref_charge : *(batch_size, num_atoms)* 各原子の形式電荷。

atom_attention_mask : *(batch_size, num_atoms)* 有効な原子(*1*)とパディング(*0*)。

ref_element : *(batch_size, num_atoms, max_atomic_number)* one-hot 原子番号。

ref_atom_name_chars : *(batch_size, num_atoms, max_chars, char_vocab_size)* one-hot 化された原子名。

ref_space_uid : *(batch_size, num_atoms)* 原子ごとのグループ ID（そのアトムのトークンインデックス）。

atom_to_token : *(batch_size, num_atoms)* 各原子が属するトークンのインデックス。

アトムスタックが1つの引数で済むようバンドルされた、フィーチャライズされたリファレンスコンフォーマーのアトム入力。

Taken as one argument by [*EsmFold2Model.forward*], holding the raw featurizer tensors. `EsmFold2Model._prepare_features` then one-hot encodes the categorical fields and zeroes the padding, and `forward` swaps those in with *dataclasses.replace*, so every consumer downstream of that point sees the encoded forms documented below. Returned on [*EsmFold2TrunkOutput*] so the diffusion sampler and the confidence head reuse the trunk's featurization rather than redoing it.

A plain dataclass rather than a [*~utils.ModelOutput*]: every field here is required and is read unconditionally downstream, and `ModelOutput` permits at most one required field (the rest must default to `None`), which would turn a missing tensor from a constructor error into a `None` surfacing deep in the atom encoder.

