# ESMFold2

## نظرة عامة

ESMFold2 هو نموذج للتنبؤ بهيكل البروتين على مستوى كل ذرة. يتنبأ بإحداثيات ثلاثية الأبعاد وثقة لكل بقية (pLDDT، PAE، PDE) مباشرةً من تسلسل الأحماض الأمينية، مستخدمًا نموذج اللغة البروتينية [ESMC](./esmc) كهيكل أساسي له. يجمع التصميم بين مشفر ذرات بنافذة منزلقة مع تضمينات موضع دوّارة ثلاثية الأبعاد، وجذع طي زوجي يُطبَّق بشكل متكرر، ورأس هيكل قائم على الانتشار، ورأس ثقة.

نقطة التفتيش للنموذج متاحة على 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` تُرجع المخرجات الخام (إحداثيات الذرات، قيم distogram logits، ومؤشرات الثقة) على شكل [EsmFold2Output](/docs/transformers/main/ar/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output) إذا كنت بحاجة إليها بدلاً من نص PDB. قد تحصل على تنبؤات مختلفة قليلاً إذا قمت بتشغيل نفس التسلسل عدة مرات. اضبط بذرة يدوية إذا كنت ترغب في هياكل قابلة للتكرار بدقة.

يرسم ESMFold2 `config.structure_head.num_diffusion_samples` هياكل لكل طيّ. يعرض `infer_protein_as_pdb` الهيكل الأعلى ترتيبًا (أعلى pTM)؛ مرّر `sample_idx` لاختيار عينة محددة بدلاً من ذلك. يحمل ملف PDB قيمة pLDDT لكل متبقٍ في عمود b-factor، على نفس المقياس من 0 إلى 1 كإخراج `plddt`.

### `forward` مقابل `fold`

يتكون التنبؤ بالبنية من جزأين. `EsmFold2Model.forward` هو الجزء الأول: فهو يشغّل جذع الطي على المدخلات المُصنَّفة ويعيد تمثيل الأزواج المُحسَّن بالإضافة إلى مخطط المسافات، على شكل [EsmFold2TrunkOutput](/docs/transformers/main/ar/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput). إنه لا ينتج إحداثيات ثلاثية الأبعاد — حيث تحصل ESMFold2 عليها عن طريق إزالة الضوضاء التكرارية، وتقع حلقة العينة هذه (جدول الضوضاء، ومحاذاة Kabsch، وتحديث ODE/SDE) في `EsmFold2FoldingMixin` إلى جانب استدعاء رأس الثقة:

| الطريقة | استخدمه ل |
| --- | --- |
| `infer_protein_as_pdb(sequence)` | سلسلة PDB، مباشرة من تسلسل الأحماض الأمينية |
| `infer_protein(sequence)` | [EsmFold2Output](/docs/transformers/main/ar/model_doc/esmfold2#transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output) الخام |
| `fold(**features)` | مدخلات مُسبقة المعالجة (ما يسميه `infer_protein`) |
| `forward(**features)` | الجذع وحده — تمثيل التوزيع والزوج، دون أي أخذ عينات |

استدعِ `fold` أو `infer_protein` للحصول على بنية فعلية. لجأ إلى `forward` عندما تحتاج فقط إلى distogram، أو عندما ترغب في تشغيل عينة الانتشار بنفسك: يستدعي `fold` `forward` مرة واحدة ثم يمرر مخرجه إلى `EsmFold2DiffusionModule`، حيث أن `forward` الخاص به هو خطوة إزالة الضوضاء الوحيدة.

## استدلال أسرع باستخدام نواة مدمجة

التكلفة السائدة في صندوق الطيّ هي تحديث ضرب المثلثات. عند تمرير `use_kernels=True` إلى [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) يتم استبداله بنواة Triton مدمجة تُحمَّل من Hub عبر مكتبة [`kernels`](https://github.com/huggingface/kernels)، دون تغيير التنبؤ. هذا الخيار مخصص للاستدلال فقط ويعمل على 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` بالإضافة إلى متغيّري one-hot لنوعَي البقايا والقيمة القياسية للملف.

pair_transition_intermediate_size (`int`، *اختياري*، القيمة الافتراضية 1024) : عرض SwiGLU للانتقالات بين تدفقي الزوج.

sliding_window (`int`, *اختياري*، القيمة الافتراضية 128) : حجم نافذة الانزلاق (المسافة بمؤشر الرمز) لانتباه مكدس الذرّات، كعرض إجمالي للنافذة وليس كنصف قطر.

chunk_size (`int`، *اختياري*، القيمة الافتراضية 64) : حجم المقطع لعمليات التدفق الثنائي/MSA التي تستهلك ذاكرة كبيرة. تعطيل التقطيع عند تعيين `None`.

num_relative_residx_bins (`int`، *اختياري*، القيمة الافتراضية 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) : عدد الأحرف لكل اسم ذرة مُرمّز.

max_atoms_per_token (`int`، *اختياري*، القيمة الافتراضية 23) : الحد الأقصى لعدد الذرات لكل رمز.

atom_feature_dim (`int`, *اختياري*) : عرض ميزات الذرّة: الإحداثيات xyz، والشحنة، والقناع، بالإضافة إلى الترميز الأحادي للعنصر وحروف اسم الذرّة. يُشتقّ من `max_atomic_number` و`char_vocab_size` و`max_chars` إذا لم تُضبط.

folding_trunk_num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية 24) : عدد كتل تحديث الأزواج في جذع الطي.

parcae_num_coda_layers (`int`، *اختياري*، القيمة الافتراضية 2) : عدد كتل تحديث الأزواج في خاتمة parcae.

atom_encoder (`EsmFold2AtomEncoderConfig`، *اختياري*) : إعدادات مُشفّر الذرّات SWA الخاص بمضمّن المدخلات.

structure_head (`EsmFold2StructureHeadConfig`، *اختياري*) : إعدادات رأس التنبؤ بالبنية الانتشاري (يحتوي على إعداد فرعي `diffusion_module`).

confidence_head (`EsmFold2ConfidenceHeadConfig`، *اختياري*) : إعدادات رأس الثقة.

msa_encoder (`EsmFold2MsaEncoderConfig`، *اختياري*) : إعدادات لمُشفِّر MSA.

lm_encoder (`EsmFold2LmEncoderConfig`، *اختياري*) : إعدادات مُشفِّر حالة النموذج اللغوي المخفية.

esmc_config ([EsmcConfig](/docs/transformers/main/ar/model_doc/esmc#transformers.EsmcConfig)، *اختياري*) : إعدادات لجذع ESMC المدمج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Esmfold2Model. تُستخدم لاستحداث نموذج Esmfold2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [biohub/ESMFold2](https://huggingface.co/biohub/ESMFold2)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/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/ar/main_classes/configuration#transformers.PreTrainedConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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/ar/model_doc/esmfold2#transformers.EsmFold2Config)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

ESMFold2 متنبئ ببنية البروتين على مستوى جميع الذرات، يتضمن جذعًا لنموذج لغة البروتين ESMC. هذه هي بنية ESMFold2 القياسية المُصدَّرة، حيث يتكون جذعها من مكدس تكراري خطي (يُشار إليه داخليًا باسم "parcae").

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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* من الشكل *(batch_size, num_tokens)*) : فهرس موضعي لكل رمز ضمن المعقد الكامل؛ يغذي ترميز الموضع النسبي.

residue_index (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : فهرس البقايا داخل كل سلسلة؛ يغذي ترميز الموضع النسبي.

asym_id (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : معرّف الوحدة غير المتماثلة (السلسلة) لكل رمز.

sym_id (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : معرّف نسخة التناظر الذي يميّز السلاسل المتطابقة في متجانس.

entity_id (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : معرفات الكيانات التي تجمع الرموز التي تنتمي إلى نفس الكيان الجزيئي.

mol_type (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : رمز نوع الجزيء لكل رمز: `0` = بروتين، `1` = DNA، `2` = RNA، `3` = غير بوليمر (مركب).

res_type (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : فهرس نوع البقايا (هوية الأحماض الأمينية) لكل رمز.

token_bonds (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_tokens, 1)*) : ميزة الرابطة التساهمية بين الرموز (inter-token) على مستوى الأزواج.

attention_mask (*torch.Tensor* من الشكل *(batch_size, num_tokens)*) : قناع يحدد الرموز الصالحة (`1`) مقابل الحشو (`0`). يجب أن تكون المدخلات محشوة من اليمين.

atom_inputs (*~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs*) : تينسورات الذرات الخام للمُشكِّل المرجعي، مجمّعةً: المواضع، الأرقام الذرية، الشحنات الرسمية، أسماء الذرات المُرمَّزة، معرّفات المجموعات لكل ذرة، قناع الحشو للذرات، وخريطة الذرة->الرمز.

deletion_mean (*torch.Tensor* من الشكل *(batch_size, num_tokens)*، *اختياري*) : متوسط عدد حذف MSA لكل عمود. القيمة الافتراضية هي الأصفار (لا يوجد MSA).

msa (*torch.Tensor* من الشكل *(batch_size, msa_depth, num_tokens)*، *اختياري*) : رموز نوع البقايا في MSA (الصف 0 هو تسلسل الاستعلام). الافتراضي هو MSA لتسلسل واحد.

has_deletion (*torch.Tensor* من الشكل *(batch_size, msa_depth, num_tokens)*، *اختياري*) : علم منطقي يحدد مواضع تسلسل المحاذاة متعددة التسلسلات (MSA) التي تسبقها عملية حذف.

deletion_value (*torch.Tensor* من الشكل *(batch_size, msa_depth, num_tokens)*، *اختياري*) : عدد عمليات الحذف في MSA لكل موضع.

msa_attention_mask (*torch.Tensor* من الشكل *(batch_size, msa_depth, num_tokens)*، *اختياري*) : قناع صلاحية لصفوف/أعمدة MSA.

input_ids (*torch.Tensor* من الشكل *(batch_size, num_tokens)*، *اختياري*) : معرّفات الرموز من مفردات ESMC للتسلسل. تُغذّى إلى هيكل ESMC المدمج لإنتاج *lm_hidden_states* عندما لا تُمرَّر هذه الحالة مباشرةً؛ وتُتجاهل عندما يُعطى *lm_hidden_states*.

lm_hidden_states (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_esmc_layers + 1, esmc_hidden_size)*، *اختياري*) : حالات خفية محسوبة مسبقًا لهيكل ESMC، حالة واحدة لكل طبقة من طبقات الهيكل بالإضافة إلى التضمينات. عند توفيرها، لا يتم تشغيل الهيكل ولا يُستخدم *input_ids*.

num_loops (*int*، *اختياري*) : عدد حلقات تحسين الجذع. القيمة الافتراضية هي *config.num_loops*.

**يعيد:** [*~models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput*] أو *tuple(torch.Tensor)*

*~models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput* أو مجموعة مرتبة من *torch.Tensor* (إذا تم تمرير *return_dict=False* أو عندما يكون *config.return_dict=False*) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([*EsmFold2Config*]) والمدخلات.

شغّل جذع الطي: قسّم المدخلات إلى ميزات، ثم غمّضها في تمثيل زوجي، وحسّنه عبر *num_loops* من تكرارات إعادة التدوير، واقرأ مخطط المسافات. هذا هو الجزء الحتمي من التنبؤ بالبنية؛ أما عيّّان الانتشار الذي يحوّل التمثيل الزوجي المُعاد إلى إحداثيات ثلاثية الأبعاد فيوجد في *EsmFold2FoldingMixin* — استدعِ [*~EsmFold2Model.fold*] أو [*~EsmFold2Model.infer_protein*] للحصول على تنبؤ شامل من البداية إلى النهاية.

- **distogram_logits** (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_tokens, distogram_bins)*) -- قيم اللوجيت المتوقعة لتوزيع المسافات على أزواج البقايا.
- **pair_states** (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- تمثيل الأزواج النهائي للجذع، بدقة fp32.
- **single_inputs** (*torch.Tensor* من الشكل *(batch_size, num_tokens, single_inputs_size)*) -- ميزات الإدخال المفرد المدمجة التي يبنيها مُضمّن المدخلات.
- **relative_position_encoding** (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- ترميز أزواج الموضع النسبي.
- **token_bonds_encoding** (*torch.Tensor* من الشكل *(batch_size, num_tokens, num_tokens, pairwise_hidden_size)*) -- ميزة الترابط التساهمي بين الرموز المضمّنة.
- **atom_inputs** (*~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs*، *اختياري*) -- مدخلات الذرات المُصنَّفة للمُشكِّل المرجعي، والتي يعيد استخدامها مكدس ذرات الانتشار.

#### طي[[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*، الذي يوثّق حُجج الميزات)، ثم عيّن الإحداثيات من رأس البنية الانتشاري، وقيّمها برأس الثقة.

يُذكر هنا فقط الحُجج التي يحتاجها المُعيّن ورأس الثقة؛ أما البقية فتُمرَّر إلى الجذع دون تغيير، لذا يتقبّل `fold` نفس الحُجج التي يتقبّلها `forward`.

attention_mask (*torch.Tensor* من الشكل *(batch_size, num_tokens)*): قناع يحدد الرموز الصالحة (`1`) مقابل الحشو (`0`). يُمرَّر أيضًا إلى الجذع. asym_id (*torch.Tensor* من الشكل *(batch_size, num_tokens)*): معرّف الوحدة غير المتماثلة (السلسلة) لكل رمز. يُمرَّر أيضًا إلى الجذع. mol_type (*torch.Tensor* من الشكل *(batch_size, num_tokens)*): رمز نوع الجزيء لكل رمز: `0` = بروتين، `1` = DNA، `2` = RNA، `3` = غير بوليمر (مركب). يُمرَّر أيضًا إلى الجذع. distogram_atom_idx (*torch.Tensor* من الشكل *(batch_size, num_tokens)*): فهرس الذرة الممثلة (Cβ، أو Cα للجليسين) لكل رمز. يُستخدم بواسطة رأس الثقة؛ لا يحتاج الجذع إليه. num_diffusion_samples (*int*، *اختياري*): عدد عينات البنية المتوازية التي سيتم سحبها؛ يعيد رأس الثقة التشغيل مرة واحدة لكل عينة. القيمة الافتراضية هي *config.structure_head.num_diffusion_samples*. num_sampling_steps (*int*، *اختياري*): عدد خطوات أخذ العينات الانتشارية. القيمة الافتراضية هي *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.Tensor` من الشكل `(batch_size, num_tokens, num_tokens, distogram_bins)`) : قيم اللوجيت المتوقعة لتوزيع المسافات على أزواج البقايا (غير معتمدة على مولد الأرقام العشوائية؛ لا تتضمن أخذ عينات بالانتشار).

sample_atom_coords (`torch.Tensor` من الشكل `(num_diffusion_samples, num_atoms, 3)`) : الإحداثيات الديكارتية لجميع الذرات المتوقعة لكل عينة انتشار.

plddt_logits (`torch.Tensor` من الشكل `(num_diffusion_samples, num_atoms, num_plddt_bins)`) : قيم اللوجيت (logits) لفئات pLDDT لكل ذرة.

plddt (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens)`) : ثقة lDDT المتوقعة لكل بقايا.

plddt_per_atom (`torch.Tensor` من الشكل `(num_diffusion_samples, num_atoms)`) : ثقة lDDT المتوقعة لكل ذرة.

plddt_ca (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens)`) : lDDT المتوقع عند الذرّة الممثلة (Cα) لكل رمز.

complex_plddt (`torch.Tensor` من الشكل `(num_diffusion_samples,)`) : متوسط pLDDT لجميع الذرات في المركب.

complex_iplddt (`torch.Tensor` من الشكل `(num_diffusion_samples,)`) : pLDDT المركّب المرجّح بوزن الواجهة.

pae_logits (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens, num_tokens, num_pae_bins)`) : قيم اللوجيت (logits) للتصنيفات (bins) الخاصة بخطأ المحاذاة المتوقع (Predicted-aligned-error).

pae (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens, num_tokens)`) : الخطأ المحاذاة المتوقع (Å) لكل زوج من البقايا.

pde_logits (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens, num_tokens, num_pde_bins)`) : قيم اللوجيت (logits) لفئات خطأ المسافة المتوقعة.

pde (`torch.Tensor` من الشكل `(num_diffusion_samples, num_tokens, num_tokens)`) : خطأ المسافة المتوقع (Å) لكل زوج من البقايا.

resolved_logits (`torch.Tensor` من الشكل `(num_diffusion_samples, num_atoms, 2)`) : قيم اللوجيت (logits) المحلولة/غير المحلولة لكل ذرة.

ptm (`torch.Tensor` من الشكل `(num_diffusion_samples,)`) : درجة TM المتوقعة لكل عينة.

iptm (`torch.Tensor` من الشكل `(num_diffusion_samples,)`) : درجة TM للواجهة المتوقعة لكل عينة.

pair_chains_iptm (`torch.Tensor` من الشكل `(num_diffusion_samples, num_chains, num_chains)`) : درجة TM-score المتوقعة للواجهة لكل زوج من السلاسل المرتبة.

مخرجات [EsmFold2Model](/docs/transformers/main/ar/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.Tensor` من الشكل `(batch_size, num_tokens, num_tokens, distogram_bins)`) : قيم اللوجيت المتوقعة لتوزيع المسافات على أزواج البقايا.

pair_states (`torch.Tensor` من الشكل `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : تمثيل الأزواج النهائي للجذع، بصيغة fp32.

single_inputs (`torch.Tensor` من الشكل `(batch_size, num_tokens, single_inputs_size)`) : ميزات الإدخال المفردة المدمجة التي يبنيها مُضمِّن المدخلات.

relative_position_encoding (`torch.Tensor` من الشكل `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : ترميز أزواج الموضع النسبي.

token_bonds_encoding (`torch.Tensor` من الشكل `(batch_size, num_tokens, num_tokens, pairwise_hidden_size)`) : ميزة الترابط التساهمي بين الرموز المضمنة.

atom_inputs (`~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs`، *اختياري*) : مدخلات الذرات المُخصَّصة للمُشكِّل المرجعي، والتي يعيد استخدامها مكدس الذرات الانتشاري.

مخرجات [EsmFold2Model.forward()](/docs/transformers/main/ar/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)* معرّف المجموعة لكل ذرة (مؤشر الرمز الخاص بالذرة).

atom_to_token : *(batch_size, num_atoms)* فهرس الرمز الذي ينتمي إليه كل ذرة.

مدخلات ذرات مرجعية-مطابقة مُعرَّفة، مجمَّعة بحيث تستقبل مكدس الذرات حجةً واحدة.

تُؤخذ كحجة واحدة بواسطة [*EsmFold2Model.forward*]، حيث تحتفظ بموترات المُخصِّص الخام. ثم يقوم `EsmFold2Model._prepare_features` بتشفير الحقول التصنيفية بطريقة one-hot وتصفير الحشو، بينما يستبدل `forward` تلك الحقول باستخدام *dataclasses.replace*، بحيث يرى كل مستهلك تالٍ لذلك النقطة الأشكال المشفّرة الموثقة أدناه. تُعاد في [*EsmFold2TrunkOutput*] حتى يعيد مُعيّن الانتشار ورأس الثقة استخدام تمثيل الجذع بدلاً من إعادة إنجازه.

فئة بيانات بسيطة بدلاً من *~utils.ModelOutput*: كل حقل هنا إلزامي ويُقرأ بشكل غير مشروط في المراحل اللاحقة، بينما يسمح `ModelOutput` بحقل إلزامي واحد كحد أقصى (يجب أن تكون القيمة الافتراضية لبقية الحقول `None`)، مما سيحوّل غياب المصفوفة من خطأ في منشئ الكائن إلى `None` يظهر في أعماق مُشفِّر الذرّة.

