Source code for gefest.tools.samplers.sampler

from abc import ABCMeta, abstractmethod
from typing import Any, Callable

from gefest.core.geometry import Structure
from gefest.core.geometry.domain import Domain


[docs] class Sampler(metaclass=ABCMeta): """Interface for samplers.""" def __init__( self, samples_generator: Callable[[Any], Structure], domain: Domain, ) -> None: self.samples_generator = samples_generator self.domain = domain
[docs] def __call__( self, n_samples: int, **kwargs, ) -> list[Structure]: """Simplifies usage of samplers. Args: n_samples (int): Number of samples to generate. Returns: list[Structure]: Generated samples. """ return self.sample(n_samples)
[docs] @abstractmethod def sample(self, n_samples: int) -> list[Structure]: """Must implement sampling logic. Args: n_samples (int): Number of samples to generate. Returns: list[Structure]: Generated samples. """ ...