Skip to content

parameterspace.transformations.base

BaseTransformation (ABC)

Base class defining the API of a transformation.

Source code in parameterspace/transformations/base.py
class BaseTransformation(abc.ABC):
    """Base class defining the API of a transformation."""

    def __init__(self, input_bounds: Optional[Tuple], output_bounds: Tuple):
        """
        Args:
            input_bounds: The numerical range for the input of a transformation. If
                that is not applicable, e.g. for categorical parameters, use `None`.
            output_bounds: The numerical range for the output of a transformation.
                As every transformation yields a numerical representation, these
                bounds have to be always specified in the form
                [lower_bound, upper_bound].
        """
        self._init_args: Tuple
        self._init_kwargs: Dict
        self.input_bounds = None if input_bounds is None else np.array(input_bounds)
        self.output_bounds = np.array(output_bounds)

    @abc.abstractmethod
    def inverse(self, numerical_value: float) -> Any:
        """Convert the numerical representation back to the true value with the proper
        type.

        Args:
            numerical_value: Transformed/Numerical representation of a value.

        Returns:
            The value corresponding to the given value. Type depends no the kind of
            transformation.
        """

    @abc.abstractmethod
    def __call__(self, value: Any) -> float:
        """Convert a value into the numerical representation.

        Args:
            value: A valid value for this transformation.

        Returns:
            Transformed/Numerical representation of the value.
        """

    def jacobian_factor(
        self, numerical_value: float  # pylint: disable=unused-argument
    ) -> float:
        """Factor to correct the likelihood based on the non-linear transformation.

        Args:
            numerical_value: Transformed/Numerical representation of a value.

        Returns:
            Jacobian factor to properly transform the likelihood.
        """
        return 1.0

    @staticmethod
    def from_dict(json_dict: dict):
        """
        [summary]
        """
        transformation_class = json_dict["class_name"]
        module_str, class_str = transformation_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):
        """
        [summary]
        """
        json_dict = {
            "class_name": type(self).__module__ + "." + type(self).__qualname__,
            "init_args": self._init_args,
            "init_kwargs": self._init_kwargs,
        }
        return json_dict

from_dict(json_dict) staticmethod

[summary]

Source code in parameterspace/transformations/base.py
@staticmethod
def from_dict(json_dict: dict):
    """
    [summary]
    """
    transformation_class = json_dict["class_name"]
    module_str, class_str = transformation_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"])

inverse(self, numerical_value)

Convert the numerical representation back to the true value with the proper type.

Parameters:

Name Type Description Default
numerical_value float

Transformed/Numerical representation of a value.

required

Returns:

Type Description
Any

The value corresponding to the given value. Type depends no the kind of transformation.

Source code in parameterspace/transformations/base.py
@abc.abstractmethod
def inverse(self, numerical_value: float) -> Any:
    """Convert the numerical representation back to the true value with the proper
    type.

    Args:
        numerical_value: Transformed/Numerical representation of a value.

    Returns:
        The value corresponding to the given value. Type depends no the kind of
        transformation.
    """

jacobian_factor(self, numerical_value)

Factor to correct the likelihood based on the non-linear transformation.

Parameters:

Name Type Description Default
numerical_value float

Transformed/Numerical representation of a value.

required

Returns:

Type Description
float

Jacobian factor to properly transform the likelihood.

Source code in parameterspace/transformations/base.py
def jacobian_factor(
    self, numerical_value: float  # pylint: disable=unused-argument
) -> float:
    """Factor to correct the likelihood based on the non-linear transformation.

    Args:
        numerical_value: Transformed/Numerical representation of a value.

    Returns:
        Jacobian factor to properly transform the likelihood.
    """
    return 1.0

to_dict(self)

[summary]

Source code in parameterspace/transformations/base.py
def to_dict(self):
    """
    [summary]
    """
    json_dict = {
        "class_name": type(self).__module__ + "." + type(self).__qualname__,
        "init_args": self._init_args,
        "init_kwargs": self._init_kwargs,
    }
    return json_dict