|
|
|
|
| """Interface and implementations for fetching templates data.""" |
|
|
| from collections.abc import Mapping |
| import datetime |
| from typing import Any, Protocol, TypeAlias |
|
|
|
|
| TemplateFeatures: TypeAlias = Mapping[str, Any] |
|
|
|
|
| class TemplateFeatureProvider(Protocol): |
| """Interface for providing Template Features.""" |
|
|
| def __call__( |
| self, |
| sequence: str, |
| release_date: datetime.date | None, |
| include_ligand_features: bool = True, |
| ) -> TemplateFeatures: |
| """Retrieve template features for the given sequence and release_date. |
| |
| Args: |
| sequence: The residue sequence of the query. |
| release_date: The release_date of the template query, this is used to |
| filter templates for training, ensuring that they do not leak structure |
| information from the future. |
| include_ligand_features: Whether to include ligand features. |
| |
| Returns: |
| Template features: A mapping of template feature labels to features, which |
| may be numpy arrays, bytes objects, or for the special case of label |
| `ligand_features`, a nested feature map of labels to numpy arrays. |
| |
| Raises: |
| TemplateRetrievalError if the template features were not found. |
| """ |
|
|