Source code for openprotein.fold.esmfold
"""Community-based ESMFold model."""
from collections.abc import Sequence
from openprotein.base import APISession
from openprotein.common import ModelMetadata
from . import api
from .future import FoldResultFuture
from .models import FoldModel
[docs]
class ESMFoldModel(FoldModel):
"""
Class providing inference endpoints for Facebook's ESMFold structure prediction models.
"""
model_id: str = "esmfold"
[docs]
def __init__(
self,
session: APISession,
model_id: str,
metadata: ModelMetadata | None = None,
):
super().__init__(session=session, model_id=model_id, metadata=metadata)
[docs]
def fold(
self, sequences: Sequence[bytes | str], num_recycles: int | None = None
) -> FoldResultFuture:
"""
Fold sequences using this model.
Parameters
----------
sequences : Sequence[bytes | str]
sequences to fold
num_recycles : int | None
number of times to recycle models
Returns
-------
FoldResultFuture
"""
result = FoldResultFuture.create(
session=self.session,
job=api.fold_models_post(
session=self.session,
model_id=self.model_id,
sequences=sequences,
num_recycles=num_recycles,
),
)
assert isinstance(result, FoldResultFuture)
return result