Skip to content

Parameter

Parameter(**data: float | str | SourceCollection | None)

Bases: BaseModel

Encapsulate a value with its unit, provenance, notes, sources, and more optional attributes required to describe technology parameters, like carrier, and heating value.

Attributes:

  • magnitude (int | float) –

    The numerical value of the parameter.

  • units (Optional[str]) –

    The unit of the parameter.

  • carrier (Optional[str]) –

    The energy carrier.

  • heating_value (Optional[str]) –

    The heating value type.

  • provenance (Optional[str]) –

    Description of the data's provenance.

  • note (Optional[str]) –

    Additional notes about the parameter.

  • sources (Optional[SourceCollection]) –

    List of sources for the parameter.

Methods:

  • __add__

    Add this Parameter to another Parameter.

  • __eq__

    Check for equality with another Parameter object.

  • __mul__

    Multiply two Parameter instances.

  • __pow__

    Raise the parameter's value to a specified power.

  • __sub__

    Subtract another Parameter from this Parameter.

  • __truediv__

    Divide this Parameter by another Parameter.

  • change_heating_value

    Change the heating value of the parameter.

  • to

    Convert the parameter's quantity to new units.

  • to_currency

    Change the currency of the parameter.

carrier class-attribute instance-attribute

carrier: Annotated[str | None, Field(description="Carriers of the units, e.g. 'H2', 'el', 'H2O'.")] = None

heating_value class-attribute instance-attribute

heating_value: Annotated[str | None, Field(description="Heating value type for energy carriers ('LHV' or 'HHV').")] = None

magnitude instance-attribute

magnitude: Annotated[int | float, Field(description='The numerical value of the parameter.')]

note class-attribute instance-attribute

note: Annotated[str | None, Field(description='Additional notes.')] = None

provenance class-attribute instance-attribute

provenance: Annotated[str | None, Field(description="The data's provenance.")] = None

sources class-attribute instance-attribute

sources: Annotated[SourceCollection, Field(description='List of sources for this parameter.')] = SourceCollection(sources=[])

units class-attribute instance-attribute

units: Annotated[str | None, Field(description='The unit of the parameter.')] = None

__add__

__add__(other: Self) -> Self

Add this Parameter to another Parameter.

Parameters:

  • other (Parameter) –

    The Parameter instance to add.

Returns:

  • Parameter

    A new Parameter instance representing the sum of the two parameters.

Notes

This method checks for parameter compatibility before performing the addition. The resulting Parameter retains the carrier, heating value, and combines provenance, notes, and sources from both operands.

__eq__

__eq__(other: object) -> bool

Check for equality with another Parameter object.

Compares all attributes of the current instance with those of the other object.

Parameters:

  • other (object) –

    The object to compare with. Expected to be an instance of Parameter.

Returns:

  • bool

    True if all attributes are equal between self and other, False otherwise. Returns False if other is not a Parameter instance.

__mul__

__mul__(other: int | float | Self) -> Self

Multiply two Parameter instances.

Parameters:

  • other (int | float | Parameter) –

    A scalar or a Parameter instance to multiply with.

Returns:

  • Parameter

    A new Parameter instance representing the product of the two parameters.

Raises:

  • ValueError

    If the heating values of the two parameters are not compatible (i.e., not equal).

Notes
  • Multiplication is only performed if the heating values are compatible.
  • The method multiplies the underlying quantities and carriers (if present).
  • The heating value of the resulting parameter is the product of the input heating values.
  • Provenance, notes, and sources are combined from both parameters.
  • Compatibility checks beyond heating values are not performed.

__pow__

__pow__(exponent: float | int) -> Self

Raise the parameter's value to a specified power.

Parameters:

  • exponent (float or int) –

    The exponent to raise the parameter's value to.

Returns:

  • Parameter

    A new Parameter instance with the value raised to the specified power.

Notes

This method updates the internal pint attributes before applying the power operation. If the parameter has a carrier, it is also raised to the specified power.

__sub__

__sub__(other: Self) -> Self

Subtract another Parameter from this Parameter.

Parameters:

  • other (Parameter) –

    The Parameter instance to subtract.

Returns:

  • Parameter

    A new Parameter instance representing the result of the subtraction.

Notes

This method checks for parameter compatibility before performing the subtraction. The resulting Parameter retains the carrier, heating value, and combines provenance, notes, and sources.

__truediv__

__truediv__(other: int | float | Self) -> Self

Divide this Parameter by another Parameter.

Parameters:

  • other (float | Parameter) –

    A scalar or a Parameter instance to divide by.

Returns:

  • Parameter

    A new Parameter instance representing the division result.

Raises:

  • ValueError

    If the heating values of the two parameters are different.

Notes

The method divides the quantities of the parameters and constructs a new Parameter. It also handles the division of carriers and heating values if present.

change_heating_value

change_heating_value(to_heating_value: str) -> Self

Change the heating value of the parameter.

This converts the parameter's heating value to another heating value, e.g. from "LHV" to "HHV", by taking into account the parameter's carrier.

Parameters:

  • to_heating_value (str) –

    The target heating value to convert to, e.g. "LHV", "HHV".

Returns:

  • Parameter

    A new Parameter object with the converted heating value.

Raises:

  • ValueError

    If the current parameter does not have a carrier or a heating value set,

Examples:

>>> Parameter(magnitude=1, units="kWh", carrier="H2", heating_value="LHV").change_heating_value("HHV")
<Parameter magnitude=1.5, units='kWh', carrier='H2', heating_value='HHV'>

to

to(units: str) -> Self

Convert the parameter's quantity to new units.

to_currency

to_currency(target_currency: str, country: str, source: str = 'worldbank') -> Self

Change the currency of the parameter.

This allows for conversion to a different currency as well as for inflation adjustments. To properly adjust for inflation, the function requires the country for which the inflation adjustment should be applied for.

Note that this will harmonise all currencies used in the parameter's units, i.e. if the parameter units contains multiple different currencies, all of them will be converted to the target currency.

Parameters:

  • target_currency (str) –

    The target currency unit to convert to, e.g. "USD_2020", "EUR_2024", "CNY_2022".

  • country (str) –

    The country for which the inflation adjustment should be made for. Must be the official ISO 3166-1 alpha-3 country code, e.g. "USA", "DEU", "CHN".

  • source (str, default: 'worldbank' ) –

    The source of the inflation data, either "worldbank"/"wb" or "international_monetary_fund"/"imf". Defaults to "worldbank". Depending on the source, different years to adjust for inflation may be available.

Returns:

  • Parameter

    A new Parameter object with the converted currency.

Examples:

>>> param.to_currency("USD_2024", "USA")
>>> param.to_currency("EUR_2020", "DEU", source="imf")
>>> param.to_currency("EUR_2023", "USA", source="worldbank")