parameterspace.priors.base
BasePrior (ABC)
Base class defining the API of the priors.
The priors enable the incorporation of domain knowledge into the parameter definition by allowing the specification of a PDF/PMF. These are used to sample random values and to compute the loglikelihood of a given value.
Source code in parameterspace/priors/base.py
class BasePrior(abc.ABC):
"""Base class defining the API of the priors.
The priors enable the incorporation of domain knowledge into the parameter
definition by allowing the specification of a PDF/PMF. These are used to sample
random values and to compute the loglikelihood of a given value.
"""
def __init__(self, bounds: Tuple):
"""
Args:
bounds: Lower and upper bound of the prior.
"""
self._init_args: Tuple
self._init_kwargs: Dict
self.bounds = np.array(bounds, dtype=float)
def loglikelihood(self, value):
"""
Compute the log PDF (up to an additive constant) of a given value.
Note:
Values for the priors are always after the transformation!
Args:
value: [description]
Returns:
[descriptions]
"""
return np.log(self.pdf(value))
@abc.abstractmethod
def pdf(self, value):
"""
Computes the PDF of a given value.
Note:
Values for the priors are always after the transformation!
Args:
value: [description]
Returns:
[descriptions]
"""
@abc.abstractmethod
def sample(self, num_samples: int = 1):
"""
Draw random samples from the prior.
Args:
num_samples: [description]
Returns:
[descriptions]
"""
@staticmethod
def from_dict(json_dict):
prior_class = json_dict["class_name"]
module_str, class_str = prior_class.rsplit(".", 1)
module = importlib.import_module(module_str)
model_class = getattr(module, class_str)
return model_class(*json_dict["init_args"], **json_dict["init_kwargs"])
def to_dict(self):
json_dict = {
"class_name": type(self).__module__ + "." + type(self).__qualname__,
"init_args": self._init_args,
"init_kwargs": self._init_kwargs,
}
return json_dict
def __eq__(self, other):
"""Uniform prior doesn't have a state, so equality is just class membership."""
return isinstance(other, type(self))
loglikelihood(self, value)
Compute the log PDF (up to an additive constant) of a given value.
Note
Values for the priors are always after the transformation!
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value |
[description] |
required |
Returns:
Type | Description |
---|---|
[descriptions] |
Source code in parameterspace/priors/base.py
def loglikelihood(self, value):
"""
Compute the log PDF (up to an additive constant) of a given value.
Note:
Values for the priors are always after the transformation!
Args:
value: [description]
Returns:
[descriptions]
"""
return np.log(self.pdf(value))
pdf(self, value)
Computes the PDF of a given value.
Note
Values for the priors are always after the transformation!
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value |
[description] |
required |
Returns:
Type | Description |
---|---|
[descriptions] |
Source code in parameterspace/priors/base.py
@abc.abstractmethod
def pdf(self, value):
"""
Computes the PDF of a given value.
Note:
Values for the priors are always after the transformation!
Args:
value: [description]
Returns:
[descriptions]
"""
sample(self, num_samples=1)
Draw random samples from the prior.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
num_samples |
int |
[description] |
1 |
Returns:
Type | Description |
---|---|
[descriptions] |
Source code in parameterspace/priors/base.py
@abc.abstractmethod
def sample(self, num_samples: int = 1):
"""
Draw random samples from the prior.
Args:
num_samples: [description]
Returns:
[descriptions]
"""