Source code for swiftemulator.backend.emulator_generator

"""
Emulator generation object.
"""

import attr
import copy
import numpy as np

from typing import Hashable, List, Optional, Dict

from .model_parameters import ModelParameters
from .model_specification import ModelSpecification
from .model_values import ModelValues

from swiftemulator.emulators.gaussian_process import GaussianProcessEmulator
from swiftemulator.emulators.gaussian_process_mcmc import GaussianProcessEmulatorMCMC
from swiftemulator.emulators.gaussian_process_bins import GaussianProcessEmulatorBins
from swiftemulator.emulators.linear_model import LinearModelEmulator


[docs]@attr.s class EmulatorGenerator(object): """ Generator for emulators for individual scaling relations. Parameters ---------- model_specification: ModelSpecification Full instance of the model specification. model_parameters: ModelParameters Full instance of the model parameters. Notes ----- The required initialisation parameters are shared amongst all emulators that the emulator generator produces. """ model_specification: ModelSpecification = attr.ib( validator=attr.validators.instance_of(ModelSpecification) ) model_parameters: ModelParameters = attr.ib( validator=attr.validators.instance_of(ModelParameters) )
[docs] def create_gaussian_process_emulator( self, model_values: ModelValues ) -> GaussianProcessEmulator: """ Creates an individual emulator for an individual scaling relation described by the provided ``model_values``. Parameters ---------- model_values, ModelValues The model values structure for this given scaling relation. This specifies the training data for the emulator. Returns ------- emulator, GaussianProcessEmulator The built and trained emulator ready for prediction steps. """ raise NotImplementedError( "This class has been deprecated. Please directly construct emualtors instead." )
[docs] def create_gaussian_process_emulator_mcmc( self, model_values: ModelValues ) -> GaussianProcessEmulatorMCMC: """ Creates the object needed for the hyperparameter_investigator function Parameters ---------- model_values, ModelValues The model values structure for this given scaling relation. This specifies the training data for the emulator. Returns ------- emulator, GaussianProcessEmulatorMCMC The built emulator ready for analysis of hyperparameters """ raise NotImplementedError( "This class has been deprecated. Please directly construct emualtors instead." )
[docs] def create_gaussian_process_emulator_bins( self, model_values: ModelValues ) -> GaussianProcessEmulatorBins: """ Creates the object needed for the binned emulator Parameters ---------- model_values, ModelValues The model values structure for this given scaling relation. This specifies the training data for the emulator. Returns ------- emulator, GaussianProcessEmulatorMCMC The built emulator ready for analysis of hyperparameters """ raise NotImplementedError( "This class has been deprecated. Please directly construct emualtors instead." )
[docs] def create_linear_model_emulator( self, model_values: ModelValues ) -> LinearModelEmulator: """ Creates an individual emulator for an individual scaling relation described by the provided ``model_values``. Parameters ---------- model_values, ModelValues The model values structure for this given scaling relation. This specifies the training data for the emulator. Returns ------- emulator, LinearModelEmulator The built and trained emulator ready for prediction steps. """ raise NotImplementedError( "This class has been deprecated. Please directly construct emualtors instead." )