| from abc import ABC, abstractmethod | |
| from dataclasses import dataclass | |
| from typing import List, Optional | |
| from numpy.random import Generator | |
| from boltzgen.data.data import Record | |
| class Sample: | |
| """A sample with optional chain and interface IDs. | |
| Attributes | |
| ---------- | |
| record : Record | |
| The record. | |
| chain_id : Optional[int] | |
| The chain ID. | |
| interface_id : Optional[int] | |
| The interface ID. | |
| """ | |
| record_id: str | |
| chain_id: Optional[int] = None | |
| interface_id: Optional[int] = None | |
| weight: Optional[float] = None | |
| class Sampler(ABC): | |
| """Abstract base class for samplers.""" | |
| def sample(self, records: List[Record]) -> list[Sample]: | |
| """Sample a structure from the dataset infinitely. | |
| Parameters | |
| ---------- | |
| records : List[Record] | |
| The records to sample from. | |
| Returns | |
| ------- | |
| List[Sample] | |
| The samples. | |
| """ | |
| raise NotImplementedError | |