Source code for suboptimumg.sweep.sweeper_factory
from collections.abc import Callable
from ..compsim.models import CompetitionData
from .models import SweepParamConfig
from .sweeper_1d import Sweeper1D
from .sweeper_2d import Sweeper2D
[docs]
def create_sweeper(
comp_data: CompetitionData,
var_1: SweepParamConfig,
var_2: SweepParamConfig | None = None,
dependencies: dict[str, Callable] = {},
) -> Sweeper1D | Sweeper2D:
"""
Create the appropriate sweeper based on the number of variables.
Parameters
----------
comp_data : CompetitionData
Competition configuration data model
var_1 : SweepParamConfig
First sweep variable configuration
var_2 : SweepParamConfig, optional
Second sweep variable configuration. If omitted, a 1D sweeper is created.
dependencies : dict, optional
Mapping of dependent parameter names to functions computing their value
from the sweep variable(s)
Returns
-------
Sweeper1D or Sweeper2D
A 1D sweeper if `var_2` is None, otherwise a 2D sweeper
"""
if var_2 is None:
return Sweeper1D(comp_data, var_1, dependencies)
return Sweeper2D(comp_data, var_1, var_2, dependencies)