Transforms

class ionworkspipeline.data_fits.transforms.Transform(parameter, name, monotonic_transform, normalize)

Base class for parameter transformations.

This class provides functionality to transform parameters between different spaces (e.g., log space, exponential space) while maintaining the parameter bounds and initial values. Transforms can be chained together.

Parameters

parameterTransform or Parameter

The parameter to transform. Can be either a Transform object or a Parameter object.

namestr

Name of the transformed parameter. If None, will be generated from the transform type.

monotonic_transformbool

Whether the transform is monotonic. Affects how bounds are transformed.

normalizebool, optional

Whether to normalize the parameter values.

Attributes

parentTransform or None

The parent transform in a chain of transforms.

childTransform or Parameter

The child transform/parameter in a chain of transforms.

base_parameterParameter

The original parameter being transformed.

monotonic_transformbool

Whether this transform is monotonic.

Extends: ionworkspipeline.data_fits.parameter.Parameter

property bounds

Returns the corrected parameter bounds

property initial_value

Returns the corrected initial value

inverse_transform(value)

Apply the inverse transform through the chain.

Applies inverse transforms in reverse order from current transform down to base parameter.

Parameters

valuefloat or None

Value to inverse transform. If None, returns None.

Returns

float or None

The inverse transformed value.

is_monotonic_transform()

Check if the complete transform chain is monotonic.

A transform chain is monotonic if it has an even number of non-monotonic transforms. For example: Inverse(Negate(x)) is monotonic because both transforms are non-monotonic.

Returns

bool

True if the complete transform chain is monotonic.

property prior

Returns the prior

to_dict(name)

Convert the transform to a dictionary of parameters for fitting.

This method creates two entries: 1. A transformed parameter with the transformed name and bounds 2. An expression that defines how to convert back from the transformed parameter to the original parameter

This is used by the DataFit class to handle parameter transformations during the fitting process.

Parameters

namestr

The name to use for the parameter in the model. This may be different from the parameter’s internal name.

Returns

dict

A dictionary with two entries: - transformed_name: Parameter object with transformed bounds/initial values - original_name: PyBaMM expression for converting back to original space

transform(value)

Transform a value through the chain of transforms.

Applies all transforms in the chain from base parameter up to the current transform.

Parameters

valuefloat or None

Value to transform. If None, returns None.

Returns

float or None

The transformed value.

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

transform_name_recursive(name)

Transform a parameter name through the chain of transforms.

Applies all transform name modifications from base parameter up to current transform.

Parameters

namestr

Name to transform.

Returns

str

The transformed name with all transforms applied.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Log(parameter, name=None, normalize=None)

Natural logarithm transform.

Transforms a parameter by taking its natural logarithm. Only works with positive values.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “log(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is monotonic

  • Input values must be positive

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Exp(parameter, name=None, normalize=None)

Exponential transform.

Transforms a parameter by taking e raised to the power of the parameter value.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “exp(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is monotonic

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Log10(parameter, name=None, normalize=None)

Logarithm base 10 transform.

Transforms a parameter by taking its base-10 logarithm. Only works with positive values.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “log10(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is monotonic

  • Input values must be positive

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Pow10(parameter, name=None, normalize=None)

Power of 10 transform.

Transforms a parameter by raising 10 to the power of the parameter value.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “pow10(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is monotonic

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Inverse(parameter, name=None, normalize=None)

Inverse (1/x) transform.

Transforms a parameter by taking its reciprocal (1/x). Cannot be used with zero values.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “inv(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is not monotonic

  • Input values cannot be zero

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Negate(parameter, name=None, normalize=None)

Negate transform.

Transforms a parameter by negating its value (-x).

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “neg(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is not monotonic

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.

class ionworkspipeline.data_fits.transforms.Identity(parameter, name=None, normalize=None)

Identity transform.

A transform that returns the input unchanged. Useful as a placeholder or for testing.

Parameters

parameterTransform or Parameter

The parameter to transform.

namestr, optional

Name of the transformed parameter. If None, will be “Identity(parameter_name)”.

normalizebool, optional

Whether to normalize the parameter values.

Notes

  • The transform is monotonic

Extends: ionworkspipeline.data_fits.transforms.Transform

static transform_name(name)

Transform a parameter name for this transform type.

Must be implemented by subclasses.

Parameters

namestr

Name to transform.

Returns

str

The transformed name.

static transform_value(value)

Transform a single value using this transform.

Must be implemented by subclasses.

Parameters

valuefloat

Value to transform.

Returns

float

The transformed value.