aepsych.generators¶
Submodules¶
aepsych.generators.base module¶
- class aepsych.generators.base.AEPsychGenerator[source]¶
Bases:
abc.ABC
,Generic
[aepsych.generators.base.AEPsychModelType
]Abstract base class for generators, which are responsible for generating new points to sample.
- Return type
None
- baseline_requiring_acqfs = [<class 'botorch.acquisition.monte_carlo.qNoisyExpectedImprovement'>, <class 'botorch.acquisition.analytic.NoisyExpectedImprovement'>]¶
- abstract gen(num_points, model)[source]¶
- Parameters
num_points (int) –
model (aepsych.generators.base.AEPsychModelType) –
- Return type
numpy.ndarray
- abstract classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.epsilon_greedy_generator module¶
- class aepsych.generators.epsilon_greedy_generator.EpsilonGreedyGenerator(subgenerator, epsilon=0.1)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
- Parameters
subgenerator (aepsych.generators.base.AEPsychGenerator) –
epsilon (float) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- gen(num_points, model)[source]¶
- Parameters
num_points (int) –
model (aepsych.models.base.ModelProtocol) –
aepsych.generators.manual_generator module¶
- class aepsych.generators.manual_generator.ManualGenerator(lb, ub, points, dim=None, shuffle=True)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points from the Sobol Sequence.
Iniatialize SobolGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param points: The points that will be generated. :type points: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional :param shuffle: Whether or not to shuffle the order of the points. True by default. :type shuffle: bool
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
points (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
shuffle (bool) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by quasi-randomly sampling the parameter space. :param num_points: Number of points to query. :type num_points: int
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.monotonic_rejection_generator module¶
- aepsych.generators.monotonic_rejection_generator.default_loss_constraint_fun(loss, candidates)[source]¶
Identity transform for constrained optimization.
This simply returns loss as-is. Write your own versions of this for constrained optimization by e.g. interior point method.
- Parameters
loss (torch.Tensor) – Value of loss at candidate points.
candidates (torch.Tensor) – Location of candidate points.
- Returns
New loss (unchanged)
- Return type
torch.Tensor
- class aepsych.generators.monotonic_rejection_generator.MonotonicRejectionGenerator(acqf, acqf_kwargs=None, model_gen_options=None, explore_features=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
[aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP
]Generator specifically to be used with MonotonicRejectionGP, which generates new points to sample by minimizing an acquisition function through stochastic gradient descent.
Initialize MonotonicRejectionGenerator. :param acqf: Acquisition function to use. :type acqf: AcquisitionFunction :param acqf_kwargs: Extra arguments to
pass to acquisition function. Defaults to no arguments.
- Parameters
model_gen_options (Optional[Dict[str, Any]]) – Dictionary with options for generating candidate, such as SGD parameters. See code for all options and their defaults.
explore_features (Optional[Sequence[int]]) – List of features that will be selected randomly and then fixed for acquisition fn optimization.
acqf (aepsych.acquisition.monotonic_rejection.MonotonicMCAcquisition) –
acqf_kwargs (Dict[str, object], optional) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: AEPsychMixin
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.monotonic_thompson_sampler_generator module¶
- class aepsych.generators.monotonic_thompson_sampler_generator.MonotonicThompsonSamplerGenerator(n_samples, n_rejection_samples, num_ts_points, target_value, objective, explore_features=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
[aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP
]A generator specifically to be used with MonotonicRejectionGP that uses a Thompson-sampling-style approach for gen, rather than using an acquisition function. We draw a posterior sample at a large number of points, and then choose the point that is closest to the target value.
Initialize MonotonicMCAcquisition
- Parameters
n_samples (int) – Number of samples to select point from.
num_rejection_samples (int) – Number of rejection samples to draw.
num_ts_points (int) – Number of points at which to sample.
target_value (float) – target value that is being looked for
objective (Optional[MCAcquisitionObjective], optional) – Objective transform of the GP output before evaluating the acquisition. Defaults to identity transform.
explore_features (Sequence[int], optional) –
n_rejection_samples (int) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: AEPsychMixin
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.optimize_acqf_generator module¶
- class aepsych.generators.optimize_acqf_generator.OptimizeAcqfGenerator(acqf, acqf_kwargs=None, restarts=10, samps=1000, max_gen_time=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that chooses points by minimizing an acquisition function.
Initialize OptimizeAcqfGenerator. :param acqf: Acquisition function to use. :type acqf: AcquisitionFunction :param acqf_kwargs: Extra arguments to
pass to acquisition function. Defaults to no arguments.
- Parameters
restarts (int) – Number of restarts for acquisition function optimization.
samps (int) – Number of samples for quasi-random initialization of the acquisition function optimizer.
max_gen_time (optional, float) – Maximum time (in seconds) to optimize the acquisition function. This is only loosely followed by scipy’s optimizer, so consider using a number about 1/3 or less of what your true upper bound is.
acqf (botorch.acquisition.acquisition.AcquisitionFunction) –
acqf_kwargs (Dict[str, object], optional) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: ModelProtocol
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.base.ModelProtocol) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.random_generator module¶
- class aepsych.generators.random_generator.RandomGenerator(lb, ub, dim=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points randomly without an acquisition function.
Iniatialize RandomGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by randomly sampling the parameter space. :param num_points: Number of points to query. Currently, only 1 point can be queried at a time. :type num_points: int, optional
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
aepsych.generators.sobol_generator module¶
- class aepsych.generators.sobol_generator.SobolGenerator(lb, ub, dim=None, seed=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points from the Sobol Sequence.
Iniatialize SobolGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional :param seed: Random seed. :type seed: int, optional
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
seed (Optional[int]) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by quasi-randomly sampling the parameter space. :param num_points: Number of points to query. :type num_points: int, optional
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
Module contents¶
- class aepsych.generators.OptimizeAcqfGenerator(acqf, acqf_kwargs=None, restarts=10, samps=1000, max_gen_time=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that chooses points by minimizing an acquisition function.
Initialize OptimizeAcqfGenerator. :param acqf: Acquisition function to use. :type acqf: AcquisitionFunction :param acqf_kwargs: Extra arguments to
pass to acquisition function. Defaults to no arguments.
- Parameters
restarts (int) – Number of restarts for acquisition function optimization.
samps (int) – Number of samples for quasi-random initialization of the acquisition function optimizer.
max_gen_time (optional, float) – Maximum time (in seconds) to optimize the acquisition function. This is only loosely followed by scipy’s optimizer, so consider using a number about 1/3 or less of what your true upper bound is.
acqf (botorch.acquisition.acquisition.AcquisitionFunction) –
acqf_kwargs (Dict[str, object], optional) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: ModelProtocol
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.base.ModelProtocol) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- class aepsych.generators.MonotonicRejectionGenerator(acqf, acqf_kwargs=None, model_gen_options=None, explore_features=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
[aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP
]Generator specifically to be used with MonotonicRejectionGP, which generates new points to sample by minimizing an acquisition function through stochastic gradient descent.
Initialize MonotonicRejectionGenerator. :param acqf: Acquisition function to use. :type acqf: AcquisitionFunction :param acqf_kwargs: Extra arguments to
pass to acquisition function. Defaults to no arguments.
- Parameters
model_gen_options (Optional[Dict[str, Any]]) – Dictionary with options for generating candidate, such as SGD parameters. See code for all options and their defaults.
explore_features (Optional[Sequence[int]]) – List of features that will be selected randomly and then fixed for acquisition fn optimization.
acqf (aepsych.acquisition.monotonic_rejection.MonotonicMCAcquisition) –
acqf_kwargs (Dict[str, object], optional) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: AEPsychMixin
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- class aepsych.generators.MonotonicThompsonSamplerGenerator(n_samples, n_rejection_samples, num_ts_points, target_value, objective, explore_features=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
[aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP
]A generator specifically to be used with MonotonicRejectionGP that uses a Thompson-sampling-style approach for gen, rather than using an acquisition function. We draw a posterior sample at a large number of points, and then choose the point that is closest to the target value.
Initialize MonotonicMCAcquisition
- Parameters
n_samples (int) – Number of samples to select point from.
num_rejection_samples (int) – Number of rejection samples to draw.
num_ts_points (int) – Number of points at which to sample.
target_value (float) – target value that is being looked for
objective (Optional[MCAcquisitionObjective], optional) – Objective transform of the GP output before evaluating the acquisition. Defaults to identity transform.
explore_features (Sequence[int], optional) –
n_rejection_samples (int) –
- Return type
None
- gen(num_points, model)[source]¶
Query next point(s) to run by optimizing the acquisition function. :param num_points: Number of points to query. :type num_points: int, optional :param model: Fitted model of the data. :type model: AEPsychMixin
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (aepsych.models.monotonic_rejection_gp.MonotonicRejectionGP) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- class aepsych.generators.RandomGenerator(lb, ub, dim=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points randomly without an acquisition function.
Iniatialize RandomGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by randomly sampling the parameter space. :param num_points: Number of points to query. Currently, only 1 point can be queried at a time. :type num_points: int, optional
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- class aepsych.generators.SobolGenerator(lb, ub, dim=None, seed=None)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points from the Sobol Sequence.
Iniatialize SobolGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional :param seed: Random seed. :type seed: int, optional
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
seed (Optional[int]) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by quasi-randomly sampling the parameter space. :param num_points: Number of points to query. :type num_points: int, optional
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- class aepsych.generators.EpsilonGreedyGenerator(subgenerator, epsilon=0.1)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
- Parameters
subgenerator (aepsych.generators.base.AEPsychGenerator) –
epsilon (float) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –
- gen(num_points, model)[source]¶
- Parameters
num_points (int) –
model (aepsych.models.base.ModelProtocol) –
- class aepsych.generators.ManualGenerator(lb, ub, points, dim=None, shuffle=True)[source]¶
Bases:
aepsych.generators.base.AEPsychGenerator
Generator that generates points from the Sobol Sequence.
Iniatialize SobolGenerator. :param lb: Lower bounds of each parameter. :type lb: Union[np.ndarray, torch.Tensor] :param ub: Upper bounds of each parameter. :type ub: Union[np.ndarray, torch.Tensor] :param points: The points that will be generated. :type points: Union[np.ndarray, torch.Tensor] :param dim: Dimensionality of the parameter space. If None, it is inferred from lb and ub. :type dim: int, optional :param shuffle: Whether or not to shuffle the order of the points. True by default. :type shuffle: bool
- Parameters
lb (Union[numpy.ndarray, torch.Tensor]) –
ub (Union[numpy.ndarray, torch.Tensor]) –
points (Union[numpy.ndarray, torch.Tensor]) –
dim (Optional[int]) –
shuffle (bool) –
- gen(num_points=1, model=None)[source]¶
Query next point(s) to run by quasi-randomly sampling the parameter space. :param num_points: Number of points to query. :type num_points: int
- Returns
Next set of point(s) to evaluate, [num_points x dim].
- Return type
np.ndarray
- Parameters
num_points (int) –
model (Optional[aepsych.models.base.AEPsychMixin]) –
- classmethod from_config(config)[source]¶
- Parameters
config (aepsych.config.Config) –