ELDAM: A Python software for Life Cycle Inventory data management

1 LBE, Montpellier SupAgro, INRAE, UNIV Montpellier, Narbonne, France 2 ELSA, Research group for environmental life cycle sustainability assessment, 2 place Pierre Viala, 34060 Montpellier, France 3 CIRAD, UPR HortSys, F-34398 Montpellier, France 4 HortSys, Univ Montpellier, CIRAD, Montpellier, France 5 ITAP, Montpellier SupAgro, Univ Montpellier, INRAE, Montpellier, France DOI: 10.21105/joss.02765


Summary
Life Cycle Inventory (LCI) data are the backbone of Life Cycle Analysis (LCA). They reflect modelling choices made by the LCA practitioner that can strongly influence the results of environmental impact calculations. The high sensitivity of these data are the reason why they must be accurately documented and tend to the highest possible quality. High quality, well documented LCI data can also be shared between LCA practitioners, allowing productivity gains and better research reproducibility, in particular between practitioners who do not work on the same life cycle inventory database. Unfortunately, SimaPro (PRé Sustainability B.V., 2020), one of the most used LCA software solutions, has only limited features to document, review and exchange LCI data. ELDAM has been developed to fill this gap.

Statement of need
ELDAM is constituted by an LCI documentation and review procedure, a visualization and editing spreadsheet format and a feature-rich utility software written in Python.
Metadata used to document LCIs are extended with a focus on data quality characterization (Biard et al., 2015). A review procedure inspired from scientific peer review helps to improve the quality of LCIs ( Figure 1). The use of a spreadsheet based format for LCI editing, documentation and visualization has several advantages. It is a well known interface for most users and can be easily shared with non LCA experts (Coste et al., 2018). It also allows easy versioning of the LCIs with a separate sheet for each version. This versioning system is at the basis of the review procedure but can also be used to track changes made by a single user.
The main feature of the utility software is the conversion between ELDAM's spreadsheet format and SimaPro import and export formats. It can be used as a Python package or through its Qt (The Qt Company, 2020) based graphical user interface (Figure 2). Its object-oriented design makes it very modular and easy to extend.
ELDAM has been used in various research projects ( (Gentil et al., 2020), (Risch et al., 2020)), helping to improve and characterize LCI data quality. Its review procedure has proven very helpful for auditing the LCIs produced by LCA beginners such as interns.

Use case scenario
The following use case scenario illustrates the workflow proposed by ELDAM.
An LCA practitioner creates an LCI in SimaPro and exports it in the .xlsx format. Then, he converts it to an Elda file (the .xlsm based spreadsheet format used by ELDAM) either using the GUI or the Python API. Opening the Elda file with a spreadsheet software like Excel or LibreOffice, the practitioner documents the LCI dataset using the metadata fields provided by ELDAM. Once the documentation step is finished, he sends the Elda file to a reviewer that will ensure of the consistency of the dataset. The reviewer then creates a new version of the dataset that will be materialized as a new sheet in the file. She highlights all of her suggested modifications and returns the file to the original author. The original author addresses the reviewer's remarks in a new version and returns the file to her. This review loop continues until the dataset is considered valid by the reviewer. Once the review process is over, the author can convert the Elda file to a .csv file using the GUI or the Python API and import it back to SimaPro. from eldam.core.simapro import SimaProXlsxReader, SimaProCsvWriter from eldam.core.elda import Elda # SimaPro export file -> Elda spreadsheet process = SimaProXlsxReader('path/to/xlsx/file').to_processes()[0] elda = Elda() elda.add_version(process) elda.save('path/to/elda') # Elda spreadsheet -> SimaPro import file elda = Elda('path/to/elda') process = elda.read_last_version().to_process() SimaProCsvWriter(process).to_csv('path/to/csv')