Source code for probeye.inference.solver
# standard library imports
from typing import Optional, TYPE_CHECKING
import copy as cp
# imports only needed for type hints
if TYPE_CHECKING: # pragma: no cover
from probeye.definition.inverse_problem import InverseProblem
[docs]class Solver:
"""
Base class for the different solvers (inference engines).
Parameters
----------
problem
Describes the inverse problem including e.g. parameters and data.
seed
Random state used for random number generation.
show_progress
When True, the progress of a solver routine will be shown (for example as a
progress-bar) if such a feature is available. Otherwise, the progress will
not shown.
"""
def __init__(
self,
problem: "InverseProblem",
seed: Optional[int] = None,
show_progress: bool = True,
):
# attributes from arguments
self.problem = cp.deepcopy(problem)
self.show_progress = show_progress
self.seed = seed
# prepare the given problem for this solver
self._translate_parameters()
self._translate_experiments()
self._translate_forward_models()
self._translate_likelihood_models()
# the following attributes will be set after the solver was run
self.raw_results = None
self.summary = {} # type: dict
[docs] def _translate_parameters(self):
"""
Translate the inverse problem's parameters as needed for this solver.
"""
raise NotImplementedError(
f"The '_translate_parameters'-method has not been implemented yet!"
)
[docs] def _translate_experiments(self):
"""
Translate the inverse problem's experiments as needed for this solver.
"""
raise NotImplementedError(
f"The '_translate_experiments'-method has not been implemented yet!"
)
[docs] def _translate_forward_models(self):
"""
Translate the inverse problem's forward models as needed for this solver.
"""
raise NotImplementedError(
f"The '_translate_forward_models'-method has not been implemented yet!"
)
[docs] def _translate_likelihood_models(self):
"""
Translate the inverse problem's likelihood models as needed for this solver.
"""
raise NotImplementedError(
f"The '_translate_likelihood_models'-method has not been implemented yet!"
)