Transformers documentation
ESMFold2
Эта модель была добавлена в Hugging Face Transformers 19.08.2026.
ESMFold2
Обзор
ESMFold2 — это модель предсказания структуры белка с учётом всех атомов. Она предсказывает 3D-координаты и поостаточные показатели уверенности (pLDDT, PAE, PDE) непосредственно по аминокислотной последовательности, используя модель языка белков ESMC в качестве основы. Архитектура объединяет атомный энкодер со скользящим окном и 3D-вращательными позиционными эмбеддингами, итеративно применяемый попарный блок сворачивания, диффузионную структуру-головку и головку уверенности.
Чекпоинт модели доступен на Hugging Face Hub по адресу biohub/ESMFold2.
Пример использования
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 возвращает необработанные выходные данные (координаты атомов, логиты дистограммы и метрики уверенности) в виде объекта EsmFold2Output, если вам нужны именно они, а не строка PDB. При многократном запуске для одной и той же последовательности вы можете получить слегка отличающиеся предсказания. Если вам нужны строго воспроизводимые структуры, задайте ручной seed.
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. Она не генерирует 3D-координаты — ESMFold2 получает их методом итеративного шумоподавления, а цикл выборки (расписание шума, выравнивание по Кабшу и обновление по ОДУ/СДУ) находится в EsmFold2FoldingMixin вместе с вызовом блока оценки уверенности:
| Метод | Используйте для |
|---|---|
infer_protein_as_pdb(sequence) | строка PDB, полученная непосредственно из аминокислотной последовательности |
infer_protein(sequence) | сырые EsmFold2Output |
fold(**features) | предварительно преобразованные входные данные (то, что вызывает infer_protein) |
forward(**features) | только ствол — дистограмма и парное представление, без выборки |
Вызывайте fold или infer_protein, чтобы получить фактическую структуру. Обращайтесь к forward, если вам нужен только distogram, или если вы хотите самостоятельно управлять диффузионным сэмплером: fold вызывает forward один раз, а затем передаёт его результат в EsmFold2DiffusionModule, чей собственный forward представляет собой один шаг денойзинга.
Более быстрый вывод с использованием объединённого ядра
Основная вычислительная стоимость складывающегося багажа приходится на обновление через умножение треугольных матриц. Передача use_kernels=True в from_pretrained() заменяет его на слиянный Triton-ядро, загружаемое из Hub через библиотеку kernels, при этом предсказания остаются неизменными. Это работает только для инференса и
только на CUDA; на CPU или при отсутствии установленного ядра модель прозрачно переключается на чистую PyTorch-реализацию.
Убедитесь, что модель находится на CUDA-устройстве в момент активации ядра (например, с помощью device_map).
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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int | None = 384pairwise_hidden_size: int | None = 256single_inputs_size: int | None = 451pair_transition_intermediate_size: int | None = 1024sliding_window: int | None = 128chunk_size: int | None = 64num_relative_residx_bins: int | None = 32num_relative_chain_bins: int | None = 2num_loops: int | None = 10num_res_types: int | None = 33max_atomic_number: int | None = 128char_vocab_size: int | None = 64max_chars: int | None = 4max_atoms_per_token: int | None = 23atom_feature_dim: int | None = Nonefolding_trunk_num_hidden_layers: int | None = 24parcae_num_coda_layers: int | None = 2atom_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2AtomEncoderConfig | None = Nonestructure_head: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2StructureHeadConfig | None = Noneconfidence_head: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2ConfidenceHeadConfig | None = Nonemsa_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2MsaEncoderConfig | None = Nonelm_encoder: dict | transformers.models.esmfold2.configuration_esmfold2.EsmFold2LmEncoderConfig | None = Noneesmc_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )
Параметры
- 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) — Размер скользящего окна (расстояние по индексам токенов) для внимания atom-stack, заданный как общая ширина окна, а не радиус. - 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, заряд и маска, а также 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, необязательный) — Конфигурация для SWA-кодера атомов в блоке встраивания входных данных. - structure_head (
EsmFold2StructureHeadConfig, необязательный) — Конфигурация для диффузионного модуля предсказания структуры (содержит подконфигурациюdiffusion_module). - confidence_head (
EsmFold2ConfidenceHeadConfig, необязательный) — Конфигурация для confidence head. - msa_encoder (
EsmFold2MsaEncoderConfig, необязательный) — Конфигурация для MSA-энкодера. - lm_encoder (
EsmFold2LmEncoderConfig, необязательный) — Конфигурация для кодировщика скрытых состояний языковой модели. - esmc_config (EsmcConfig, необязательный) — Конфигурация для встроенного каркаса ESMC.
Это класс конфигурации для хранения настроек модели Esmfold2Model. Он используется для создания модели Esmfold2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации biohub/ESMFold2
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Проверяет соотношения ширины, охватывающие подконфигурации; каждая подконфигурация проверяет свои собственные.
EsmFold2PreTrainedModel
класс transformers.EsmFold2PreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Параметры
- config (PreTrainedConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
EsmFold2Model
класс transformers.EsmFold2Model
< source >( config: EsmFold2Config )
Параметры
- config (EsmFold2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
ESMFold2 — предсказатель структуры белка на уровне всех атомов с встроенным базовым языковым моделированием белков ESMC. Это стандартная опубликованная архитектура ESMFold2, чей ствол представляет собой линейно-рекуррентный стек (внутреннее название — «parcae»).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( token_index: Tensorresidue_index: Tensorasym_id: Tensorsym_id: Tensorentity_id: Tensormol_type: Tensorres_type: Tensortoken_bonds: Tensorattention_mask: Tensoratom_inputs: EsmFold2AtomInputsdeletion_mean: typing.Optional[torch.Tensor] = Nonemsa: typing.Optional[torch.Tensor] = Nonehas_deletion: typing.Optional[torch.Tensor] = Nonedeletion_value: typing.Optional[torch.Tensor] = Nonemsa_attention_mask: typing.Optional[torch.Tensor] = Noneinput_ids: typing.Optional[torch.Tensor] = Nonelm_hidden_states: typing.Optional[torch.Tensor] = Nonenum_loops: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → [~models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput] or tuple(torch.FloatTensor)
Параметры
- 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= ДНК,2= РНК,3= неполимер (лиганд). - 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) — Сырые тензоры атомов референсного конформера, объединённые в один объект: координаты, атомные номера, формальные заряды, закодированные имена атомов, групповые идентификаторы для каждого атома, маска отступов атомов и карта соответствия атомов токенам.
- deletion_mean (torch.Tensor формы (batch_size, num_tokens), необязательный) — Среднее количество удалений MSA в каждом столбце. По умолчанию — нули (MSA отсутствует).
- msa (torch.Tensor формы (batch_size, msa_depth, num_tokens), optional) — Токены типов остатков MSA (строка 0 — последовательность запроса). По умолчанию используется одно-последовательная MSA.
- has_deletion (torch.Tensor формы (batch_size, msa_depth, num_tokens), optional) — Булевый флаг, отмечающий позиции 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), optional) — Предварительно вычисленные скрытые состояния каркаса ESMC, по одному на каждый слой каркаса, плюс эмбеддинги. Если переданы, каркас не запускается, а input_ids не используется.
- num_loops (int, необязательный) — Количество циклов уточнения ствола. По умолчанию 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 формы (batch_size, num_tokens, num_tokens, distogram_bins)) — Предсказанные логиты распределения расстояний по парам остатков.
- pair_states (torch.FloatTensor формы (batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — итоговое парное представление ствольной части, в fp32.
- single_inputs (torch.FloatTensor формы (batch_size, num_tokens, single_inputs_size)) — Сконкатенированные одновходовые признаки, сформированные встраивателем входных данных.
- relative_position_encoding (torch.FloatTensor формы (batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — Кодирование пар относительных позиций.
- token_bonds_encoding (torch.FloatTensor формы (batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — Встроенное представление ковалентных связей между токенами.
- atom_inputs (~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs, optional) — Векторизованные атомные входы референсного конформера, повторно используемые диффузионным атомным стеком.
fold
< source >( attention_mask: Tensorasym_id: Tensormol_type: Tensordistogram_atom_idx: Tensornum_diffusion_samples: int | None = Nonenum_sampling_steps: int | None = None**trunk_kwargs )
Predict a structure end-to-end from featurized inputs: run the trunk ([EsmFold2Model.forward], which documents the feature arguments), sample coordinates from the diffusion structure head, and score them with the confidence head.
Здесь указаны только те аргументы, которые нужны сэмплеру и confidence head; остальные передаются в ствол без изменений, поэтому fold принимает те же аргументы, что и forward.
attention_mask (torch.Tensor формы (batch_size, num_tokens)):
Маска, отмечающая валидные токены (1) и заполнители (0). Также передается в ствол.
asym_id (torch.Tensor формы (batch_size, num_tokens)):
ID асимметричной единицы (цепи) для каждого токена. Также передается в ствол.
mol_type (torch.Tensor формы (batch_size, num_tokens)):
Код типа молекулы для каждого токена: 0 = белок, 1 = ДНК, 2 = РНК, 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], где они описаны.
Сформируйте признаки для sequence и сверните их. forward_kwargs передаются в [~EsmFold2Model.fold].
Свернуть sequence и отобразить предсказание в виде строки PDB.
sample_idx определяет, какой диффузионный образец будет отрисован; по умолчанию выбирается образец с наивысшим рангом.
EsmFold2Output
класс transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output
< source >( distogram_logits: typing.Optional[torch.Tensor] = Nonesample_atom_coords: typing.Optional[torch.Tensor] = Noneplddt_logits: typing.Optional[torch.Tensor] = Noneplddt: typing.Optional[torch.Tensor] = Noneplddt_per_atom: typing.Optional[torch.Tensor] = Noneplddt_ca: typing.Optional[torch.Tensor] = Nonecomplex_plddt: typing.Optional[torch.Tensor] = Nonecomplex_iplddt: typing.Optional[torch.Tensor] = Nonepae_logits: typing.Optional[torch.Tensor] = Nonepae: typing.Optional[torch.Tensor] = Nonepde_logits: typing.Optional[torch.Tensor] = Nonepde: typing.Optional[torch.Tensor] = Noneresolved_logits: typing.Optional[torch.Tensor] = Noneptm: typing.Optional[torch.Tensor] = Noneiptm: typing.Optional[torch.Tensor] = Nonepair_chains_iptm: typing.Optional[torch.Tensor] = None )
Параметры
- distogram_logits (
torch.FloatTensorформы(batch_size, num_tokens, num_tokens, distogram_bins)) — Предсказанные логиты распределения расстояний по парам остатков (не зависит от RNG; без диффузионного сэмплирования). - sample_atom_coords (
torch.FloatTensorформы(num_diffusion_samples, num_atoms, 3)) — Предсказанные декартовы координаты всех атомов для каждого диффузионного сэмпла. - plddt_logits (
torch.FloatTensorформы(num_diffusion_samples, num_atoms, num_plddt_bins)) — Логиты бинов pLDDT для каждого атома. - plddt (
torch.FloatTensorформы(num_diffusion_samples, num_tokens)) — Предсказанная уверенность lDDT для каждого остатка. - plddt_per_atom (
torch.FloatTensorформы(num_diffusion_samples, num_atoms)) — Предсказанная уверенность lDDT для каждого атома. - plddt_ca (
torch.FloatTensorформы(num_diffusion_samples, num_tokens)) — Предсказанный lDDT для репрезентативного (Cα) атома каждого токена. - complex_plddt (
torch.FloatTensorформы(num_diffusion_samples,)) — Среднее значение pLDDT по всем атомам комплекса. - complex_iplddt (
torch.FloatTensorформы(num_diffusion_samples,)) — Взвешенный по интерфейсу комплексный pLDDT. - pae_logits (
torch.FloatTensorформы(num_diffusion_samples, num_tokens, num_tokens, num_pae_bins)) — Логиты бинализированной ошибки выравнивания (Predicted-Aligned-Error). - pae (
torch.FloatTensorформы(num_diffusion_samples, num_tokens, num_tokens)) — Ожидаемая предсказанная согласованная ошибка (Å) для каждой пары остатков. - pde_logits (
torch.FloatTensorформы(num_diffusion_samples, num_tokens, num_tokens, num_pde_bins)) — Логиты бина ошибок предсказанного расстояния. - pde (
torch.FloatTensorформы(num_diffusion_samples, num_tokens, num_tokens)) — Ожидаемая ошибка предсказания расстояния (Å) для каждой пары остатков. - resolved_logits (
torch.FloatTensorформы(num_diffusion_samples, num_atoms, 2)) — Логиты для каждого атома, указывающие на разрешённое/неразрешённое состояние. - ptm (
torch.FloatTensorформы(num_diffusion_samples,)) — Прогнозируемый TM-score для каждой выборки. - iptm (
torch.FloatTensorформы(num_diffusion_samples,)) — Прогнозируемый TM-score интерфейса для каждого сэмпла. - pair_chains_iptm (
torch.FloatTensorформы(num_diffusion_samples, num_chains, num_chains)) — Предсказанный TM-score интерфейса для каждой упорядоченной пары цепей.
Вывод EsmFold2Model. Все оценки уверенности находятся в диапазоне от 0 до 1; тензоры для каждого примера имеют ведущую ось num_diffusion_samples.
EsmFold2TrunkOutput
класс transformers.models.esmfold2.modeling_esmfold2.EsmFold2TrunkOutput
< source >( distogram_logits: typing.Optional[torch.Tensor] = Nonepair_states: typing.Optional[torch.Tensor] = Nonesingle_inputs: typing.Optional[torch.Tensor] = Nonerelative_position_encoding: typing.Optional[torch.Tensor] = Nonetoken_bonds_encoding: typing.Optional[torch.Tensor] = Noneatom_inputs: transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs | None = None )
Параметры
- distogram_logits (
torch.FloatTensorформы(batch_size, num_tokens, num_tokens, distogram_bins)) — Предсказанные логиты распределения расстояний для пар остатков. - pair_states (
torch.FloatTensorформы(batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — Итоговое представление пар из ствольной части, в fp32. - single_inputs (
torch.FloatTensorформы(batch_size, num_tokens, single_inputs_size)) — Сконкатенированные одновходные признаки, сформированные встраивателем входных данных. - relative_position_encoding (
torch.FloatTensorформы(batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — Кодирование пар относительных позиций. - token_bonds_encoding (
torch.FloatTensorформы(batch_size, num_tokens, num_tokens, pairwise_hidden_size)) — Встроенная характеристика ковалентных связей между токенами. - atom_inputs (
~models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs, optional) — Входные данные атомов референсного конформера, преобразованные в признаки и переиспользуемые диффузионным атомным стеком.
Вывод EsmFold2Model.forward(): пара-представление ствольной части сворачивания, дистограмма, считанная с него, и тензоры условий, которые потребляют заголовки структуры и уверенности. Всё здесь детерминировано при заданных входных данных, за исключением случайного начального состояния пар в ствольной части.
EsmFold2AtomInputs
класс transformers.models.esmfold2.modeling_esmfold2.EsmFold2AtomInputs
< source >( ref_pos: Tensorref_charge: Tensoratom_attention_mask: Tensorref_element: Tensorref_atom_name_chars: Tensorref_space_uid: Tensoratom_to_token: Tensor )
Параметры
- 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 кодирование категориальных полей и обнуляет padding, а forward подставляет их с помощью dataclasses.replace, поэтому каждый потребитель данных после этой точки видит закодированные формы, описанные ниже. Возвращается в [EsmFold2TrunkOutput], чтобы диффузионный сэмплер и head уверенности повторно использовали фичерайзацию trunk, а не выполняли её заново.
Обычный dataclass, а не [~utils.ModelOutput]: каждое поле здесь обязательно и безоговорочно читается на нижних уровнях, тогда как ModelOutput допускает не более одного обязательного поля (остальные должны иметь значение по умолчанию None), что превратило бы отсутствие тензора из ошибки конструктора в None, проявляющееся глубоко внутри атомного энкодера.