Transformers documentation

ESMFold2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была добавлена в 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

< >

( 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.

validate_architecture

< >

( )

Проверяет соотношения ширины, охватывающие подконфигурации; каждая подконфигурация проверяет свои собственные.

EsmFold2PreTrainedModel

класс transformers.EsmFold2PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Параметры

  • config (PreTrainedConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

EsmFold2Model

класс transformers.EsmFold2Model

< >

( config: EsmFold2Config )

Параметры

  • config (EsmFold2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

ESMFold2 — предсказатель структуры белка на уровне всех атомов с встроенным базовым языковым моделированием белков ESMC. Это стандартная опубликованная архитектура ESMFold2, чей ствол представляет собой линейно-рекуррентный стек (внутреннее название — «parcae»).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( 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

< >

( 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], где они описаны.

infer_protein

< >

( sequence: str**forward_kwargs )

Сформируйте признаки для sequence и сверните их. forward_kwargs передаются в [~EsmFold2Model.fold].

infer_protein_as_pdb

< >

( sequence: strsample_idx: int | None = None**forward_kwargs )

Свернуть sequence и отобразить предсказание в виде строки PDB.

sample_idx определяет, какой диффузионный образец будет отрисован; по умолчанию выбирается образец с наивысшим рангом.

EsmFold2Output

класс transformers.models.esmfold2.modeling_esmfold2.EsmFold2Output

< >

( 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

< >

( 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

< >

( 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, проявляющееся глубоко внутри атомного энкодера.

Update on GitHub