Transformations

SISEPUEDE includes a predefined library of transformations that can be customized and combined to create detailed and comprehensize strategies–based on expected outcomes–for reducing emissions of greenhouse gasses at scale.

Transformations are outcomes that can be acheieved through the implementation of one or more policies. For example, mode shifting transportation can be achieved through a number of potential policies, including urban planning, taxes on fuels, reductions of public transportation fares, construction of infrastructure, and more.

Transformations are defined in Transformation classes in python. Collections of transformations are called strategies (link).

Transformers vs. Transformations

SISEPUEDE uses simlar terms to refer to two different components of the framework for modifying

Transformers are pre-defined callable classes in Python that modify a base set of trajectories to reflect a desired outcome. These classes, which include default values, can be called with different functional specifications that are defined in configuration files to allow for flexibility in applying the transformation.

Transformer Code:

Note

Example: Transformer TX:AGRC_INC_CONSERVATION_AGRICULTURE

Defining Transformations

Transformations are parameterizations of Transformers. Transformations are named in files with the following regular expression:

transformation_(.w*).yaml

where w are unicode word characters. See Python regular expression documentation for more information.

Parameterizing Transformations

Common Transformation Nomenclature

magnitude_type

  • baseline_additive: add the magnitude to the baseline

  • baseline_scalar: multiply baseline value by magnitude

  • baseline_scalar_diff_reduction: reduce the difference between

    the value in the baseline time period and the upper bound (NOTE: requires specification of bounds to work) by magnitude

  • final_value: magnitude is the final value for the variable to

    take (achieved in accordance with vec_ramp)

  • final_value_ceiling: magnitude is the lesser of (a) the existing

    final value for the variable to take (achieved in accordance with vec_ramp) or (b) the existing specified final value, whichever is smaller

  • final_value_floor: magnitude is the greater of (a) the existing

    final value for the variable to take (achieved in accordance with vec_ramp) or (b) the existing specified final value, whichever is greater

  • transfer_value: transfer value from categories to other

    categories. Must specify “categories_source” & “categories_target” in dict_modvar_specs. See description below in OPTIONAL for information on specifying this.

  • transfer_scalar_value: transfer value from categories to other

    categories based on a scalar. Must specify “categories_source” & “categories_target” in dict_modvar_specs. See description below in OPTIONAL for information on specifying this.

  • transfer_value_to_acheieve_magnitude: transfer value from

    categories to other categories to acheive a target magnitude. Must specify “categories_source” & “categories_target” in dict_modvar_specs. See description below in OPTIONAL for information on specifying this.

  • vector_specification: simply enter a vector to use for region

vec_implementation_ramp

The implementation ramp vector is a vector that defines the fractional implementation of a policy over time periods.

  • n_tp_ramp: Number of time periods it takes for the intervention to reach full effect. If not specified

  • tp_0_ramp: Final time period with 0 change from baseline

  • a: sigmoid magnitude parameter; set to 0 for linear, 1 for full sigmoid

  • b: linear coefficient; set to 2 for linear (div by 2) or 0 for sigmoid

  • c: denominator exponee–in linear, set to 1 (adds term 1 + 1 to denominator); for sigmoid, set to np.e

  • d (optional): centroid for sigmoid/linear function. If using a sigmoid, this is the position of 0.5 in years \(\geq r_0\)

Linear vector set a = 0, b = 2, c = 1, d = r_0 + (n - r_0 - r_1)/2

Sigmoid: set a = 1, b = 0, c = math.e, d = r_0 + (n - r_0 - r_1)/2