Skip to content

Collection of dynamic characterization functions for life cycle inventories with temporal information

License

Notifications You must be signed in to change notification settings

brightway-lca/dynamic_characterization

dynamic_characterization

Read the Docs PyPI - Version Conda Version Conda - License

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

What do dynamic characterization functions do?

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

What do dynamic characterization functions look like?

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,
        }
    )

Installation

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

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the BSD 3 Clause license, dynamic_characterization is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Support

If you have any questions or need help, do not hesitate to contact Timo Diepers (timo.diepers@ltt.rwth-aachen.de)

About

Collection of dynamic characterization functions for life cycle inventories with temporal information

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published