This is a package for the dynamic characterization of Life Cycle Inventories with temporal information. It includes a collection of dynamic characterization functions for various environmental flows. We also provide a simple interface to apply these functions to an existing dynamic LCI (coming from, e.g., bw_temporalis or bw_timex).
The following dynamic characterization functions are currently included:
impact category | metric | covered emissions | source |
---|---|---|---|
climate change | radiative forcing | CO2, CH4 | bw_temporalis |
climate change | radiative forcing | 247 GHGs from IPCC AR6 Ch.7 | bw_timex |
The functions are meant to work with a common input format of the dynamic inventory, collected in a pandas DataFrame that looks like this:
date | amount | flow | activity |
---|---|---|---|
101 | 33 | 1 | 2 |
312 | 21 | 4 | 2 |
Each function takes one row of this dynamic inventory dataframe (i.e. one emission at one point in time) and transform it according to some metric. The output generated by applying a very simple function to both rows of the input dataframe could look like:
date | amount | flow | activity |
---|---|---|---|
101 | 33 | 1 | 2 |
102 | 31 | 1 | 2 |
103 | 31 | 1 | 2 |
312 | 21 | 4 | 2 |
313 | 20 | 4 | 2 |
314 | 19 | 4 | 2 |
Here's an example of what such a function could look like:
def characterize_something(series, period: int = 100, cumulative=False) -> pd.DataFrame:
date_beginning: np.datetime64 = series.date.to_numpy()
dates_characterized: np.ndarray = date_beginning + np.arange(
start=0, stop=period, dtype="timedelta64[Y]"
).astype("timedelta64[s]")
# let's assume some simple decay function
decay_multipliers: list = np.array(
[
1.234 * (1 - np.exp(-year / 56.789))
for year in range(period)
]
)
forcing = np.array(series.amount * decay_multipliers, dtype="float64")
if not cumulative:
forcing = np.diff(forcing, prepend=0)
return pd.DataFrame(
{
"date": np.array(dates_characterized, dtype="datetime64[s]"),
"amount": forcing,
"flow": series.flow,
"activity": series.activity,
}
)
You can install dynamic_characterization
via [pip] from [PyPI]:
$ pip install dynamic_characterization
Alternatively, you can also use conda:
$ conda install -c diepers dynamic_characterization
Contributions are very welcome. To learn more, see the Contributor Guide.
Distributed under the terms of the BSD 3 Clause license, dynamic_characterization is free and open source software.
If you encounter any problems, please file an issue along with a detailed description.
If you have any questions or need help, do not hesitate to contact Timo Diepers (timo.diepers@ltt.rwth-aachen.de)