Custom conversions
Here we show how custom conversions can be passed to OpenSCM-Units’ ScmUnitRegistry
.
[1]:
# NBVAL_IGNORE_OUTPUT
import traceback
import pandas as pd
from openscm_units import ScmUnitRegistry
Custom conversions DataFrame
On initialisation, a pd.DataFrame
can be provided which contains the custom conversions. This pd.DataFrame
should be formatted as shown below, with an index that contains the different species and columns which contain the conversion for different metrics.
[2]:
metric_conversions_custom = pd.DataFrame([
{
"Species": "CH4",
"Custom1": 20,
"Custom2": 25,
},
{
"Species": "N2O",
"Custom1": 341,
"Custom2": 300,
},
]).set_index("Species")
metric_conversions_custom
[2]:
Custom1 | Custom2 | |
---|---|---|
Species | ||
CH4 | 20 | 25 |
N2O | 341 | 300 |
With such a pd.DataFrame
, we can use custom conversions in our unit registry as shown.
[3]:
# initialise the unit registry with custom conversions
unit_registry = ScmUnitRegistry(metric_conversions=metric_conversions_custom)
# add standard conversions before moving on
unit_registry.add_standards()
# start with e.g. N2O
nitrous_oxide = unit_registry("N2O")
display(f"N2O: {nitrous_oxide}")
# our unit registry allows us to make conversions using the
# conversion factors we previously defined
with unit_registry.context("Custom1"):
display(f"N2O in CO2-equivalent: {nitrous_oxide.to('CO2')}")
'N2O: 1 N2O'
'N2O in CO2-equivalent: 341.0 CO2'