diff --git a/.gitignore b/.gitignore index 8726638..c277606 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,129 @@ -conda-env +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +#MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Sphinx documentation +docs/_build/ +# PyBuilder +target/ + +# Jupyter Notebook .ipynb_checkpoints -.pylint.d -.spyproject + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# VSCode stuff .vscode *.code-workspace -__pycache__ -# Ignore files exported from SimaPro -*/from_simapro \ No newline at end of file +# Environments +conda-env +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# FreeFileSync +*.ffs_db + +# Temporal files +~$* + +# Pylint +.pylint.d + +# Specific folders +/data/* +*/old +# ignore folder and contents created by src +**/excels/* + +# Allow tracking +!data/raw diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..11bff26 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,25 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace +- repo: https://github.com/psf/black + rev: 25.11.0 + hooks: + - id: black +- repo: https://github.com/pycqa/isort + rev: 7.0.0 + hooks: + - id: isort + name: isort (python) +- repo: local + hooks: + - id: pytest-cov + name: pytest-cov + entry: pytest + args: ["--cov=src"] + language: system + pass_filenames: false + always_run: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..80cf46d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,155 @@ +# Changelog +## 0.9.0 (2022-07-25) +- Files containing CFs information are now stored in .yaml format (instead of .xlsx) + - `add_aesa_pbs()` still reads .xlsx files, which are generated in the background on execution with the help of the functionality added by the `DataConverter` class +- Add check for duplicated CFs in .yaml files + +## 0.8.8 (2022-06-13) +- Add notebooks with use examples +- --- +- Sync `premise`-based branch with this version (v0.8.8+premise) + +## 0.8.7 (2022-05-16) +- Add usage and installation instructions to README +- Add **method for quantification of direct N fixation** +--- +- Sync `premise`-based branch with this version (v0.8.7+premise) + +## 0.8.6 (2022-05-11) +- Split **CBI method** into 3 subcategories: + - total + - direct land use + - CO2eq emissions +--- +- Sync `premise`-based branch with this version (v0.8.6+premise) + +## 0.8.5 (2022-04-19) +- Add `__version__` to method name +- Correct `solve_lca()` + +## 0.8.4 (2022-04-13) +- Add "Occupation, lake, artificial" (land) CF to **CBI method** (CF = 7.69231E-13) + +## 0.8.3 (2022-04-13) +Change/Add CFs of **FWU method**: +- Add "Water, unspecified natural origin" (fossil well and in ground) (CF = 1E-9) +- Add "Water, cooling, unspecified natural origin" (CF = 1E-9) +- Add "Water, turbine use, unspecified natural origin" (CF = -1E-9) +- Add "Water" (fossil well and ground- long-term) (CF = 1E-9) + +## 0.8.2 (2022-04-11) +- Add `checkPBsmethod.ipynb` to `notebooks\test` folder +- Add `utils.py` +- Add strategies to generate "subcategories" for **CBI method** +- Add strategy `add_subcategory_methane_air` for **CBI method** +--- +- Add branch for `premise`-based version of the AESA methods + - Add CFs for specific CO2 flows to account for NETs, see e44988eeba336 + +## 0.8.1 (2022-03-25) +- Move notebooks to `notebooks\dev` folder +- Move source code to `src` folder +- Add package setup files +- Add option to suppress output of `aesa_pbs.add_aesa_pbs()` + +## 0.8.0 (2022-03-22) +AESA (PBs-LCIA) method converted to Brightway-readable format. + +> **NOTE**: Changelog for versions `<0.8.0` refers to the implementation of the method in SimaPro + +## 0.7.2 (2020-09-09) +CFs for CO2 associated with land transformation are modified consistently with the IPCC recommendations and considering the ecoinvent approach, in which pulse CO2 emissions for Land Use Change are already "amortized" over the plantation lifetime. + +The characterization factors for CO2 fossil and CO2, land transformation, are now the same, consistently with other common LCA methodologies. + +### **Climate change - CO2 concentration** +CF for "Carbon dioxide, land transformation" has been changed from 8.97E-14 to 2.69E-11 (ppm / kg CO2) + +### **Climate change - Energy imbalance** +CF for "Carbon dioxide, land transformation" has been changed from 1.18E-15 to 3.53E-13 (Wm-2 / kg CO2) + +### **Ocean acidification** +CF for "Carbon dioxide, land transformation" has been changed from 2.74E-16 to 8.22E-14 (Omega Aragon / kg CO2) + +## 0.7.1 (2020-08-14) +### **Damage assessment (% of BII loss)** +The following types of land are added (based on [Hanafiah et al.](https://doi.org/10.1016/j.jclepro.2012.06.016)): +- Occupation, pasture, man made, organic (CF: 0.3) +- Occupation, permanent crop, irrigated (CF: 0.9) +- Occupation, permanent crop, irrigated, extensive (CF: 0.7) +- Occupation, permanent crop, irrigated, intensive (CF: 0.9) +- Occupation, permanent crop, non-irrigated (CF: 0.9) +- Occupation, permanent crop, non-irrigated, extensive (CF: 0.7) +- Occupation, permanent crop, non-irrigated, intensive(CF: 0.9) +- Urban, green areas (0.95) . not in ecoinvent +- Occupation, annual crop, non-irrigated (CF: 0.9 +- Occupation, lakes, artificial (CF: 1) . not in ecoinvent +- Occupation, forest, used (CF: 0.5) . not in ecoinvent +- Occupation, agriculture (CF: 0.9) . not in ecoinvent +- Occupation, annual crop, greenhouse (CF: 0.9) + +> Note: *land types and characterization factors added in "(not PBs) Biological footprint, LU**" (BIILoss.m2a)* + +## 0.7.0 (2020-07-21) +Updates from v0.6.5 + +### **Biogeochemical flows - P** +The following elementary flows are now taken into account: +- Phosphate, (CF = 2.81E-10) +- Phosphorous, total, (8.61E-10) +- Phosphorous, (8.61E-10) + +> Emission to Lake and River are now considered. +> In the v0.65 only Phosphorous, (8.61E-10) to Lake was considered. + +### **Biogeochemical flows - N** +The following elementary flows are now taken into account: +- Nitrate, (CF = 5.51E-9) +- Nitrogen, (CF = 2.44E-8) +- Nitrogen, total, (CF = 2.44E-8) + +> Emission to Lake and River are now considered. +> In v0.65 only Nitrate, (5.51E-9) to Lake/River was considered. + +### **Damage assessment (% of BII loss)** +`At` updated from 1.08E+14 to 1.30E+14 m2 + +> In this version the total area is consistent with [IMAGE model](https://models.pbl.nl/image/index.php/Download_packages) +> In 0.65 the Earth’s total Area considered was 1.08E+14 m2, according to ReCiPe2016. + +Mean Species Abundance (MSA) is used as a proxy of Biological Intactness Index (BII) +> *"The main difference between MSA and BII is that every hectare is given equal weight in MSA, whereas BII gives more weight to species rich areas."* +> \-[Alkemade et al. 2009](https://doi.org/10.1007/s10021-009-9229-5) + +`GWP` (kg CO2 eq): Global Warming Potential (calculated using "ReCiPe 2016 (H) midpoint" characterization factors) +`BF_LU` (BII loss*m2a): Biological footprint for Land Use +`BF_CC` (BII loss*m2a): Biological footprint for Climate Change +`At` (m2a): Earth’s total land (used in 1 yr) = 1.30E+14 +`MSA`: Mean species abundance +> (0: no species; 1: undisturbed biodiversity) + +`(1-MSA)`: Loss of mean species abundance +> (0: no loss of species; 1: complete loss of species) + +[Hanafiah et al.](https://doi.org/10.1016/j.jclepro.2012.06.016) provide `(1-MSA)` values for different land types present in SimaPro. These values are used as the characterization factors to assess "Biological footprint, LU". `(1-MSA)` values are applied to land use inventory flows (m2a). + +`BF_LU` is calculated as `SUM[Ai*(1-MSAi)]` for "i-th" land use type. + +According to [Hanafiah et al.](https://doi.org/10.1016/j.jclepro.2012.06.016), `BF_CC` can be calculated as `BF_CC = 0.27 * GWP` + +"In damage assessment" `BII loss` is finally calculated as `% BII loss = 100 x (BF_LU+BF_CC)/At` + +The factor applied to `GWP` is calculated as `100 x (0.27/At) = 2.07692E-13` +The factor applied to `BF_LU` is calculated as `100 x (1/At) = 7.69231E-13` + +> NOTE: **Indicators with the prefix "(not PBs)" are used exclusively for the damage assessment, where the final indicator is provided.** + +### **N-flows to freshwater considers lake and river sub-compartments** +### **Alternative approaches to address PBs, Biodiversity and Nitrogen Flow** +Are available in the supplementary methods of SUPERLAB project + +## < 0.6.5 (2019) +Add CF for N2O (dinitrogen monoxide) in **Ozone depletion PB**. +From [Algunaibet et al. 2019](https://doi.org/10.1039/c8ee03423k): +> "Although the existing method to compute PBs does not assign a characterization factor that quantifies the N2O impact on the stratospheric ozone depletion PB, N2O emissions do exert a noticeable pressure on the ozone layer. Therefore, we here expand the existing method developed by Ryberg et al. by designing a characterization factor that quantifies the impact of N2O emissions on the stratospheric ozone depletion PB. In essence, we first convert the N2O emissions to CFC-11 equivalent (i.e., 0.018 kg of CFC-11 equivalent per kg of N2O) and then apply the characterization factor that links CFC-11 to the stratospheric ozone depletion PB available in the existing framework." +- dinitrogen monoxide (air, all subcategories) (CF = 1.41E-10) diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..e3a5306 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,74 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! + +cff-version: 1.2.0 +title: bw-AESAmethods +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: Victor + family-names: Tulus + email: vtulus@ethz.ch + affiliation: 'ICB, D-CHAB, ETH Zurich' + orcid: 'https://orcid.org/0000-0001-8774-9492' +identifiers: + - type: doi + value: 10.5281/zenodo.7575887 + description: DOI of release v0.9.0 +repository-code: 'https://github.com/vtulus/AESAmethods' +abstract: >- + Brightway implementation of Absolute Environmental + Sustainability Assessment (AESA) methods +keywords: + - AESA + - LCA + - PB +license: BSD-3-Clause +version: 0.9.0 +date-released: '2023-01-27' +preferred-citation: + authors: + - family-names: Tulus + given-names: Victor + title: Implementation of AESA methods for Brightway2 (v0.9.0) + type: software + date-released: '2023-01-27' + identifiers: + - type: doi + value: 10.5281/zenodo.7575887 + description: DOI of release v0.9.0 +references: + - authors: + - family-names: Ryberg + given-names: M. W. + - family-names: Owsianiak + given-names: M. + - family-names: Richardson + given-names: K. + - family-names: Hauschild + given-names: M. Z. + title: >- + Development of a life-cycle impact assessment methodology linked to the + Planetary Boundaries framework + type: article + doi: 10.1016/j.ecolind.2017.12.065 + - authors: + - family-names: Galán-Martín + given-names: Á. + - family-names: Tulus + given-names: V. + - family-names: Díaz + given-names: I. + - family-names: Pozo + given-names: C. + - family-names: Pérez-Ramírez + given-names: J. + - family-names: Guillén-Gosálbez + given-names: G. + title: >- + Sustainability footprints of a renewable carbon transition for the + petrochemical sector within planetary boundaries + type: article + doi: 10.1016/j.oneear.2021.04.001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7eb9be4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2023, Victor Tulus +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..e1f1095 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include src/aesa_pbs/data/*.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..ba92cfc --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# AESA methods implemented for use in [Brightway](https://github.com/brightway-lca/brightway2) + +- [AESA methods implemented for use in Brightway](#aesa-methods-implemented-for-use-in-brightway) + - [Implemented methods and impact categories](#implemented-methods-and-impact-categories) + - [AESA (PBs-LCIA)](#aesa-pbs-lcia) + - [Changelog](#changelog) + - [Usage](#usage) + - [Installation](#installation) + - [References](#references) + - [Maintainer](#maintainer) + - [License](#license) + +## Implemented methods and impact categories +### AESA (PBs-LCIA) + - climate change + - atmospheric CO2 concentration + - energy imbalance at top-of-atmosphere + - ozone depletion + - stratospheric O3 concentration + - ocean acidification + - carbonate ion concentration + - biogeochemical flows + - phosphorus + - nitrogen + - inverse modelling, surface water + - directly fixated + - land-system change + - global + - freshwater use + - global + - change in biosphere integrity + - functional diversity + - total + - direct land use + - CO2eq emissions + +#### Changelog +See [CHANGELOG](CHANGELOG.md) +## Usage +```python +import brightway2 as bw +import aesa_pbs + +aesa_pbs.__version__ # optionally check current version + +# open an existing bw project or create a new one +bw.projects.set_current("") + +# install AESA PBs methods +aesa_pbs.add_aesa_pbs(verbose=True) +# (optionally set `verbose=False` to avoid seeing the applied strategies) + +# adapt a database for quantification of directly fixated nitrogen +# 1. retrieve list of nitrogenous fertilizers from "" +nflow_activities = aesa_pbs.get_nitrogenous_fertilizers("") + +# 2. create exchanges for 'nitrogen fertilizer' in `activities` if they don't exist already. +aesa_pbs.update_nitrogen_fertilizer_exchanges(nflow_activities, show_updated=True) +``` +See [example](notebooks/examples/how-to-use-aesa-methods.ipynb) for more detailed explanation of the usage. + +## Installation +Currently this package can be only installed locally. +To do so one option can be: + +1. Download the zip file of the package +2. Un-zip to a folder on your machine (copy path to folder) +3. Open CLI: + +```bash +# in the activated environment +pip install "" +# Note: if pip<21.3, use `--use-feature=in-tree-build` flag +``` + +## References +[Ryberg, M. W.; Owsianiak, M.; Richardson, K.; Hauschild, M. Z.](https://doi.org/10.1016/j.ecolind.2017.12.065) developed CFs for the following categories of AESA (PBs-LCIA): "climate change", "ozone depletion", "ocean acidification", "biogeochemical flows", "land-system change" and "freshwater use". +[Galán-Martín, Á.; Tulus, V.; Díaz, I.; Pozo, C.; Pérez-Ramírez, J.; Guillén-Gosálbez, G.](https://doi.org/10.1016/j.oneear.2021.04.001) developed CFs for "change in biosphere integrity, functional diversity" of AESA (PBs-LCIA) + +## Maintainer +- [V.Tulus](https://github.com/vtulus) + +## License +[BSD 3-Clause License](LICENSE). Copyright (c) 2023, Victor Tulus. All rights reserved. diff --git a/TODOs.md b/TODOs.md new file mode 100644 index 0000000..1c5529b --- /dev/null +++ b/TODOs.md @@ -0,0 +1,17 @@ +### List of future improvements + +- [ ] add comments to YAML files. With [ruamel.yaml](https://yaml.readthedocs.io/en/latest/)? +- [ ] in `n_direct_fixation.py` wrap functions in a class. +- [ ] Remove (possible) duplicated CFs at writing methods. +- [ ] add `delete_method` function +- [ ] make test ipynb (checkPBsmehtod) robust +- [ ] why no method for direct P quantification? should it be done similar to "direct N fertilizer" method? +--- +- [x] move files with CFs to non-binary files. ~~CSV? JSON?~~ **YAML!** Convert them to excel before reading in bw. +- [x] update CHANGELOG up to the latest version +- [x] add to the CHANGELOG the information about N2O in ozone depletion category (first appeared in Algunaibet et al. 2019) +- [x] add method: direct fertilizer quantification +- [x] add \_\_version__ to methods' names, this will allow to install multiple versions +- [x] split CBI category into 2 stressors: land occupation and GWP +- [x] add `Usage` instructions to README +- [x] add `Installation` instructions to README diff --git a/data/raw/lcia-results-from-sp910-combined.xlsx b/data/raw/lcia-results-from-sp910-combined.xlsx new file mode 100644 index 0000000..ca44246 Binary files /dev/null and b/data/raw/lcia-results-from-sp910-combined.xlsx differ diff --git a/notebooks/WriteAESAmethod.ipynb b/notebooks/WriteAESAmethod.ipynb new file mode 100644 index 0000000..d41de64 --- /dev/null +++ b/notebooks/WriteAESAmethod.ipynb @@ -0,0 +1,638 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "import brightway2 as bw\n", + "import bw2data as bd\n", + "import markdown\n", + "from IPython.display import HTML" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "65ec693b-84ee-4c97-848c-5499d12396b1", + "metadata": {}, + "outputs": [], + "source": [ + "import aesa_pbs" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6754aa93-b048-4021-879d-eb2ca4e06153", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.0'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "499a11e7-2655-40a3-87b1-9bc9a2b31df4", + "metadata": {}, + "outputs": [], + "source": [ + "# dir(aesa_pbs)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "raw", + "id": "88019b75-ee80-4279-8a48-54bf8387eda6", + "metadata": {}, + "source": [ + "# import sys\n", + "# import os\n", + "\n", + "# module_path = os.path.abspath(os.path.join(\"../src\"))\n", + "# # `..` indicate a relative path to `aesa_pbs` directory\n", + "# if module_path not in sys.path:\n", + "# sys.path.append(module_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3269ac18-3d4c-43cb-a6c5-8299dd818520", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', 'biogeochemical flows', 'nitrogen')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'land-system change', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 10 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'climate change', 'energy imbalance at top-of-atmosphere')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.20 seconds\n", + "Wrote 1 LCIA methods with 98 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'ocean acidification', 'carbonate ion concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.17 seconds\n", + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'change in biosphere integrity', 'functional diversity')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.21 seconds\n", + "Wrote 1 LCIA methods with 76 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'climate change', 'atmospheric CO2 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.28 seconds\n", + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'biogeochemical flows', 'phosphorus')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.24 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'freshwater use', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.26 seconds\n", + "Wrote 1 LCIA methods with 12 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', 'ozone depletion', 'stratospheric O3 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.18 seconds\n", + "Wrote 1 LCIA methods with 75 characterization factors\n", + "\n" + ] + } + ], + "source": [ + "aesa_pbs.add_aesa_pbs()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "132ff322-178d-49f1-9132-c4ed0c79cb03", + "metadata": {}, + "outputs": [], + "source": [ + "# deleted all PBs related methods from project:\n", + "\n", + "# for method in [method for method in bd.methods if \"PB\" in str(method)]:\n", + "# del bd.methods[method]\n", + "\n", + "# del bd.methods[('AESA', 'trial-CC_CO2concentration')]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f2ef0c98-7334-426c-a2fd-db3b23c56a26", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('AESA (PBs-LCIA)', 'biogeochemical flows', 'nitrogen'),\n", + " ('AESA (PBs-LCIA)', 'land-system change', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " 'climate change',\n", + " 'energy imbalance at top-of-atmosphere'),\n", + " ('AESA (PBs-LCIA)', 'ocean acidification', 'carbonate ion concentration'),\n", + " ('AESA (PBs-LCIA)', 'change in biosphere integrity', 'functional diversity'),\n", + " ('AESA (PBs-LCIA)', 'climate change', 'atmospheric CO2 concentration'),\n", + " ('AESA (PBs-LCIA)', 'biogeochemical flows', 'phosphorus'),\n", + " ('AESA (PBs-LCIA)', 'freshwater use', 'global'),\n", + " ('AESA (PBs-LCIA)', 'ozone depletion', 'stratospheric O3 concentration')]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[method for method in bd.methods if \"PB\" in str(method)]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6ff9f43a-b6f8-43c2-bb0c-975a3e557bd7", + "metadata": {}, + "outputs": [], + "source": [ + "cc_ei = bd.Method(\n", + " (\"AESA (PBs-LCIA)\", \"climate change\", \"atmospheric CO2 concentration\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "bc41ee3c-6125-4d29-9519-af65adbd44be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['description', 'filename', 'unit', 'abbreviation', 'num_cfs'])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cc_ei.metadata.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "37345f26-6f61-4388-8b4c-7c7ee1eb7c7a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['overview', 'authors', 'doi', 'current_version', 'changelog', 'implemented_by'])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "json.loads(cc_ei.metadata[\"description\"]).keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "28428cda-15c4-4d02-bec4-9c2cb72bd24b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ryberg, M. W.; Owsianiak, M.; Richardson, K.; Hauschild, M. Z.\n" + ] + } + ], + "source": [ + "print(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"authors\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "61e5c49d-02dc-4e60-9590-c72ed50ef399", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://doi.org/10.1016/j.ecolind.2017.12.065\n" + ] + } + ], + "source": [ + "print(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"doi\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9b7edb13-9ed7-4b7d-874a-a5e3c6d24e10", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v0.8.0\n" + ] + } + ], + "source": [ + "print(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"current_version\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "55722427-1a30-4c99-ab7a-14c3091228b0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tulus, V.\n" + ] + } + ], + "source": [ + "print(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"implemented_by\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "34a2c46f-8134-4218-9077-9133dc23a37f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Find changelog here: https://github.com/vtulus/AESAmethods/blob/master/CHANGELOG.md\n" + ] + } + ], + "source": [ + "print(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"changelog\"]))" + ] + }, + { + "cell_type": "raw", + "id": "07dd3ca1-9594-41ce-8e87-0df6529f88f6", + "metadata": { + "tags": [] + }, + "source": [ + "HTML(markdown.markdown(\"\".join(json.loads(cc_ei.metadata[\"description\"])[\"changelog\"])))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "49a54651-3d55-4558-a0b6-659312c602c7", + "metadata": {}, + "outputs": [], + "source": [ + "# bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "4934177e-0cec-49d0-9851-e1d8bf424d0a", + "metadata": {}, + "outputs": [], + "source": [ + "act = [\n", + " act\n", + " for act in bw.Database(\"ei35_cutoff\")\n", + " if \"electricity production, natural gas, combined cycle power plant\" in act[\"name\"]\n", + " and 'CN-XJ' in act[\"location\"]\n", + "][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "56eb0518-8184-4f80-9245-48f980aa6371", + "metadata": {}, + "outputs": [], + "source": [ + "# act = bw.Database(\"ecoinvent 3.5\").random()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c4cbadb0-9f59-425b-b26e-599aa9bc344d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XJ, None)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "act" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "5854c32c-e5e6-4560-b1f7-074d5aa4be39", + "metadata": {}, + "outputs": [], + "source": [ + "# PyPardisoError: The Pardiso solver failed with error code -3. See Pardiso documentation for details.\n", + "# solution: https://stackoverflow.com/questions/70665142/pypardisoerror-the-pardiso-solver-failed-with-error-code-3-see-pardiso-docum" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "247959be-fa96-4ac8-8662-5cf015101032", + "metadata": {}, + "outputs": [], + "source": [ + "# lca = bw.LCA(demand={act: 1000}, method=cc_ei.name)\n", + "# lca.lci()\n", + "# lca.lcia()\n", + "# lca.score\n", + "# lca.method\n", + "# bd.Method(lca.method).metadata[\"unit\"]\n", + "# lca.demand" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "76da0cd3-3451-41bb-9abe-addfbcb4df63", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('AESA (PBs-LCIA)', 'biogeochemical flows', 'nitrogen') 2.4029810407206315e-12 Tg N\n", + "('AESA (PBs-LCIA)', 'land-system change', 'global') 8.952845449129889e-14 % forested land\n", + "('AESA (PBs-LCIA)', 'climate change', 'energy imbalance at top-of-atmosphere') 2.3004136821040066e-10 Wm-2\n", + "('AESA (PBs-LCIA)', 'ocean acidification', 'carbonate ion concentration') 5.324032739401178e-11 omega aragonite\n", + "('AESA (PBs-LCIA)', 'change in biosphere integrity', 'functional diversity') 7.256630704070737e-12 % BII loss\n", + "('AESA (PBs-LCIA)', 'climate change', 'atmospheric CO2 concentration') 1.74229650357756e-08 ppm\n", + "('AESA (PBs-LCIA)', 'biogeochemical flows', 'phosphorus') 4.01601803929892e-15 Tg P\n", + "('AESA (PBs-LCIA)', 'freshwater use', 'global') 2.4581489989510518e-09 km3\n", + "('AESA (PBs-LCIA)', 'ozone depletion', 'stratospheric O3 concentration') 2.07276193502035e-12 Dobson unit\n" + ] + } + ], + "source": [ + "for method in [method for method in bd.methods if \"PB\" in str(method)]:\n", + " lca = bw.LCA(demand={act: 1000}, method=method)\n", + " lca.lci()\n", + " lca.lcia()\n", + " print(method, lca.score, bd.Method(lca.method).metadata[\"unit\"])" + ] + }, + { + "cell_type": "raw", + "id": "9bd49d1c-72ea-4bb3-b56f-be7893b0c9fa", + "metadata": {}, + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "raw", + "id": "a3a00909-956a-4e1e-9676-36d6b9528744", + "metadata": {}, + "source": [ + "np.isclose(7.256630704070737e-12*1e5, 1.4466237E-10*1e5)" + ] + }, + { + "cell_type": "raw", + "id": "d084575c-85b1-4fcf-9bf7-7cc6d216a878", + "metadata": {}, + "source": [ + "np.isclose(2.4581489989510518e-09, 2.415162E-9)" + ] + }, + { + "cell_type": "raw", + "id": "9b4b89d6-d7c5-4bf7-bbb1-9055fec79fb1", + "metadata": {}, + "source": [ + "np.isclose(2.07276193502035e-12, 2.0739006E-12)" + ] + }, + { + "cell_type": "raw", + "id": "41244aeb-8f95-4133-955b-cef84b232818", + "metadata": {}, + "source": [ + "np.isclose(1.74229650357756e-08, 1.7432862E-8)" + ] + }, + { + "cell_type": "raw", + "id": "5b71f2d7-7b63-41c4-8ec7-86be23c22cee", + "metadata": {}, + "source": [ + "np.isclose(2.4029810407206315e-12, 1.5164064E-12)" + ] + }, + { + "cell_type": "raw", + "id": "4824bdb8-afe2-485e-828d-b762ca3df4c3", + "metadata": {}, + "source": [ + "\"Change in biosphere integrity - BII loss\"\t\"% BII loss\"\t1.4466237E-10\n", + "\"Freshwater use - Global\"\t\"km3\"\t2.415162E-9\n", + "\"Stratospheric ozone depletion\"\t\"DU\"\t2.0739006E-12\n", + "\"Climate change - CO2 concentration\"\t\"ppm\"\t1.7432862E-8\n", + "\"Biogeochemical flows - N\"\t\"Tg N\"\t1.5164064E-12\n", + "\"Ocean acidification\"\t\"Omega Aragon\"\t5.327057E-11\n", + "\"Land-system change - Global\"\t\"%\"\t8.9556587E-14\n", + "\"Biogeochemical flows - P\"\t\"Tg P\"\t4.9823559E-15\n", + "\"Climate change - Energy imbalance\"\t\"Wm-2\"\t2.3017236E-10" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/ExploreBiosphere3.ipynb b/notebooks/dev/ExploreBiosphere3.ipynb new file mode 100644 index 0000000..8c13da2 --- /dev/null +++ b/notebooks/dev/ExploreBiosphere3.ipynb @@ -0,0 +1,570 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "341cc327-c6c0-4293-85f9-6f5ac80247dd", + "metadata": {}, + "outputs": [], + "source": [ + "import bw2data as bd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4c2c266d-6195-4d70-a6f6-42fbcddecd37", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0b57e5e5-155c-4d90-bc18-521e32e82b2a", + "metadata": {}, + "outputs": [], + "source": [ + "biodb = bd.Database(\"biosphere3\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "234a1f91-28e4-451a-91fc-6459e33ac9a1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('air',),\n", + " ('air', 'indoor'),\n", + " ('air', 'low population density, long-term'),\n", + " ('air', 'lower stratosphere + upper troposphere'),\n", + " ('air', 'non-urban air or from high stacks'),\n", + " ('air', 'urban air close to ground'),\n", + " ('economic', 'primary production factor'),\n", + " ('inventory indicator', 'output flow'),\n", + " ('inventory indicator', 'resource use'),\n", + " ('inventory indicator', 'waste'),\n", + " ('natural resource', 'biotic'),\n", + " ('natural resource', 'fossil well'),\n", + " ('natural resource', 'in air'),\n", + " ('natural resource', 'in ground'),\n", + " ('natural resource', 'in water'),\n", + " ('natural resource', 'land'),\n", + " ('social',),\n", + " ('soil',),\n", + " ('soil', 'agricultural'),\n", + " ('soil', 'forestry'),\n", + " ('soil', 'industrial'),\n", + " ('water',),\n", + " ('water', 'fossil well'),\n", + " ('water', 'ground-'),\n", + " ('water', 'ground-, long-term'),\n", + " ('water', 'ocean'),\n", + " ('water', 'surface water')]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# unique categories in biosphere3\n", + "sorted(list({i[\"categories\"] for i in biodb}))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d6a7301e-bc26-4053-bfaf-d0006e2622ad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane' (kilogram, None, ('air', 'urban air close to ground'))]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# there is only one \"methane\" flow in biosphere3, it has category and sub-category\n", + "[i for i in biodb if \"methane\" == str(i[\"name\"]).lower()]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9f383712-d9ed-4261-a129-38d20132198b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Carbon monoxide, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Carbon dioxide, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Dimethyl ether' (kilogram, None, ('air', 'indoor'))]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# all flows with subcategory \"indoor\"\n", + "[i for i in biodb if \"indoor\" in str(i[\"categories\"]).lower()]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "77505cc7-f0b4-450a-81ad-2e55f9543a10", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'urban air close to ground')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'low population density, long-term')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'lower stratosphere + upper troposphere')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'non-urban air or from high stacks')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air',))]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in biodb if \"methane, from soil or biomass stock\" in str(i[\"name\"]).lower()]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e06d734c-c356-450e-b4a3-14e187c8d61d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Water' (cubic meter, None, ('water', 'ground-, long-term')),\n", + " 'Water' (cubic meter, None, ('water', 'fossil well')),\n", + " 'Water' (cubic meter, None, ('water',)),\n", + " 'Water' (cubic meter, None, ('water', 'ocean')),\n", + " 'Water' (cubic meter, None, ('water', 'ground-')),\n", + " 'Fresh water (obsolete)' (cubic meter, None, ('water', 'surface water')),\n", + " 'Salt water (obsolete)' (cubic meter, None, ('water', 'ocean')),\n", + " 'Water' (cubic meter, None, ('water', 'surface water'))]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"water\" in str(flow[\"name\"]).lower()\n", + " and \"water\" == flow[\"categories\"][0]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8536174e-7e4c-4041-ba86-a15618fbab81", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Water, lake' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, unspecified natural origin' (cubic meter, None, ('natural resource', 'fossil well')),\n", + " 'Water, in air' (cubic meter, None, ('natural resource', 'in air')),\n", + " 'Water, unspecified natural origin' (cubic meter, None, ('natural resource', 'in ground')),\n", + " 'Water, salt, ocean' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, well, in ground' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, salt, sole' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, river' (cubic meter, None, ('natural resource', 'in water')),\n", + " 'Water, cooling, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"water\" in str(flow[\"name\"]).lower()\n", + " and \"natural resource\" == flow[\"categories\"][0]\n", + " and \"cubic meter\" == flow[\"unit\"]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "41a40d3e-19aa-4125-9772-38a8159c6450", + "metadata": {}, + "outputs": [], + "source": [ + "w = sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"water\" in str(flow[\"name\"]).lower()\n", + " and \"water\" == flow[\"categories\"][0]\n", + " ]\n", + ")[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d5e5d53d-e6a5-4438-a5fc-985fb02477bb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'categories': ('water', 'ground-, long-term'),\n", + " 'code': '06d4812b-6937-4d64-8517-b69aabce3648',\n", + " 'CAS number': '007732-18-5',\n", + " 'name': 'Water',\n", + " 'database': 'biosphere3',\n", + " 'unit': 'cubic meter',\n", + " 'type': 'emission'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w.as_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3f79a267-8342-4131-81bc-82226a888526", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Water, well, in ground' (cubic meter, None, ('natural resource', 'in water'))]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"water, well\" in str(flow[\"name\"]).lower()\n", + " and \"natural resource\" == flow[\"categories\"][0]\n", + " and \"cubic meter\" == flow[\"unit\"]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b37be116-40bb-4f66-ac70-fc8be54a459d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 3 object(s):\n", + "\tbiosphere3\n", + "\tei35_apos\n", + "\tei35_cutoff" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bd.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "d9fc6f86-862a-41d6-9406-a8a3333211ab", + "metadata": {}, + "outputs": [], + "source": [ + "eidb = bd.Database(\"ei35_apos\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "7535df68-39aa-4d36-a983-156227b3ac53", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'electricity production, hydro, run-of-river' (kilowatt hour, IN-AR, None)" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "next(ds for ds in eidb for exc in ds.biosphere() if \"water, turbine use\" in str(biodb.get(exc[\"flow\"])).lower())" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "41c4b627-feee-4d2c-b54c-b00d0ff1e1fe", + "metadata": {}, + "outputs": [], + "source": [ + "# [exc for exc in [ds for ds in eidb if \"'soy-based resin production' (kilogram, US, None)\" in str(ds)][0].biosphere()]" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "871f2cff-674b-4b43-a8cc-f3e1543dad29", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'electricity production, hard coal' (kilowatt hour, PT, None)" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "next(ds for ds in eidb for exc in ds.biosphere() if \"water, cooling\" in str(biodb.get(exc[\"flow\"])).lower())" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "0366950c-d2d8-4f41-9939-6c4ccdb56c0b", + "metadata": {}, + "outputs": [], + "source": [ + "rdmact = eidb.random()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "aca35bb3-a297-4511-a47d-d26d705d6e13", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['comment', 'classifications', 'activity type', 'activity', 'database', 'filename', 'location', 'name', 'synonyms', 'parameters', 'authors', 'type', 'reference product', 'flow', 'unit', 'production amount', 'code'])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdmact.as_dict().keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "f19aed6a-ae96-4502-be5d-543467f932f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'treatment of waste glass, unsanitary landfill, very wet infiltration class (1000mm)' (kilogram, GLO, None)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eidb.get(rdmact[\"code\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4b582b4-bf63-44ae-b07b-1aedba6f01f7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "3524e394-455c-4c97-9414-efa5e1ad391f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Zinc, ion' (kilogram, None, ('water', 'ground-, long-term'))" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "biodb.get([exc[\"flow\"] for exc in rdmact.biosphere()][0])" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "679b27e6-f508-4fdf-be34-51d1ac4b971d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Nitrate' (kilogram, None, ('water', 'ocean')),\n", + " 'Nitrate' (kilogram, None, ('water',)),\n", + " 'Nitrate' (kilogram, None, ('water', 'surface water')),\n", + " 'Nitrate' (kilogram, None, ('water', 'ground-, long-term')),\n", + " 'Nitrate' (kilogram, None, ('water', 'ground-'))]" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"nitrate\" in str(flow[\"name\"]).lower()\n", + " and \"water\" == flow[\"categories\"][0]\n", + " # and \"cubic meter\" == flow[\"unit\"]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "099ffc75-abed-4531-87fa-ee706bac889e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Nitrogen' (kilogram, None, ('water', 'ground-')),\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water', 'ground-, long-term')),\n", + " 'Nitrogen dioxide' (kilogram, None, ('water', 'surface water')),\n", + " 'Nitrogen' (kilogram, None, ('water', 'ground-, long-term')),\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water', 'ocean')),\n", + " 'Nitrogen' (kilogram, None, ('water', 'ocean')),\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water',)),\n", + " 'Nitrogen' (kilogram, None, ('water', 'surface water')),\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water', 'ground-')),\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water', 'surface water')),\n", + " 'Nitrogen' (kilogram, None, ('water',))]" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(\n", + " [\n", + " flow\n", + " for flow in biodb\n", + " if \"nitrogen\" in str(flow[\"name\"]).lower()\n", + " and \"water\" == flow[\"categories\"][0]\n", + " # and \"cubic meter\" == flow[\"unit\"]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e52e269d-5b01-401d-b045-d46deeca186a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESABiogeochemicalFlows.ipynb b/notebooks/dev/GetAESABiogeochemicalFlows.ipynb new file mode 100644 index 0000000..c9ed071 --- /dev/null +++ b/notebooks/dev/GetAESABiogeochemicalFlows.ipynb @@ -0,0 +1,532 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import BiogeochemicalFlows methods\n", + " > Nitrogen \n", + " > Phosphorus" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"BiogeochemicalFlow_N\"\n", + "# method_category = \"BiogeochemicalFlow_P\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "77d09c64-cac4-44cf-a5e4-b73524eb158c", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b159467e-cb47-4826-afb5-29bca8c534e2", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "666531d2-0227-4f2b-bd49-b12f49c67f29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.01 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Biogeochemical flows - N (fw)') Tg N\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 5.51e-09,\n", + " 'CAS number': '014797-55-8',\n", + " 'categories': ('Water', 'lake'),\n", + " 'name': 'Nitrate',\n", + " 'unit': 'kg'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "06191e76-1255-41cf-a466-ea8bc22130d3", + "metadata": {}, + "outputs": [], + "source": [ + "# link_by_name_and_categories = partial(\n", + "# bi.strategies.link_iterable_by_fields,\n", + "# other=bd.Database(bd.config.biosphere),\n", + "# kind=\"biosphere\",\n", + "# fields=(\"name\", \"categories\"),\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.44 seconds\n", + "1 methods\n", + "6 cfs\n", + "2 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 6, 2)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Nitrogen, total', ('water', 'surface water'))]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\" \n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Biogeochemical flows - N (fw)\n", + "\t Nitrogen, total ('water', 'surface water') 2.44e-08\n", + "\t Nitrogen, total ('water', 'surface water') 2.44e-08\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ca44f225-9239-4823-ab27-12432a78d24a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Phosphorus pentachloride' (kilogram, None, ('water',)),\n", + " 'Phosphorus' (kilogram, None, ('water',)),\n", + " 'Phosphorus trichloride' (kilogram, None, ('water',)),\n", + " 'Phosphorus' (kilogram, None, ('water', 'ground-')),\n", + " 'Phosphorus oxychloride' (kilogram, None, ('water',)),\n", + " 'Phosphorus' (kilogram, None, ('water', 'ground-, long-term')),\n", + " 'Phosphorus' (kilogram, None, ('water', 'surface water')),\n", + " 'Phosphorus' (kilogram, None, ('water', 'ocean'))]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b3 = bd.Database(\"biosphere3\")\n", + "[flow for flow in b3 if \"phosphorus\" in flow[\"name\"].lower() and \"water\" in str(flow[\"categories\"])]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Biogeochemical flows - N (fw)\n", + "\n", + "\n" + ] + } + ], + "source": [ + "check_equivalent_linked(si, [\"Phosphorus\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "4 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 4, 0)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Biogeochemical flows - N (fw) : 4 2\n", + "Duplicates removed.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "3d29373b-7b73-430b-9051-31df42489c4d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 methods\n", + "2 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 2, 0)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c06387ca-d533-47ba-bddb-5eca77b14288", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "raw", + "id": "e46c41e5-b3d7-4102-9a29-eebad7bfb002", + "metadata": {}, + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESABiosphereIntegrity.ipynb b/notebooks/dev/GetAESABiosphereIntegrity.ipynb new file mode 100644 index 0000000..fe1725d --- /dev/null +++ b/notebooks/dev/GetAESABiosphereIntegrity.ipynb @@ -0,0 +1,1379 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "import re\n", + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "import bw_recipe_2016\n", + "from bw_recipe_2016 import GlobalWarming, extract_recipe, get_biosphere_database\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "markdown", + "id": "de0d3c7b-8995-4e10-a51e-8e2218dce28f", + "metadata": {}, + "source": [ + "# create Change in Biosphere Integrity method\n", + "> Functional diversity, BII [biodiversity intactness index]\n", + "\n", + "> Mean Species Abundance (MSA) is used as a proxy of Biological Intactness Index (BII)\n", + "“The main difference between MSA and BII is that every hectare is given equal weight in MSA, \n", + "whereas BII gives more weight to species rich areas.” (Alkemade et al. 2009)\n", + "\n", + "> Hanafiah et al., 2012 provides (1-MSA) values for diffent land types present in SimaPro.\n", + "(1-MSA) values are used as the characterization factors to assess \"\"Biological footprint, LU\"\". \n", + "(1-MSA) values are applied to land use inventory flows (m2a).\n", + "\n", + "% of BII loss ~ % of (1-MSA) = 100 x (BF_LU+BF_CC)/At \n", + "where, \n", + "(1-MSA) = Loss of mean species aboundance \n", + "> (from 0: no loss of species; to 1: complete loss of species) \n", + "\n", + "MSA = Mean species abundance \n", + "> (from 0: no species; to 1: undisturbed biodevirsity) \n", + "\n", + "BF_LU [BII loss*m2a] = Biological footprint for Land Use \n", + "BF_CC [BII loss*m2a] = Biological footprint for Climate Change \n", + "At [m2yr] = Earth’s total land (used in 1 yr) = 1.30E+14 \n", + "\n", + "where \n", + "BF_LU is calculated as SUM[Ai*(1-MSAi)] for \"\"i-th\"\" land use types \n", + "> (CFs provided in Table 1 in Hanafiah et al. 2012) \n", + "\n", + "BF_CC = 0.27 * GWP \n", + "> GWP [kg CO2 eq] = Global Warming Potential for 100-year time horizon\n", + " (calculated using \"\"ReCiPe 2016 (H) midpoint\"\" characterization factors)\n", + "\n", + "The factor applied to GWP is calculated as 100 x (0.27/At) = `2.07692E-13` \n", + "the factor applied to BF_LU is calculated as 100 x (1/At) = `7.69231E-13`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "14712f55-a84d-4286-8bb1-91ba61de5cac", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR\n", + " + r\"\\src\\aesa_pbs\\data\"\n", + " + f\"\\\\aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e1cdec59-faa1-4d7b-911f-3c32ac9f1c63", + "metadata": {}, + "outputs": [], + "source": [ + "biodb = bd.Database(\"biosphere3\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "473977e5-f562-4388-9a20-f174dc35b2f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane, from soil or biomass stock' (kilogram, None, ('air', 'low population density, long-term')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air',)),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'lower stratosphere + upper troposphere')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'urban air close to ground')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'non-urban air or from high stacks')),\n", + " 'Methane, from soil or biomass stock' (kilogram, None, ('air', 'indoor'))]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in biodb if \"methane, from soil or biomass stock\" in str(i[\"name\"]).lower()]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4aa89fc2-3f05-4a7b-a357-1d302b9e91bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Carbon monoxide, from soil or biomass stock' (kilogram, None, ('air', 'indoor')),\n", + " 'Dimethyl ether' (kilogram, None, ('air', 'indoor')),\n", + " 'Carbon dioxide, from soil or biomass stock' (kilogram, None, ('air', 'indoor'))]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in biodb if \"indoor\" in str(i[\"categories\"]).lower()]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3b71aa84-be37-402a-98de-56b758e4606b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('air',),\n", + " ('air', 'indoor'),\n", + " ('air', 'low population density, long-term'),\n", + " ('air', 'lower stratosphere + upper troposphere'),\n", + " ('air', 'non-urban air or from high stacks'),\n", + " ('air', 'urban air close to ground'),\n", + " ('economic', 'primary production factor'),\n", + " ('inventory indicator', 'output flow'),\n", + " ('inventory indicator', 'resource use'),\n", + " ('inventory indicator', 'waste'),\n", + " ('natural resource', 'biotic'),\n", + " ('natural resource', 'fossil well'),\n", + " ('natural resource', 'in air'),\n", + " ('natural resource', 'in ground'),\n", + " ('natural resource', 'in water'),\n", + " ('natural resource', 'land'),\n", + " ('social',),\n", + " ('soil',),\n", + " ('soil', 'agricultural'),\n", + " ('soil', 'forestry'),\n", + " ('soil', 'industrial'),\n", + " ('water',),\n", + " ('water', 'fossil well'),\n", + " ('water', 'ground-'),\n", + " ('water', 'ground-, long-term'),\n", + " ('water', 'ocean'),\n", + " ('water', 'surface water')]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# unique categories in biosphere3\n", + "sorted(list({i[\"categories\"] for i in biodb}))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bf24c70f-31ba-47f6-97e6-a3ba46079308", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Methane' (kilogram, None, ('air', 'urban air close to ground'))]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in biodb if \"methane\" == str(i[\"name\"]).lower()]" + ] + }, + { + "cell_type": "markdown", + "id": "e7b6e672-6dd8-447c-a1d2-76faaabbefcc", + "metadata": {}, + "source": [ + "## Biological footprint: Climate Change component\n", + "> import ReCiPe2016 Midpoint(H) method and correct the units" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "1a9dea99-fd42-4f80-9684-81a8dce4f668", + "metadata": {}, + "outputs": [], + "source": [ + "data = extract_recipe()[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "778582cd-0b5a-4be9-b8cb-a63e03b719f1", + "metadata": {}, + "outputs": [], + "source": [ + "biosphere = get_biosphere_database()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "011cd1a3-679f-46e4-976f-9c1707f1877f", + "metadata": {}, + "outputs": [], + "source": [ + "gw = GlobalWarming(data, biosphere)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4668902c-3bb0-4e72-a8c8-11246bc33af4", + "metadata": {}, + "outputs": [], + "source": [ + "# gw.apply_strategies()\n", + "# will get a TypeError message, need to correct the \"split_synonyms\" strategy" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "4cfb385a-e856-4b08-81d6-8be0ddf59328", + "metadata": {}, + "outputs": [], + "source": [ + "multiple = re.compile(r\"^(.*)\\((.*)\\)$\")\n", + "\n", + "\n", + "def split_synonyms_corrected(data):\n", + " \"\"\"Split synonyms given in one string.\n", + "\n", + " Also makes sure ``synonyms`` exists, has no trailing whitespace,\n", + " and is a list.\n", + " E.g. ``dinitrogen oxide (nitrous oxide)`` to\n", + " ``[\"dinitrogen oxide\", \"nitrous oxide\"]``,\"\"\"\n", + " for ds in data:\n", + " for cf in ds[\"exchanges\"]:\n", + " if cf.get(\"synonyms\"):\n", + " match = multiple.match(str(cf[\"synonyms\"])) # CORRECTION: make it str\n", + " if match:\n", + " cf[\"synonyms\"] = [x.strip() for x in match.groups()]\n", + " elif not isinstance(cf[\"synonyms\"], list):\n", + " cf[\"synonyms\"] = [cf[\"synonyms\"].strip()]\n", + " else:\n", + " cf[\"synonyms\"] = []\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "45e2d143-112c-4726-905b-b30fc2b4e040", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: fix_perspective_string\n", + "Applying strategy: generic_reformat\n", + "Applied 2 strategies in 0.00 seconds\n", + "Applying strategy: split_synonyms_corrected\n", + "Applying strategy: more_synonyms\n", + "Applying strategy: fix_unit_string\n", + "Applying strategy: name_matcher\n", + "Applying strategy: add_biomass_stock_cfs\n", + "Applying strategy: add_air_category\n", + "Applying strategy: complete_method_name\n", + "Applying strategy: match_multiple\n", + "Applying strategy: final_method_name\n", + "Applying strategy: check_duplicate_cfs\n", + "Applied 9 strategies in 0.03 seconds\n", + "3 methods\n", + "1083 cfs\n", + "519 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(3, 1083, 519)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gw.apply_strategies(gw.strategies[:2])\n", + "gw.apply_strategy(split_synonyms_corrected) # corrected strategy\n", + "gw.apply_strategies(gw.strategies[3:])\n", + "gw.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2f141340-6076-46d2-b0de-57e53c73b9e8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "3 methods\n", + "564 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(3, 564, 0)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gw.drop_unlinked()\n", + "gw.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "a638995e-dc4b-4302-bae7-8245e7610bb9", + "metadata": {}, + "outputs": [], + "source": [ + "# gw.data[0][\"exchanges\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3383e00e-7ece-4e39-9b8c-b456f4547016", + "metadata": {}, + "outputs": [], + "source": [ + "def add_air_subcategories(data):\n", + " \"\"\"Add subcategories to 'air' category\"\"\"\n", + " subcategories = [\n", + " (\"air\",),\n", + " (\"air\", \"low population density, long-term\"),\n", + " (\"air\", \"lower stratosphere + upper troposphere\"),\n", + " (\"air\", \"non-urban air or from high stacks\"),\n", + " (\"air\", \"urban air close to ground\"),\n", + " ]\n", + " exchanges_indoor = [\n", + " \"carbon dioxide, from soil or biomass stock\",\n", + " \"dimethyl ether\",\n", + " \"carbon monoxide, from soil or biomass stock\",\n", + " \"methane, from soil or biomass stock\",\n", + " ]\n", + " unique_exchanges = []\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " unique_exchanges.append(exc[\"name\"])\n", + " unique_exchanges = list(set(unique_exchanges))\n", + "\n", + " for method in data:\n", + " for uexc in unique_exchanges:\n", + " if uexc.lower() in exchanges_indoor:\n", + " list_subcategories = subcategories + [(\"air\", \"indoor\")]\n", + " else:\n", + " list_subcategories = subcategories\n", + " count = 0\n", + " for exc in method[\"exchanges\"]:\n", + " if uexc == exc[\"name\"] and \"air\" in str(exc[\"categories\"]):\n", + " exc[\"categories\"] = list_subcategories[count]\n", + " count += 1\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "79f8d822-8aef-4732-b612-1b0debd0a60e", + "metadata": {}, + "outputs": [], + "source": [ + "def add_soil_subcategories(data):\n", + " \"\"\"Add subcategories to 'soil' category\"\"\"\n", + " subcategories = [\n", + " (\"soil\",),\n", + " (\"soil\", \"agricultural\"),\n", + " (\"soil\", \"forestry\"),\n", + " (\"soil\", \"industrial\"),\n", + " ]\n", + "\n", + " unique_exchanges = []\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " unique_exchanges.append(exc[\"name\"])\n", + " unique_exchanges = list(set(unique_exchanges))\n", + "\n", + " for method in data:\n", + " for uexc in unique_exchanges:\n", + " count = 0\n", + " for exc in method[\"exchanges\"]:\n", + " if uexc == exc[\"name\"] and \"soil\" in str(exc[\"categories\"]):\n", + " exc[\"categories\"] = subcategories[count]\n", + " count += 1\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c5115b72-130f-4b85-a0ff-975c107eada9", + "metadata": {}, + "outputs": [], + "source": [ + "def add_subcategory_methane_air(data):\n", + " \"\"\"Add subcategory 'urban air close to ground' to methane\"\"\"\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"methane\" == exc[\"name\"] and \"air\" in str(exc[\"categories\"]):\n", + " exc[\"categories\"] = (\"air\", \"urban air close to ground\")\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "4d1febc3-9db4-4981-a6b3-704e6fc3fb9a", + "metadata": {}, + "outputs": [], + "source": [ + "def change_unit_of_biofootprint_climate_change(data):\n", + " \"\"\"Change the unit of biological footprint climate change (BF_CC).\n", + "\n", + " Units change from kg CO2eq to % of BII loss.\n", + " \"\"\"\n", + " total_land_earth = 1.30e14 # total Earth's area\n", + " # (from IMAGE model https://models.pbl.nl/image/index.php/Download_packages)\n", + " f_individualist = 0.05 # 20-year time horizon (Hanafiah et al. 2012, Table 1)\n", + " f_hierarchist = 0.27 # 100-year time horizon (Hanafiah et al. 2012, Table 1)\n", + " f_egalitarian = 3.87 # infinite time horizon (Hanafiah et al. 2012, Table 1)\n", + "\n", + " # check if CFs were already changed.\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"carbon dioxide, fossil\" in exc[\"name\"] and exc[\"amount\"] != 1:\n", + " return data # if cfs were already changed\n", + "\n", + " for method in data:\n", + " if \"individualist\" in str(method[\"name\"]).lower():\n", + " for exc in method[\"exchanges\"]:\n", + " exc[\"amount\"] = 100 * (\n", + " f_individualist * exc[\"amount\"] / total_land_earth\n", + " )\n", + " elif \"hierarchist\" in str(method[\"name\"]).lower():\n", + " for exc in method[\"exchanges\"]:\n", + " exc[\"amount\"] = 100 * (f_hierarchist * exc[\"amount\"] / total_land_earth)\n", + " elif \"egalitarian\" in str(method[\"name\"]).lower():\n", + " for exc in method[\"exchanges\"]:\n", + " exc[\"amount\"] = 100 * (f_egalitarian * exc[\"amount\"] / total_land_earth)\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "085375dc-82bf-44b5-9145-f166948363bc", + "metadata": {}, + "outputs": [], + "source": [ + "def drop_duplicates(data):\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " unique_exchanges = {\n", + " (o[\"name\"], o[\"categories\"]): o for o in method[\"exchanges\"]\n", + " }\n", + " method[\"exchanges\"] = list(unique_exchanges.values())\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "e43954d0-c2c4-4260-806b-953edfe3df81", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: add_air_subcategories\n", + "Applying strategy: add_soil_subcategories\n", + "Applying strategy: add_subcategory_methane_air\n", + "Applied 3 strategies in 0.00 seconds\n", + "Applying strategy: change_unit_of_biofootprint_climate_change\n", + "Applying strategy: drop_duplicates\n", + "3 methods\n", + "564 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(3, 564, 0)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gw.apply_strategies([add_air_subcategories, add_soil_subcategories, add_subcategory_methane_air])\n", + "gw.apply_strategy(change_unit_of_biofootprint_climate_change)\n", + "gw.apply_strategy(drop_duplicates)\n", + "gw.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "13d7136e-1467-4fb8-836a-d984ced5b268", + "metadata": {}, + "outputs": [], + "source": [ + "# Next gw.write_excel(\"BII_climate_change-component\") will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-BII_climate_change-component.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5edf626e-f3aa-4bce-864a-5d7f4866a7ed", + "metadata": {}, + "outputs": [], + "source": [ + "gw.write_excel(\"BII_climate_change-component\")" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": { + "tags": [] + }, + "source": [ + "## Biological footprint: Land Use component\n", + "> import BF_LU method and correct the units" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"BiologicalFootprint_LU\"" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "cd6441a0-068d-4223-aa6d-daa349672e2c", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "0844fb01-6678-4398-bb4a-256d7900b66e", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "666531d2-0227-4f2b-bd49-b12f49c67f29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.01 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', '(not PBs) Biological footprint, LU**') BIILoss.m2a\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 0.9,\n", + " 'CAS number': '',\n", + " 'categories': ('Raw', '(unspecified)'),\n", + " 'name': 'Occupation, agriculture',\n", + " 'unit': 'm2a'}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0] # .keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.40 seconds\n", + "1 methods\n", + "67 cfs\n", + "27 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 67, 27)" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "143923db-109d-4272-8832-5cb0a327a6b5", + "metadata": {}, + "outputs": [], + "source": [ + "def drop_duplicates(data):\n", + " for method in data:\n", + "\n", + " unique_exchanges = {\n", + " (o[\"name\"], o[\"categories\"]): o for o in method[\"exchanges\"]\n", + " }\n", + " method[\"exchanges\"] = list(unique_exchanges.values())\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "487336ad-8c5a-4131-b8db-d36f93133551", + "metadata": {}, + "outputs": [], + "source": [ + "link_by_name_and_categories = partial(\n", + " bi.strategies.link_iterable_by_fields,\n", + " other=bd.Database(bd.config.biosphere),\n", + " kind=\"biosphere\",\n", + " fields=(\"name\", \"categories\"),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "633ee300-c3f7-4e68-9c61-8f9abb3eccb9", + "metadata": {}, + "outputs": [], + "source": [ + "def change_to_green_area(data):\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"green areas\" in exc[\"name\"]:\n", + " exc[\"name\"] = re.sub(\"green areas\", \"green area\", exc[\"name\"])\n", + " exc[\"categories\"] = (exc[\"categories\"][0], \"land\")\n", + "\n", + " return data\n", + "\n", + "\n", + "def update_occupation_forest_secondary(data):\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"Occupation, forest, secondary\" in exc[\"name\"]:\n", + " exc[\"name\"] = re.sub(\"secondary\", \"secondary (non-use)\", exc[\"name\"])\n", + " exc[\"categories\"] = (exc[\"categories\"][0], \"land\")\n", + "\n", + " return data\n", + "\n", + "\n", + "def update_occupation_urban(data):\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"Occupation, urban\" in exc[\"name\"]:\n", + " exc[\"name\"] = re.sub(\n", + " \"urban$\", \"urban/industrial fallow (non-use)\", exc[\"name\"]\n", + " )\n", + " exc[\"categories\"] = (exc[\"categories\"][0], \"land\")\n", + "\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c4135f93-9c7f-413e-b0c7-bddfbdc6b451", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: change_to_green_area\n", + "Applying strategy: update_occupation_forest_secondary\n", + "Applying strategy: update_occupation_urban\n", + "Applying strategy: drop_duplicates\n", + "Applying strategy: link_iterable_by_fields\n", + "Applied 5 strategies in 0.24 seconds\n", + "1 methods\n", + "61 cfs\n", + "24 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 61, 24)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies(\n", + " [\n", + " change_to_green_area,\n", + " update_occupation_forest_secondary,\n", + " update_occupation_urban,\n", + " drop_duplicates,\n", + " link_by_name_and_categories,\n", + " ]\n", + ")\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Occupation, agriculture', ('natural resource',)),\n", + " ('Occupation, annual crop, non-irrigated, diverse-intensive',\n", + " ('natural resource',)),\n", + " ('Occupation, annual crop, non-irrigated, fallow', ('natural resource',)),\n", + " ('Occupation, annual crop, non-irrigated, monotone-intensive',\n", + " ('natural resource',)),\n", + " ('Occupation, annual crop, organic', ('natural resource',)),\n", + " ('Occupation, dump site, benthos', ('natural resource',)),\n", + " ('Occupation, forest', ('natural resource',)),\n", + " ('Occupation, forest, natural', ('natural resource',)),\n", + " ('Occupation, forest, primary', ('natural resource',)),\n", + " ('Occupation, forest, used', ('natural resource',)),\n", + " ('Occupation, lakes, artificial', ('natural resource',)),\n", + " ('Occupation, pasture, man made, organic', ('natural resource',)),\n", + " ('Occupation, permanent crop, fruit', ('natural resource',)),\n", + " ('Occupation, permanent crop, fruit, extensive', ('natural resource',)),\n", + " ('Occupation, permanent crop, fruit, intensive', ('natural resource',)),\n", + " ('Occupation, permanent crop, vine', ('natural resource',)),\n", + " ('Occupation, permanent crop, vine, extensive', ('natural resource',)),\n", + " ('Occupation, permanent crop, vine, intensive', ('natural resource',)),\n", + " ('Occupation, sea and ocean', ('natural resource',)),\n", + " ('Occupation, traffic area', ('natural resource',)),\n", + " ('Occupation, traffic area, road embankment', ('natural resource',)),\n", + " ('Occupation, unknown', ('natural resource',)),\n", + " ('Occupation, unspecified, used', ('natural resource',)),\n", + " ('Occupation, water courses, artificial', ('natural resource',))]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\"\n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods, hide_print=True):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + "\n", + " for ix in range(len(imported_methods.data)):\n", + " lst = []\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " lst.append((exc[\"name\"], exc[\"categories\"], exc[\"amount\"]))\n", + " if not hide_print:\n", + " for i in list(set(lst)):\n", + " print(\"\\t\", i)\n", + " print(\"\\n\")\n", + "\n", + " return list(set(lst))\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\n", + " \"\\t\", exc[\"name\"], exc[\"categories\"], exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(not PBs) Biological footprint, LU**\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "[('Occupation, agriculture', ('natural resource',), 0.9),\n", + " ('Occupation, annual crop, non-irrigated, diverse-intensive',\n", + " ('natural resource',),\n", + " 0.9),\n", + " ('Occupation, annual crop, non-irrigated, fallow',\n", + " ('natural resource',),\n", + " 0.7),\n", + " ('Occupation, annual crop, non-irrigated, monotone-intensive',\n", + " ('natural resource',),\n", + " 0.9),\n", + " ('Occupation, annual crop, organic', ('natural resource',), 0.7),\n", + " ('Occupation, dump site, benthos', ('natural resource',), 0.0),\n", + " ('Occupation, forest', ('natural resource',), 0.5),\n", + " ('Occupation, forest, natural', ('natural resource',), 0.0),\n", + " ('Occupation, forest, primary', ('natural resource',), 0.0),\n", + " ('Occupation, forest, used', ('natural resource',), 0.5),\n", + " ('Occupation, lakes, artificial', ('natural resource',), 1.0),\n", + " ('Occupation, pasture, man made, organic', ('natural resource',), 0.3),\n", + " ('Occupation, permanent crop, fruit', ('natural resource',), 0.9),\n", + " ('Occupation, permanent crop, fruit, extensive', ('natural resource',), 0.7),\n", + " ('Occupation, permanent crop, fruit, intensive', ('natural resource',), 0.9),\n", + " ('Occupation, permanent crop, vine', ('natural resource',), 0.9),\n", + " ('Occupation, permanent crop, vine, extensive', ('natural resource',), 0.7),\n", + " ('Occupation, permanent crop, vine, intensive', ('natural resource',), 0.9),\n", + " ('Occupation, sea and ocean', ('natural resource',), 0.0),\n", + " ('Occupation, traffic area', ('natural resource',), 0.95),\n", + " ('Occupation, traffic area, road embankment', ('natural resource',), 0.95),\n", + " ('Occupation, unknown', ('natural resource',), 0.0),\n", + " ('Occupation, unspecified, used', ('natural resource',), 0.0),\n", + " ('Occupation, water courses, artificial', ('natural resource',), 1.0)]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(see_unlinked(si))" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "ca44f225-9239-4823-ab27-12432a78d24a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{('Occupation, lake, artificial', ('natural resource', 'land')),\n", + " ('Occupation, river, artificial', ('natural resource', 'land'))}" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b3 = bd.Database(\"biosphere3\")\n", + "set(\n", + " [\n", + " (flow[\"name\"], flow[\"categories\"])\n", + " for flow in b3\n", + " if \"Occupation,\" in flow[\"name\"] and \"artificial\" in flow[\"name\"] # .lower()\n", + " if \"natural resource\" in str(flow[\"categories\"])\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "raw", + "id": "9ae21de5-c573-4628-8d9c-ee354a38fb90", + "metadata": {}, + "source": [ + "len(\n", + " [\n", + " \"Occupation, agriculture\",\n", + " \"Occupation, annual crop, non-irrigated, diverse-intensive\",\n", + " \"Occupation, annual crop, non-irrigated, fallow\",\n", + " \"Occupation, annual crop, non-irrigated, monotone-intensive\",\n", + " \"Occupation, annual crop, organic\",\n", + " \"Occupation, dump site, benthos\",\n", + " \"Occupation, forest\",\n", + " \"Occupation, forest, natural\",\n", + " \"Occupation, forest, primary\",\n", + " \"Occupation, forest, used\",\n", + " \"Occupation, lakes, artificial\",\n", + " \"Occupation, pasture, man made, organic\",\n", + " \"Occupation, permanent crop, fruit\",\n", + " \"Occupation, permanent crop, fruit, extensive\",\n", + " \"Occupation, permanent crop, fruit, intensive\",\n", + " \"Occupation, permanent crop, vine\",\n", + " \"Occupation, permanent crop, vine, extensive\",\n", + " \"Occupation, permanent crop, vine, intensive\",\n", + " \"Occupation, sea and ocean\",\n", + " \"Occupation, traffic area\",\n", + " \"Occupation, traffic area, road embankment\",\n", + " \"Occupation, unknown\",\n", + " \"Occupation, unspecified, used\",\n", + " \"Occupation, water courses, artificial\",\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "817a0e73-45f6-4f01-bffb-cdf2184536cc", + "metadata": {}, + "source": [ + "> check Occupation, forest, intensive ('natural resource', 'land') 0.8 or 0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(not PBs) Biological footprint, LU**\n", + "\t Occupation, lakes, artificial ('natural resource',) 1.0\n", + "\t Occupation, water courses, artificial ('natural resource',) 1.0\n", + "\t Occupation, river, artificial ('natural resource', 'land') 1.0\n", + "\n", + "\n" + ] + } + ], + "source": [ + "check_equivalent_linked(si, [\"artificial\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "37 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 37, 0)" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "3dbaa8a4-d71c-4fe7-a885-a4e676b2fffe", + "metadata": {}, + "outputs": [], + "source": [ + "def change_unit_of_biofootprint_land_use(data):\n", + " \"\"\"Change the unit of biological footprint land use (BF_LU).\n", + " \n", + " Units change from loss MSA to % of BII loss.\n", + " \"\"\"\n", + " total_land_earth = 1.30e14 # total Earth's area\n", + " # (from IMAGE model https://models.pbl.nl/image/index.php/Download_packages)\n", + "\n", + " # check if CFs were already changed.\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " if \"Occupation, annual crop\" == exc[\"name\"] and exc[\"amount\"] != 0.9:\n", + " return data # if cfs were already changed\n", + "\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " exc[\"amount\"] = 100 * (exc[\"amount\"] / total_land_earth)\n", + "\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "98a1e862-5b11-4d7b-be0c-e07562f14c48", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: change_unit_of_biofootprint_land_use\n", + "1 methods\n", + "37 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 37, 0)" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategy(change_unit_of_biofootprint_land_use)\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "c5d20906-864c-4f7b-9fa3-6a3c6690925e", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(not PBs) Biological footprint, LU** : 37 37\n", + "No duplicates.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "3d29373b-7b73-430b-9051-31df42489c4d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 methods\n", + "37 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 37, 0)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96b5b01d-1095-403c-9136-d591c16e40bb", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(\"BII_land_use-component\") will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-BII_land_use-component.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b638595-b87b-43dc-8a34-98421b132d15", + "metadata": {}, + "outputs": [], + "source": [ + "si.write_excel(\"BII_land_use-component\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESAClimateChange.ipynb b/notebooks/dev/GetAESAClimateChange.ipynb new file mode 100644 index 0000000..b223b5c --- /dev/null +++ b/notebooks/dev/GetAESAClimateChange.ipynb @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import Climate Change methods\n", + " > CO2 concentration, ppm \n", + " > Energy imabalance, Wm-2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "# method_category = \"ClimateChange_AtmosphericCO2Concentration\"\n", + "method_category = \"ClimateChange_EnergyImbalance\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "266c4646-638f-4f04-8c45-1f76045dc2c2", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "cd26de9a-618b-447a-baac-3cb99b78a5a7", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "90c5ed2f-e9f5-4ead-a82d-f540085aaedd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.01 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Climate change - Energy imbalance') Wm-2\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 3.53e-13,\n", + " 'CAS number': '000124-38-9',\n", + " 'categories': ('Air', '(unspecified)'),\n", + " 'name': 'Carbon dioxide',\n", + " 'unit': 'kg'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "06191e76-1255-41cf-a466-ea8bc22130d3", + "metadata": {}, + "outputs": [], + "source": [ + "# link_by_name_and_categories = partial(\n", + "# bi.strategies.link_iterable_by_fields,\n", + "# other=bd.Database(bd.config.biosphere),\n", + "# kind=\"biosphere\",\n", + "# fields=(\"name\", \"categories\"),\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.35 seconds\n", + "1 methods\n", + "100 cfs\n", + "2 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 100, 2)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Carbon dioxide', ('air',)), ('Carbon monoxide', ('air',))]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\" \n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Climate change - Energy imbalance\n", + "\t Carbon dioxide ('air',) 3.53e-13\n", + "\t Carbon monoxide ('air',) 2.74e-13\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": {}, + "outputs": [], + "source": [ + "# check_equivalent_linked(si, [\"Carbon dioxide\", \"Carbon monoxide\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "98 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 98, 0)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Climate change - Energy imbalance : 98 98\n", + "No duplicates.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "386ce9cd-4f83-4255-8887-f4c7dc5a6bb0", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88b84764-1342-4154-9549-20b640a235cc", + "metadata": {}, + "outputs": [], + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESAFreshwaterUse.ipynb b/notebooks/dev/GetAESAFreshwaterUse.ipynb new file mode 100644 index 0000000..591412f --- /dev/null +++ b/notebooks/dev/GetAESAFreshwaterUse.ipynb @@ -0,0 +1,723 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "import re\n", + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import Freshwater Use method\n", + " > Global" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"FreshwaterUse_Global\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ef34b4a3-31d6-429f-ae03-87ed8c59f271", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4fbe665f-7f90-48cc-86e2-9e3bcfed323e", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7eaaad56-4a4c-4c7b-be65-9f6ff97a2192", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.03 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Freshwater use - Global') km3\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': -1e-09,\n", + " 'CAS number': '007732-18-5',\n", + " 'categories': ('Water', 'groundwater'),\n", + " 'name': 'Water, AD',\n", + " 'unit': 'm3'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.45 seconds\n", + "1 methods\n", + "2168 cfs\n", + "2140 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 2168, 2140)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "44a3097e-0234-48e8-ae21-07d361f6841f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\u001b[1;31mSignature:\u001b[0m \u001b[0mbi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrategies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmatch_subcategories\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbiosphere_db_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mremove\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mDocstring:\u001b[0m Given a characterization with a top-level category, e.g. ``('air',)``, find all biosphere flows with the same top-level categories, and add CFs for these flows as well. Doesn't replace CFs for existing flows with multi-level categories. If ``remove``, also delete the top-level CF, but only if it is unlinked.\n", + "\u001b[1;31mFile:\u001b[0m c:\\users\\vitekspc\\virtualenvs\\bw2\\lib\\site-packages\\bw2io\\strategies\\lcia.py\n", + "\u001b[1;31mType:\u001b[0m function\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#TODO: reflect here the changes made to the excel file (add CFs programmatically)\n", + "#TODO: clean this notebook\n", + "bi.strategies.normalize_simapro_biosphere_categories" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d2e40840-effb-43b8-8889-208e70ca9a0b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wrote matching file to:\n", + "C:\\Users\\ViteksPC\\AppData\\Local\\pylca\\Brightway3\\default.c21f969b5f03d33d43e04f8f136e7682\\output\\lcia-matching-temporal-fwu.xlsx\n" + ] + } + ], + "source": [ + "si.write_excel(\"temporal-fwu\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f28742f5-23ba-495e-bb99-1a8fcd894f83", + "metadata": {}, + "outputs": [], + "source": [ + "# # remove ISO2 locations in the end of a flow\n", + "# def remove_water_ISO2_location(data):\n", + "# for method in data:\n", + "# for exc in method[\"exchanges\"]:\n", + "# exc['name'] = re.sub(\", [A-Z]{2}$\", \"\", exc[\"name\"])\n", + "# return data\n", + "\n", + "# remove list of locations in the end of a flow\n", + "def remove_water_location(data):\n", + " list_locations = [\n", + " \", Europe.*$\",\n", + " \", [A-Z].*$\",\n", + " \", IAI Area.*$\",\n", + " \", Europe.*$\",\n", + " \", quality .*$\",\n", + " ]\n", + " exclude = \"|\".join(list_locations)\n", + "\n", + " for method in data:\n", + " for exc in method[\"exchanges\"]:\n", + " exc[\"name\"] = re.sub(exclude, \"\", exc[\"name\"])\n", + " return data\n", + "\n", + "link_by_name_and_categories = partial(\n", + " bi.strategies.link_iterable_by_fields,\n", + " other=bd.Database(bd.config.biosphere),\n", + " kind=\"biosphere\",\n", + " fields=(\"name\", \"categories\"),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "085375dc-82bf-44b5-9145-f166948363bc", + "metadata": {}, + "outputs": [], + "source": [ + "def drop_duplicates(data):\n", + " for method in data:\n", + "\n", + " unique_exchanges = {\n", + " (o[\"name\"], o[\"categories\"]): o for o in method[\"exchanges\"]\n", + " }\n", + " method[\"exchanges\"] = list(unique_exchanges.values())\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0e305aa6-307a-4870-ab81-57655aa95eb9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: remove_water_location\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_duplicates\n", + "Applied 3 strategies in 0.21 seconds\n", + "1 methods\n", + "38 cfs\n", + "26 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 38, 26)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies(\n", + " [\n", + " remove_water_location,\n", + " # remove_water_ISO2_location,\n", + " link_by_name_and_categories,\n", + " drop_duplicates,\n", + " ]\n", + ")\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Water, cooling, unspecified natural origin', ('natural resource',)),\n", + " ('Water, extreme water stress', ('water', 'ground-')),\n", + " ('Water, extreme water stress', ('water', 'surface water')),\n", + " ('Water, fossil', ('natural resource',)),\n", + " ('Water, fresh', ('natural resource',)),\n", + " ('Water, high water stress', ('water', 'ground-')),\n", + " ('Water, high water stress', ('water', 'surface water')),\n", + " ('Water, low water stress', ('water', 'ground-')),\n", + " ('Water, low water stress', ('water', 'surface water')),\n", + " ('Water, medium water stress', ('water', 'ground-')),\n", + " ('Water, medium water stress', ('water', 'surface water')),\n", + " ('Water, moderate water stress', ('water', 'ground-')),\n", + " ('Water, moderate water stress', ('water', 'surface water')),\n", + " ('Water, process and cooling, unspecified natural origin',\n", + " ('natural resource',)),\n", + " ('Water, process, unspecified natural origin/m3', ('natural resource',)),\n", + " ('Water, rain', ('natural resource',)),\n", + " ('Water, turbine use, unspecified natural origin', ('natural resource',)),\n", + " ('Water, unspecified natural origin', ('natural resource',)),\n", + " ('Water, unspecified natural origin, extreme water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin, high water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin, low water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin, medium water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin, moderate water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin, very high water stress',\n", + " ('natural resource',)),\n", + " ('Water, unspecified natural origin/m3', ('natural resource',)),\n", + " ('Water, well', ('natural resource', 'in water'))]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " \n", + " for ix in range(len(imported_methods.data)):\n", + " lst = []\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " lst.append(\n", + " (exc[\"name\"], exc[\"categories\"], exc[\"amount\"])\n", + " )\n", + " for i in list(set(lst)):\n", + " print(\"\\t\", i)\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Freshwater use - Global\n", + "\t ('Water, moderate water stress', ('water', 'ground-'), -1e-09)\n", + "\t ('Water, unspecified natural origin, extreme water stress', ('natural resource',), 0.0)\n", + "\t ('Water, turbine use, unspecified natural origin', ('natural resource', 'in water'), 0.0)\n", + "\t ('Water, unspecified natural origin', ('natural resource', 'fossil well'), 0.0)\n", + "\t ('Water, cooling, unspecified natural origin', ('natural resource', 'in water'), 0.0)\n", + "\t ('Water, extreme water stress', ('water', 'ground-'), -1e-09)\n", + "\t ('Water, unspecified natural origin/m3', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin', ('natural resource',), 0.0)\n", + "\t ('Water, medium water stress', ('water', 'ground-'), -1e-09)\n", + "\t ('Water, high water stress', ('water', 'surface water'), -1e-09)\n", + "\t ('Water, low water stress', ('water', 'ground-'), -1e-09)\n", + "\t ('Water, unspecified natural origin, very high water stress', ('natural resource',), 0.0)\n", + "\t ('Water, fresh', ('natural resource',), 0.0)\n", + "\t ('Water, extreme water stress', ('water', 'surface water'), -1e-09)\n", + "\t ('Water, fossil', ('natural resource',), 0.0)\n", + "\t ('Water, moderate water stress', ('water', 'surface water'), -1e-09)\n", + "\t ('Water, turbine use, unspecified natural origin', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin', ('natural resource', 'in water'), 1e-09)\n", + "\t ('Water, cooling, unspecified natural origin', ('natural resource',), 0.0)\n", + "\t ('Water, well', ('natural resource', 'in water'), 1e-09)\n", + "\t ('Water, medium water stress', ('water', 'surface water'), -1e-09)\n", + "\t ('Water, low water stress', ('water', 'surface water'), -1e-09)\n", + "\t ('Water, process and cooling, unspecified natural origin', ('natural resource',), 0.0)\n", + "\t ('Water, process, unspecified natural origin/m3', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin, moderate water stress', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin', ('natural resource', 'in ground'), 0.0)\n", + "\t ('Water, high water stress', ('water', 'ground-'), -1e-09)\n", + "\t ('Water, rain', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin, low water stress', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin, medium water stress', ('natural resource',), 0.0)\n", + "\t ('Water, unspecified natural origin, high water stress', ('natural resource',), 0.0)\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ca44f225-9239-4823-ab27-12432a78d24a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{('Water, cooling, unspecified natural origin',\n", + " ('natural resource', 'in water')),\n", + " ('Water, in air', ('natural resource', 'in air')),\n", + " ('Water, lake', ('natural resource', 'in water')),\n", + " ('Water, river', ('natural resource', 'in water')),\n", + " ('Water, salt, ocean', ('natural resource', 'in water')),\n", + " ('Water, salt, sole', ('natural resource', 'in water')),\n", + " ('Water, turbine use, unspecified natural origin',\n", + " ('natural resource', 'in water')),\n", + " ('Water, unspecified natural origin', ('natural resource', 'fossil well')),\n", + " ('Water, unspecified natural origin', ('natural resource', 'in ground')),\n", + " ('Water, unspecified natural origin', ('natural resource', 'in water')),\n", + " ('Water, well, in ground', ('natural resource', 'in water'))}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b3 = bd.Database(\"biosphere3\")\n", + "set([\n", + " (flow[\"name\"], flow[\"categories\"])\n", + " for flow in b3\n", + " if \"Water\" in flow[\"name\"]#.lower()\n", + " if \"natural resource\" in str(flow[\"categories\"])\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# check_equivalent_linked(si, [\"Water,\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "12 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 12, 0)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Freshwater use - Global : 12 12\n", + "No duplicates.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "3d29373b-7b73-430b-9051-31df42489c4d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 methods\n", + "12 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 12, 0)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "3a25770d-9165-44cb-8796-2bf9e960e524", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ca7ed6c-f11b-4359-bde6-ee44429acef7", + "metadata": {}, + "outputs": [], + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESALandSystemChange.ipynb b/notebooks/dev/GetAESALandSystemChange.ipynb new file mode 100644 index 0000000..56c16f8 --- /dev/null +++ b/notebooks/dev/GetAESALandSystemChange.ipynb @@ -0,0 +1,578 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import Land-system Chang method\n", + " > Global" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"LandSystemChange_Global\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a88bb01f-6564-45e5-9543-f784cb5d3ea4", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0c9ee3dd-86f2-4cc1-a85b-6b1a092944c5", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "224505da-377f-4903-9da5-21be106fe494", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.01 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Land-system change - Global') %\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 1.56e-12,\n", + " 'CAS number': '',\n", + " 'categories': ('Raw', 'land'),\n", + " 'name': 'Transformation, from forest',\n", + " 'unit': 'm2'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.41 seconds\n", + "1 methods\n", + "22 cfs\n", + "22 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 22, 22)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "06191e76-1255-41cf-a466-ea8bc22130d3", + "metadata": {}, + "outputs": [], + "source": [ + "link_by_name_and_categories = partial(\n", + " bi.strategies.link_iterable_by_fields,\n", + " other=bd.Database(bd.config.biosphere),\n", + " kind=\"biosphere\",\n", + " fields=(\"name\", \"categories\"),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "563ecba5-b889-49ce-a8f6-117065cd2a7a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: link_iterable_by_fields\n", + "1 methods\n", + "22 cfs\n", + "4 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 22, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategy(link_by_name_and_categories)\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Transformation, from forest, natural', ('natural resource', 'land')),\n", + " ('Transformation, from forest, secondary', ('natural resource', 'land')),\n", + " ('Transformation, to forest, natural', ('natural resource', 'land')),\n", + " ('Transformation, to forest, used', ('natural resource', 'land'))]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\" \n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Land-system change - Global\n", + "\t Transformation, from forest, natural ('natural resource', 'land') 1.56e-12\n", + "\t Transformation, from forest, secondary ('natural resource', 'land') 1.56e-12\n", + "\t Transformation, to forest, natural ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, used ('natural resource', 'land') -1.56e-12\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ca44f225-9239-4823-ab27-12432a78d24a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Transformation, to forest, unspecified' (square meter, None, ('natural resource', 'land')),\n", + " 'Transformation, to forest, primary (non-use)' (square meter, None, ('natural resource', 'land')),\n", + " 'Transformation, to forest, extensive' (square meter, None, ('natural resource', 'land')),\n", + " 'Transformation, to forest, intensive' (square meter, None, ('natural resource', 'land')),\n", + " 'Transformation, to forest, secondary (non-use)' (square meter, None, ('natural resource', 'land'))]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b3 = bd.Database(\"biosphere3\")\n", + "[\n", + " flow\n", + " for flow in b3\n", + " if \"transformation, to forest\" in flow[\"name\"].lower()\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Land-system change - Global\n", + "\t Transformation, to forest, extensive ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, intensive ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, intensive ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, intensive ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, intensive ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, natural ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, primary (non-use) ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, secondary (non-use) ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, unspecified ('natural resource', 'land') -1.56e-12\n", + "\t Transformation, to forest, used ('natural resource', 'land') -1.56e-12\n", + "\n", + "\n" + ] + } + ], + "source": [ + "check_equivalent_linked(si, [\"Transformation, to forest\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "18 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 18, 0)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Land-system change - Global : 18 10\n", + "Duplicates removed.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3d29373b-7b73-430b-9051-31df42489c4d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 methods\n", + "10 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 10, 0)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "a0245405-f466-4bd1-8dc5-35901401b2e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "raw", + "id": "766b18a6-5e61-48e2-a057-8f55b78961c9", + "metadata": {}, + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESAOceanAcidification.ipynb b/notebooks/dev/GetAESAOceanAcidification.ipynb new file mode 100644 index 0000000..065f6ac --- /dev/null +++ b/notebooks/dev/GetAESAOceanAcidification.ipynb @@ -0,0 +1,464 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "547e02f9-e2c9-4fc1-8bb6-ea62ebc5c6e9", + "metadata": {}, + "outputs": [], + "source": [ + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6dcdba8-e048-4bea-bd06-9997eca2a618", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "270c1244-e1bc-460d-a307-855c7d60fcd3", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "647e604a-79fd-44cb-8c92-dc0d313d816a", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import Ocean Acidification methods\n", + " > Carbontate Ion Concentration, omega aragonite" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"OceanAcidification_CarbontateIonConcentration\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b71973ec-799c-4e90-929c-c8f72ee3bcc9", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9c24675b-7ebc-4733-a9ca-bfec49a976bd", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1946a40a-be8e-42dd-ae2f-204a73dbfc44", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.02 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Ocean acidification') Omega Aragon\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 8.22e-14,\n", + " 'CAS number': '000124-38-9',\n", + " 'categories': ('Air', '(unspecified)'),\n", + " 'name': 'Carbon dioxide',\n", + " 'unit': 'kg'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "06191e76-1255-41cf-a466-ea8bc22130d3", + "metadata": {}, + "outputs": [], + "source": [ + "# link_by_name_and_categories = partial(\n", + "# bi.strategies.link_iterable_by_fields,\n", + "# other=bd.Database(bd.config.biosphere),\n", + "# kind=\"biosphere\",\n", + "# fields=(\"name\", \"categories\"),\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.39 seconds\n", + "1 methods\n", + "45 cfs\n", + "3 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 45, 3)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Carbon dioxide', ('air',)),\n", + " ('Carbon dioxide, in air', ('natural resource', 'in air')),\n", + " ('Carbon monoxide', ('air',))]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\" \n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ocean acidification\n", + "\t Carbon dioxide ('air',) 8.22e-14\n", + "\t Carbon dioxide, in air ('natural resource', 'in air') 0.0\n", + "\t Carbon monoxide ('air',) 1.29e-13\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": {}, + "outputs": [], + "source": [ + "# check_equivalent_linked(si, [\"Carbon dioxide\", \"Carbon monoxide\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "42 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 42, 0)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ocean acidification : 42 42\n", + "No duplicates.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "46850ff6-4e22-4fc2-88ab-f0668dcb3193", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "raw", + "id": "426e709b-0c68-4219-98c3-fe438435c654", + "metadata": {}, + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/GetAESAOzoneDepletion.ipynb b/notebooks/dev/GetAESAOzoneDepletion.ipynb new file mode 100644 index 0000000..5b43fbc --- /dev/null +++ b/notebooks/dev/GetAESAOzoneDepletion.ipynb @@ -0,0 +1,499 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "00b2f8db-283d-49df-9c56-c04ddbdbf986", + "metadata": {}, + "outputs": [], + "source": [ + "from functools import partial\n", + "from pathlib import Path\n", + "\n", + "import bw2calc as bc\n", + "import bw2data as bd\n", + "import bw2io as bi\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f8e71d8b-be29-467f-9e8b-b1b52da43f05", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fe096625-31cf-4495-90b3-8272fa16bc41", + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "19e4aabb-0e62-4963-9702-4f64c78af750", + "metadata": {}, + "outputs": [], + "source": [ + "# bd.databases" + ] + }, + { + "cell_type": "markdown", + "id": "517527f0-89ab-417e-ab39-f656ca7d05f0", + "metadata": {}, + "source": [ + "## import Stratospheric Ozone Depletion method\n", + " > Stratospheric O3 concentration, DU \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8de4ada6-aa52-4184-813a-9a3fe610776b", + "metadata": {}, + "outputs": [], + "source": [ + "method_category = \"OzoneDepletion_StratosphericO3Concentration\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a40f218f-cb50-4b9d-97bb-3b078e376087", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DIR = ROOT_DIR + r\"\\data\\external\\from_simapro\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d5c724c7-cee4-4c44-8216-fad24da6e487", + "metadata": {}, + "outputs": [], + "source": [ + "STORE_DATA_TO = Path(\n", + " ROOT_DIR + r\"\\src\\aesa_pbs\\data\" + f\"\\\\aesa_{method_category}.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "cfb275b4-e741-43d6-8c7e-caad2da5dad5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted 1 methods in 0.02 seconds\n" + ] + } + ], + "source": [ + "si = bi.SimaProLCIACSVImporter(\n", + " filepath=Path(SIMAPRO_DIR + f\"\\PBsLCIAv072_{method_category}.csv\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7eda1d0b-7ac1-4cfe-bb57-6a8ae92f9e4d", + "metadata": {}, + "outputs": [], + "source": [ + "# si.data[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3743fa54-ea96-4a11-bd50-2b9b0c12e302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline)', 'Stratospheric ozone depletion') DU\n" + ] + } + ], + "source": [ + "for method in si.data:\n", + " print(method[\"name\"], method[\"unit\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88f5680e-d5e1-45ff-b700-4f198e73dff0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'amount': 1.41e-10,\n", + " 'CAS number': '010024-97-2',\n", + " 'categories': ('Air', '(unspecified)'),\n", + " 'name': 'Dinitrogen monoxide',\n", + " 'unit': 'kg'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.data[0][\"exchanges\"][0]#.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "06191e76-1255-41cf-a466-ea8bc22130d3", + "metadata": {}, + "outputs": [], + "source": [ + "# link_by_name_and_categories = partial(\n", + "# bi.strategies.link_iterable_by_fields,\n", + "# other=bd.Database(bd.config.biosphere),\n", + "# kind=\"biosphere\",\n", + "# fields=(\"name\", \"categories\"),\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f40ad041-6d1c-41c2-b8f2-efda74526fa1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: normalize_units\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: normalize_simapro_biosphere_categories\n", + "Applying strategy: normalize_simapro_biosphere_names\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: normalize_biosphere_categories\n", + "Applying strategy: normalize_biosphere_names\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: match_subcategories\n", + "Applied 10 strategies in 0.35 seconds\n", + "1 methods\n", + "77 cfs\n", + "2 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 77, 2)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.apply_strategies()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c7f0d244-a4cd-4349-aa5b-0304f3e6af6c", + "metadata": {}, + "outputs": [], + "source": [ + "# list(si.unlinked)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3baefc3f-2904-43f7-9fa8-edf53210bd91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Ethane, 1,2-dibromotetrafluoro-, Halon 2402', ('air',)),\n", + " ('Methane, dibromodifluoro-, Halon 1202', ('air',))]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from the 5 unlinked:\n", + "# 1 has amount 0, can be dropped - Carbon dioxide, in air\n", + "# 2 others \"Carbon dioxide\" and \"Carbon monoxide\" are not in biosphere3, BUT\n", + "# \"Carbon dioxide, fossil\" \n", + "# and \"Carbon monoxide, fossil\" and \"Carbon monoxide, non-fossil\" (with same CFs)\n", + "# have been linked (see check_equivalent_linked)\n", + "[(exc[\"name\"], exc[\"categories\"]) for exc in list(si.unlinked)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ee30f2b9-c898-476b-9eb0-ea88779df974", + "metadata": {}, + "outputs": [], + "source": [ + "def see_unlinked(imported_methods):\n", + " unlinked_exc_names = [\n", + " exc_unlinked[\"name\"] for exc_unlinked in list(imported_methods.unlinked)\n", + " ]\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " if exc[\"name\"] in unlinked_exc_names:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")\n", + " # if exc[\"amount\"] != 0" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "68462bb2-575f-409a-9e19-c6c01f8c36ff", + "metadata": {}, + "outputs": [], + "source": [ + "def check_equivalent_linked(imported_methods, list_names):\n", + " for ix in range(len(imported_methods.data)):\n", + " print(imported_methods.data[ix][\"name\"][1])\n", + " for exc in imported_methods.data[ix][\"exchanges\"]:\n", + " for x in list_names:\n", + " if x in exc[\"name\"]:\n", + " print(\"\\t\",\n", + " exc[\"name\"],\n", + " exc[\"categories\"],\n", + " exc[\"amount\"],\n", + " )\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "34744a54-b0b8-4b57-a611-d30cfd2266a5", + "metadata": {}, + "outputs": [], + "source": [ + "def remove_duplicates_if_any(imported_methods):\n", + " for ix in range(len(imported_methods.data)):\n", + " current_exc = len(imported_methods.data[ix][\"exchanges\"])\n", + " wo_duplicates_exc = len(\n", + " {tuple(o[\"input\"]) for o in imported_methods.data[ix][\"exchanges\"]}\n", + " )\n", + " print(\n", + " imported_methods.data[ix][\"name\"][1], \": \", current_exc, wo_duplicates_exc,\n", + " )\n", + " if current_exc != wo_duplicates_exc:\n", + " unique_exchanges = {\n", + " tuple(o[\"input\"]): o for o in imported_methods.data[ix][\"exchanges\"]\n", + " }\n", + " imported_methods.data[ix][\"exchanges\"] = list(unique_exchanges.values())\n", + " print(\"Duplicates removed.\\n\")\n", + " else:\n", + " print(\"No duplicates.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d362ae91-114b-4234-8608-2772e6ed4d00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Stratospheric ozone depletion\n", + "\t Ethane, 1,2-dibromotetrafluoro-, Halon 2402 ('air',) 5.39e-08\n", + "\t Methane, dibromodifluoro-, Halon 1202 ('air',) 1.14e-08\n", + "\n", + "\n" + ] + } + ], + "source": [ + "see_unlinked(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ff492730-32f2-4020-a4af-3fc5e63c0d06", + "metadata": {}, + "outputs": [], + "source": [ + "# check_equivalent_linked(si, [\"Halon\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a6633bbc-8b0a-42ad-a4e2-61e7b4198756", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Chlorothalonil',\n", + " 'Methane, bromo-, Halon 1001',\n", + " 'Methane, bromo-, Halon 1001',\n", + " 'Methane, bromo-, Halon 1001',\n", + " 'Methane, bromo-, Halon 1001',\n", + " 'Methane, bromo-, Halon 1001',\n", + " 'Methane, bromochlorodifluoro-, Halon 1211',\n", + " 'Methane, bromochlorodifluoro-, Halon 1211',\n", + " 'Methane, bromochlorodifluoro-, Halon 1211',\n", + " 'Methane, bromochlorodifluoro-, Halon 1211',\n", + " 'Methane, bromochlorodifluoro-, Halon 1211',\n", + " 'Methane, bromotrifluoro-, Halon 1301',\n", + " 'Methane, bromotrifluoro-, Halon 1301',\n", + " 'Methane, bromotrifluoro-, Halon 1301',\n", + " 'Methane, bromotrifluoro-, Halon 1301',\n", + " 'Methane, bromotrifluoro-, Halon 1301']" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b3 = bd.Database(\"biosphere3\")\n", + "sorted([flow[\"name\"] for flow in b3 if \"halon\" in flow[\"name\"].lower()])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8d048c1b-09ee-4946-8156-c9dbbb625f5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying strategy: drop_unlinked_cfs\n", + "Applied 1 strategies in 0.00 seconds\n", + "1 methods\n", + "75 cfs\n", + "0 unlinked cfs\n" + ] + }, + { + "data": { + "text/plain": [ + "(1, 75, 0)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.drop_unlinked()\n", + "si.statistics()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "7e89a8f7-b018-4322-b975-2e795b85ea1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Stratospheric ozone depletion : 75 75\n", + "No duplicates.\n", + "\n" + ] + } + ], + "source": [ + "# check if there are duplicates (both numbers should be equal)\n", + "remove_duplicates_if_any(si)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "73a989df-e8e7-492f-9f46-81b9aeb407f6", + "metadata": {}, + "outputs": [], + "source": [ + "# Next si.write_excel(method_category) will create an excel file in \n", + "# ~\\Local\\pylca\\Brightway3\\default###\\output\\lcia-matching-{method_category}.xlsx\n", + "\n", + "# Go to created excel and apply manual corrections\n", + "#TODO: manual corrections should not be manual\n", + "\n", + "# Store corrected excel to STORE_DATA_TO" + ] + }, + { + "cell_type": "raw", + "id": "63062126-ec9f-4cfe-be8b-34be833cb1ed", + "metadata": {}, + "source": [ + "si.write_excel(method_category)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/Get_N_fertilizers.ipynb b/notebooks/dev/Get_N_fertilizers.ipynb new file mode 100644 index 0000000..58d15ec --- /dev/null +++ b/notebooks/dev/Get_N_fertilizers.ipynb @@ -0,0 +1,731 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "b3940701-9d59-496b-b72f-3b376ab03b03", + "metadata": {}, + "outputs": [], + "source": [ + "import brightway2 as bw\n", + "import bw2data as bd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "498a0c3a-4b6d-439d-a748-aba41e065ec9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.6+nfert.1'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import aesa_pbs\n", + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "742df749-5572-47d0-84e5-f54df1ad73ea", + "metadata": {}, + "outputs": [], + "source": [ + "from aesa_pbs import (\n", + " get_nitrogenous_fertilizers,\n", + " remove_nitrogen_fertilizer_exchanges,\n", + " update_nitrogen_fertilizer_exchanges,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "fa14dccb-f83a-4dc0-bc09-c7bf7b9ed80c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Brightway2 projects manager with 14 objects:\n", + "\tStepByStep\n", + "\tbw2_class_2020_example_database\n", + "\tbw2_class_2020_intro\n", + "\tcar comparison paper\n", + "\tcheck_PBsmethod\n", + "\tcheck_impact_electricity\n", + "\tdefault\n", + "\tdouble_count_electricity\n", + "\tecoinvent 3.6\n", + "\tglobal_power_mix\n", + "\tparameters - manual creation\n", + "\tpremise_scenarios\n", + "\tsimapro-ecoinvent-import\n", + "\ttrial-import_from_SimaPro\n", + "Use `projects.report()` to get a report on all projects." + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "304ba802-0900-4388-89b0-8d97df3d1dfa", + "metadata": {}, + "outputs": [], + "source": [ + "bw.projects.set_current(\"check_PBsmethod\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1b8d1b4e-7b21-4eca-9747-ce1fb63f4abb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 3 object(s):\n", + "\tbiosphere3\n", + "\tei35apos\n", + "\tei35cutoff" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# del bw.databases[\"A_technosphere_flows\"]\n", + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fbaa5825-ada6-4b4b-b215-48d913c01574", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'biogeochemical flows', 'nitrogen', 'inverse modelling, surface water')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'climate change', 'energy imbalance at top-of-atmosphere')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'land-system change', 'global')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'freshwater use', 'global')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'change in biosphere integrity', 'functional diversity', 'total')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'climate change', 'atmospheric CO2 concentration')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'ozone depletion', 'stratospheric O3 concentration')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'change in biosphere integrity', 'functional diversity', 'CO2eq emissions')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'change in biosphere integrity', 'functional diversity', 'direct land use')\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Writing activities to SQLite3 database:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'biogeochemical flows', 'nitrogen', 'directly fixated')\n", + "+-----------------------------------------------------------------------------------+\n", + "| Warning |\n", + "+-----------------------------------------------------------------------------------+\n", + "| The method for quantification of directly fixated nitrogen |\n", + "| requires an additional database `A_technosphere_flows`. |\n", + "| This database was not found in the current project. |\n", + "| It will be generated now. |\n", + "| |\n", + "| Next steps: |\n", + "| 1. Use `get_nitrogenous_fertilizers()` to filter activities |\n", + "| \tproducing nitrogenous fertilizers in a specific background database. |\n", + "| 2. Use `update_nitrogen_fertilizer_exchanges()` to modify those activities. |\n", + "| |\n", + "| Optionally, |\n", + "| modified activities can be cleaned with `remove_nitrogen_fertilizer_exchanges()`. |\n", + "+-----------------------------------------------------------------------------------+\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "0% [#] 100% | ETA: 00:00:00\n", + "Total time elapsed: 00:00:00\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Writing activities to SQLite3 database:\n", + " Started: 05/16/2022 11:57:06\n", + " Finished: 05/16/2022 11:57:06\n", + " Total time elapsed: 00:00:00\n", + " CPU %: 0.00\n", + " Memory %: 1.15\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'biogeochemical flows', 'phosphorus')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.6+nfert.1', 'ocean acidification', 'carbonate ion concentration')\n" + ] + } + ], + "source": [ + "aesa_pbs.add_aesa_pbs(verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5cb2c81c-583d-4cae-82de-9840d089b321", + "metadata": {}, + "outputs": [], + "source": [ + "# temporal\n", + "\n", + "# del bw.databases[\"ei35cutoff\"]\n", + "\n", + "# PATH_TO_EI_DATASETS = r\"C:\\Users\\ViteksPC\\Documents\\00-ETH_projects\\18-BW2Hub\\01.Data\\Ecoinvent\\v3.5\\ecoinvent 3.5_cutoff_ecoSpold02\\datasets\"\n", + "# ei = bw.SingleOutputEcospold2Importer(PATH_TO_EI_DATASETS, \"ei35cutoff\")\n", + "# ei\n", + "# ei.apply_strategies()\n", + "# ei.statistics()\n", + "# ei.write_database()\n", + "# del ei" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "0b7fc76a-e45c-4af8-a63c-f3eeb35240e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 4 object(s):\n", + "\tA_technosphere_flows\n", + "\tbiosphere3\n", + "\tei35apos\n", + "\tei35cutoff" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "6b7a5afe-7bb4-4568-b312-a5f1f0cc1f35", + "metadata": {}, + "outputs": [], + "source": [ + "# rdm = bw.Database(\"biosphere3\").random()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "644a9ef8-2d57-4b4f-ac6c-edfa38fe3e5b", + "metadata": {}, + "outputs": [], + "source": [ + "# [v for v in rdm.keys()]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "183592c2-1ba2-4337-920b-8215ce304c74", + "metadata": {}, + "outputs": [], + "source": [ + "# rdm.as_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ca65774d-63ff-4a08-b89d-f59f1bcff1f5", + "metadata": {}, + "outputs": [], + "source": [ + "# [k for k in bw.Database(\"ei35apos\").random().keys()]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "23232b24-f5a4-49d2-b26e-42e099b851b0", + "metadata": {}, + "outputs": [], + "source": [ + "# [act for act in bw.Database(\"ei35apos\") if \"fertiliser\" in act[\"name\"]]\n", + "# [act for act in bw.Database(\"ei35apos\") if \"as N\" in act[\"name\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7d72b820-2cc9-4d6b-b15f-4848c9cf0e1f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('market for urea, as N' (kilogram, GLO, None), 'urea, as N'),\n", + " ('market for nitrogen fertiliser, as N' (kilogram, GLO, None),\n", + " 'nitrogen fertiliser, as N'),\n", + " ('ammonium nitrate phosphate production' (kilogram, RER, None),\n", + " 'nitrogen fertiliser, as N'),\n", + " ('ammonium nitrate phosphate production' (kilogram, RoW, None),\n", + " 'nitrogen fertiliser, as N'),\n", + " ('market for ammonium nitrate, as N' (kilogram, GLO, None),\n", + " 'ammonium nitrate, as N'),\n", + " ('market for ammonium sulfate, as N' (kilogram, GLO, None),\n", + " 'ammonium sulfate, as N')]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# what Ibrahim filtered for\n", + "[\n", + " (act, act[\"reference product\"])\n", + " for act in bw.Database(\"ei35cutoff\")\n", + " if \"as N\" in act[\"name\"] \n", + " and \"urea production\" not in act[\"name\"]\n", + " or (\"ammonium nitrate phosphate\" in act[\"name\"] and \"as N\" in act[\"reference product\"])\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c0de4658-fe30-4303-901e-ad0669623f95", + "metadata": {}, + "outputs": [], + "source": [ + "# [\n", + "# act[\"reference product\"]\n", + "# for act in bw.Database(\"ei35cutoff\")\n", + "# if \"ammonium nitrate phosphate\" in act[\"name\"]\n", + "# ]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "730c449f-2180-4e33-88d9-9f10c3870f64", + "metadata": {}, + "outputs": [], + "source": [ + "# [act[\"classifications\"] for act in bw.Database(\"ei35cutoff\") if \"ammonium nitrate phosphate\" in act[\"name\"]][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "c8f2d045-d6f7-4d0c-bd3e-427c828a4473", + "metadata": {}, + "outputs": [], + "source": [ + "isic = []\n", + "cpc = []\n", + "ecospold = []\n", + "for act in bw.Database(\"ei35cutoff\"):\n", + " for classification in act[\"classifications\"]:\n", + " if \"isic\" in classification[0].lower():\n", + " isic.append(classification)\n", + " elif \"ecospold\" in classification[0].lower():\n", + " ecospold.append(classification)\n", + " elif \"cpc\" in classification[0].lower():\n", + " cpc.append(classification)\n", + "isic = list(set(isic))\n", + "cpc = list(set(cpc))\n", + "ecospold = list(set(ecospold))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "c28c9a8b-a920-48f3-8bc1-8acc7059ee4a", + "metadata": {}, + "outputs": [], + "source": [ + "# sorted([e[1] for e in ecospold])\n", + "# sorted([e[1] for e in cpc])\n", + "# sorted([e[1] for e in isic])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "b7d4debc-dda4-4a33-a14a-ea73ec783267", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "44\n" + ] + } + ], + "source": [ + "ACTIVITIES = get_nitrogenous_fertilizers(db_name=\"ei35cutoff\")\n", + "print(len(ACTIVITIES))\n", + "# ACTIVITIES" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "b79c79fb-6205-4b8a-b163-4ee4a0758f5a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Updating activities that produce nitrogen fertilizer...\n", + "Updated 0 out of 44.\n" + ] + } + ], + "source": [ + "update_nitrogen_fertilizer_exchanges(ACTIVITIES, show_updated=False)\n", + "\n", + "# remove_nitrogen_fertilizer_exchanges(ACTIVITIES, show_cleaned=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e3aa84b2-0759-4ad1-a9fe-5f2eb074b221", + "metadata": {}, + "outputs": [], + "source": [ + "# [exc for exc in [a for a in ACTIVITIES if \"market\" in a[\"name\"]][0].exchanges()]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "6b5edc4d-7a36-41c4-a21d-fb7c891af03b", + "metadata": {}, + "outputs": [], + "source": [ + "# [\n", + "# (act[\"reference product\"], act[\"classifications\"])\n", + "# for act in bw.Database(\"ei35cutoff\")\n", + "# # if \"nickel mine operation, sulfidic ore\" in act[\"name\"] and \"GLO\" in act[\"location\"]\n", + "# # if 'smelting and refining of nickel ore' in act[\"name\"] and \"GLO\" in act[\"location\"]\n", + "# # if \"market for ammonium nitrate, as N\" in act[\"name\"] and \"GLO\" in act[\"location\"]\n", + "# if \"heat production, straw, at furnace 300kW\" in act[\"name\"] and \"GLO\" in act[\"location\"]\n", + "# ]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7e9002db-03a0-489a-99d1-4307c6a2656d", + "metadata": {}, + "outputs": [], + "source": [ + "# [\n", + "# t\n", + "# for t in [\n", + "# act\n", + "# for act in bw.Database(\"ei35cutoff\")\n", + "# if \"heat production, straw, at furnace 300kW\" in act[\"name\"]\n", + "# and \"GLO\" in act[\"location\"]\n", + "# ][0].technosphere()\n", + "# ]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "76657b65-cba9-48f2-911f-0631fd387ecc", + "metadata": {}, + "outputs": [], + "source": [ + "# sorted([(a[\"reference product\"], a[\"name\"]) for a in ACTIVITIES])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "456d61e0-5831-4d73-9ffd-acdffe9ad29c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 4 object(s):\n", + "\tA_technosphere_flows\n", + "\tbiosphere3\n", + "\tei35apos\n", + "\tei35cutoff" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# del bw.databases[\"A_technosphere_flows\"]\n", + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "3bc13432-5e6f-491f-9362-48de4990c964", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'nitrogen fertilizer',\n", + " 'unit': 'kilogram',\n", + " 'type': 'inventory flow',\n", + " 'categories': ('inventory',),\n", + " 'database': 'A_technosphere_flows',\n", + " 'code': 'n-fert'}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[a for a in bw.Database(\"A_technosphere_flows\")][0].as_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c633c99f-1fab-4c0a-aa4f-56dc6086aea4", + "metadata": {}, + "outputs": [], + "source": [ + "a = ACTIVITIES[0]\n", + "# [exc for exc in a.biosphere()]#[0].delete()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "4859c7f7-02a1-4dbe-9bbb-ce4fea8b181f", + "metadata": {}, + "outputs": [], + "source": [ + "# for exc in a.exchanges():\n", + "# if exc[\"input\"] == (\"A_technosphere_flows\", \"n-fert\"):\n", + "# print(bw.get_activity(exc[\"input\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "f8568037-4f23-4eed-b516-239b83eca556", + "metadata": {}, + "outputs": [], + "source": [ + "# a.as_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "8e94f1b1-2b6c-494e-9b9b-56117a65d91b", + "metadata": {}, + "outputs": [], + "source": [ + "[\n", + " m\n", + " for m in bw.methods\n", + " if \"AESA\" in str(m) and \"nitrogen\" in str(m) and \"nfert\" in str(m)\n", + "] # [0]\n", + "\n", + "met_direct = [\n", + " m\n", + " for m in bw.methods\n", + " if \"AESA\" in str(m)\n", + " and \"nitrogen\" in str(m)\n", + " and \"nfert\" in str(m)\n", + " and \"directly fixated\" in str(m)\n", + "][0]\n", + "met_inverse = [\n", + " m\n", + " for m in bw.methods\n", + " if \"AESA\" in str(m)\n", + " and \"nitrogen\" in str(m)\n", + " and \"nfert\" in str(m)\n", + " and \"inverse modelling, surface water\" in str(m)\n", + "][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "a90d5dba-2e15-45f1-ac2a-13d7ee95fddc", + "metadata": {}, + "outputs": [], + "source": [ + "# bw.Method(\n", + "# (\n", + "# \"AESA (PBs-LCIA)\",\n", + "# \"0.8.6+nfert.1\",\n", + "# \"biogeochemical flows\",\n", + "# \"nitrogen\",\n", + "# \"inverse modelling, surface water\",\n", + "# )\n", + "# ).metadata" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "7e1e9337-ff34-481f-9de1-8ea1fe7a235e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'market group for electricity, medium voltage' (kilowatt hour, GLO, None)" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "markletnfert = [act for act in bw.Database(\"ei35cutoff\") if \"market for nitrogen fertiliser, as N\" in act[\"name\"]][0]\n", + "markletnfert\n", + "\n", + "methanol = [act for act in bw.Database(\"ei35cutoff\") if \"market for methanol\" == act[\"name\"]][0]\n", + "methanol\n", + "\n", + "elec = [act for act in bw.Database(\"ei35cutoff\") if \"market group for electricity, medium\" in act[\"name\"] and \"GLO\" in act[\"location\"]][0]\n", + "elec" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "60f57042-cb4a-47c3-8228-c101670a71ef", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "market group for electricity, medium voltage: 4.744377891928962e-14 (Tg N)\n", + "market group for electricity, medium voltage: 1.1836958100300895e-13 (Tg N)\n" + ] + }, + { + "data": { + "text/plain": [ + "0.5991894326458451" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# dem = {markletnfert: 1}\n", + "dem = {elec: 1}\n", + "# dem = {methanol: 1}\n", + "\n", + "lca_direct = bw.LCA(dem, met_direct)\n", + "lca_direct.lci()\n", + "lca_direct.lcia()\n", + "lca_direct.score\n", + "print(\n", + " f\"{list(lca_direct.demand.keys())[0]['name']}: {lca_direct.score} ({bw.Method(lca_direct.method).metadata['unit']})\"\n", + ")\n", + "\n", + "lca_inverse = bw.LCA(dem, met_inverse)\n", + "lca_inverse.lci()\n", + "lca_inverse.lcia()\n", + "lca_inverse.score\n", + "print(\n", + " f\"{list(lca_inverse.demand.keys())[0]['name']}: {lca_inverse.score} ({bw.Method(lca_inverse.method).metadata['unit']})\"\n", + ")\n", + "\n", + "(lca_inverse.score-lca_direct.score)/lca_inverse.score" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "d3521257-8fc4-477f-8fb3-03898a5caa3e", + "metadata": {}, + "outputs": [], + "source": [ + "#TODO: don't forget to delete Nflows method after trials..." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/dev/project_path.py b/notebooks/dev/project_path.py new file mode 100644 index 0000000..0b295c7 --- /dev/null +++ b/notebooks/dev/project_path.py @@ -0,0 +1,16 @@ +""" +Adapted from https://stackoverflow.com/a/51028921/14485040 + +This script has to be included in the `notebooks` directory and +has to be imported (first line) in every notebook that uses +scripts/data from directories relative to the root directory of +the project. +""" + +import os +import sys + +ROOT_DIR = os.path.abspath(os.path.join("..\..")) +# `..` indicate a relative path to root directory +if ROOT_DIR not in sys.path: + sys.path.append(ROOT_DIR) diff --git a/notebooks/examples/how-to-remove-aesa-methods-from-project.ipynb b/notebooks/examples/how-to-remove-aesa-methods-from-project.ipynb new file mode 100644 index 0000000..4a5c55d --- /dev/null +++ b/notebooks/examples/how-to-remove-aesa-methods-from-project.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4acb60f2-2bd5-490e-82cf-2afea5823bf0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.7'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import brightway2 as bw\n", + "import aesa_pbs\n", + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "5ff0832c-f853-49f5-ad34-3ab8c62e22d5", + "metadata": { + "tags": [] + }, + "source": [ + "## Remove methods from the project" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2512bae9-b003-4c54-bd69-cb8e73f9720e", + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f3144f0c-46fc-44f7-9a7f-615ee55eccd7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aesa = [m for m in bw.methods if \"AESA\" in str(m)]\n", + "len(aesa)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "573b2f4e-e2ce-4dc6-89d4-a0e3aec1db05", + "metadata": {}, + "outputs": [], + "source": [ + "# Get paths to methods and delete manually\n", + "\n", + "for m in aesa:\n", + " my_method = bw.Method(m)\n", + " print(my_method)\n", + " # Intermediate pickle, what gets loaded by my_method.load()\n", + " print(\"\\t\", os.path.join(bw.projects.dir, \"intermediate\", my_method.filename + \".pickle\"))\n", + " # Processed array, used in calculations\n", + " print(\"\\t\", my_method.filepath_processed())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "47c07979-d64e-40a7-8797-6a82194c014c", + "metadata": {}, + "outputs": [], + "source": [ + "# Deregister deleted methods\n", + "\n", + "for m in aesa:\n", + " bw.Method(m).deregister()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c27406ba-d6ac-427f-9efb-97a787905beb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Methods dictionary with 975 objects, including:\n", + "\t('CML 2001 (superseded)', 'acidification potential', 'average European')\n", + "\t('CML 2001 (superseded)', 'acidification potential', 'generic')\n", + "\t('CML 2001 (superseded)', 'climate change', 'GWP 100a')\n", + "\t('CML 2001 (superseded)', 'climate change', 'GWP 20a')\n", + "\t('CML 2001 (superseded)', 'climate change', 'GWP 500a')\n", + "\t('CML 2001 (superseded)', 'climate change', 'lower limit of net GWP')\n", + "\t('CML 2001 (superseded)', 'climate change', 'upper limit of net GWP')\n", + "\t('CML 2001 (superseded)', 'eutrophication potential', 'average European')\n", + "\t('CML 2001 (superseded)', 'eutrophication potential', 'generic')\n", + "\t('CML 2001 (superseded)', 'freshwater aquatic ecotoxicity', 'FAETP 100a')\n", + "Use `list(this object)` to get the complete list." + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.methods" + ] + }, + { + "cell_type": "markdown", + "id": "4cc42f43-0938-4bd9-853d-4b4f535c1783", + "metadata": { + "tags": [] + }, + "source": [ + "## Remove nitrogen fertilizer exchanges from the updated database" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b8c8c650-c761-43d7-a9f2-755a298e3bc7", + "metadata": {}, + "outputs": [], + "source": [ + "remove_nflow_activities = aesa_pbs.get_nitrogenous_fertilizers(\"ei35cutoff\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0a85a0fa-d92e-49bc-b27c-790247bc0ada", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cleaning 'nitrogen fertilizer' exchanges from the activities that produce nitrogen fertilizer...\n", + "These 44 activities have been cleaned: \n", + "['ammonium sulfate production' (kilogram, RER, None), 'diammonium phosphate production' (kilogram, RER, None), 'ammonium nitrate production' (kilogram, RoW, None), 'citric acid production' (kilogram, RNA, None), 'urea production, as N' (kilogram, RER, None), 'nutrient supply from coconut husk' (kilogram, GLO, None), 'ammonium nitrate phosphate production' (kilogram, RER, None), 'calcium nitrate production' (kilogram, RoW, None), 'nutrient supply from poultry manure, dried' (kilogram, GLO, None), 'urea ammonium nitrate production' (kilogram, RoW, None), 'nickel mine operation, sulfidic ore' (kilogram, GLO, None), 'nutrient supply from compost' (kilogram, GLO, None), 'urea ammonium nitrate production' (kilogram, RER, None), 'ammonium nitrate phosphate production' (kilogram, RoW, None), 'nutrient supply from vinasse, from fermentation of sweet sorghum' (kilogram, GLO, None), 'smelting and refining of nickel ore' (kilogram, GLO, None), 'citric acid production' (kilogram, RoW, None), 'ammonium sulfate production' (kilogram, RoW, None), 'calcium ammonium nitrate production' (kilogram, RoW, None), 'nutrient supply from poultry manure, fresh' (kilogram, GLO, None), 'nutrient supply from vinasse, from fermentation of sugar beet molasses' (kilogram, GLO, None), 'nutrient supply from manure, solid, cattle' (kilogram, GLO, None), 'ammonium nitrate production' (kilogram, RER, None), 'urea production, as N' (kilogram, RoW, None), 'monoammonium phosphate production' (kilogram, RoW, None), 'citric acid production' (kilogram, RER, None), 'heat production, straw, at furnace 300kW' (kilogram, GLO, None), 'calcium nitrate production' (kilogram, RER, None), 'nutrient supply from calcium nitrate' (kilogram, GLO, None), 'monoammonium phosphate production' (kilogram, RER, None), 'nutrient supply from ammonium chloride' (kilogram, GLO, None), 'nutrient supply from manure, liquid, cattle' (kilogram, GLO, None), 'treatment, sludge from pulp and paper production, landfarming' (kilogram, CA-QC, None), 'nutrient supply from vinasse, from fermentation of sugarcane' (kilogram, GLO, None), 'citric acid production' (kilogram, CN, None), 'nutrient supply from vinasse, from fermentation of sugarcane molasses' (kilogram, GLO, None), 'nutrient supply from manure, liquid, swine' (kilogram, GLO, None), 'diammonium phosphate production' (kilogram, RoW, None), 'nutrient supply from potassium nitrate' (kilogram, GLO, None), 'heat production, straw, organic, at furnace 300kW' (kilogram, GLO, None), 'treatment, sludge from pulp and paper production, landfarming' (kilogram, Europe without Switzerland, None), 'nutrient supply from vinasse, from fermentation of sugar beet' (kilogram, GLO, None), 'calcium ammonium nitrate production' (kilogram, RER, None), 'treatment, sludge from pulp and paper production, landfarming' (kilogram, RoW, None)].\n" + ] + } + ], + "source": [ + "aesa_pbs.remove_nitrogen_fertilizer_exchanges(remove_nflow_activities, show_cleaned=True)" + ] + }, + { + "cell_type": "markdown", + "id": "54ebefc3-c6f6-4a19-b729-1c0d966bd08e", + "metadata": { + "tags": [] + }, + "source": [ + "## Remove `A_technosphere_flows` database from the project" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "785ae18c-05fa-481c-8bf2-6b528bde1913", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 5 object(s):\n", + "\tbiosphere3\n", + "\tei35apos\n", + "\tei35cutoff\n", + "\tei38apos\n", + "\tei38cutoff" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if \"A_technosphere_flows\" in bw.databases:\n", + " del bw.databases['A_technosphere_flows']\n", + " \n", + "bw.databases" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/examples/how-to-use-aesa-methods.ipynb b/notebooks/examples/how-to-use-aesa-methods.ipynb new file mode 100644 index 0000000..64d3352 --- /dev/null +++ b/notebooks/examples/how-to-use-aesa-methods.ipynb @@ -0,0 +1,462 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4acb60f2-2bd5-490e-82cf-2afea5823bf0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.7'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import brightway2 as bw\n", + "import aesa_pbs\n", + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "cd9a81fe-c47e-480a-9f6d-3861d7b6f66c", + "metadata": {}, + "source": [ + "## Install AESA methods to a project" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f8c57a5a-64e9-4f60-9362-2d3c73ff4705", + "metadata": {}, + "outputs": [], + "source": [ + "bw.projects.set_current(\"default\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fb9e0efd-21a0-46e1-b53b-18c975af7de7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'biogeochemical flows', 'nitrogen', 'inverse modelling, surface water')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.11 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'change in biosphere integrity', 'functional diversity', 'direct land use')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 38 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'ozone depletion', 'stratospheric O3 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.16 seconds\n", + "Wrote 1 LCIA methods with 75 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'ocean acidification', 'carbonate ion concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.08 seconds\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Writing activities to SQLite3 database:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'biogeochemical flows', 'nitrogen', 'directly fixated')\n", + "+--------------------------------------------------------------------------------------------+\n", + "| Warning |\n", + "+--------------------------------------------------------------------------------------------+\n", + "| The method for quantification of directly fixated nitrogen |\n", + "| requires an additional database `A_technosphere_flows`. |\n", + "| This database was not found in the current project. |\n", + "| It will be generated now. |\n", + "| |\n", + "| Next steps: |\n", + "| 1. Use `aesa_pbs.get_nitrogenous_fertilizers()` to filter activities |\n", + "| \tproducing nitrogenous fertilizers in a specific background database. |\n", + "| 2. Use `aesa_pbs.update_nitrogen_fertilizer_exchanges()` to modify those activities. |\n", + "| |\n", + "| Optionally, |\n", + "| modified activities can be cleaned with `aesa_pbs.remove_nitrogen_fertilizer_exchanges()`. |\n", + "+--------------------------------------------------------------------------------------------+\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "0% [#] 100% | ETA: 00:00:01\n", + "Total time elapsed: 00:00:00\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Writing activities to SQLite3 database:\n", + " Started: 06/13/2022 10:19:52\n", + " Finished: 06/13/2022 10:19:52\n", + " Total time elapsed: 00:00:00\n", + " CPU %: 0.00\n", + " Memory %: 1.21\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applying strategy: link_iterable_by_fields\n", + "Applied 10 strategies in 0.09 seconds\n", + "Wrote 1 LCIA methods with 1 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'land-system change', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.13 seconds\n", + "Wrote 1 LCIA methods with 10 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'biogeochemical flows', 'phosphorus')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.11 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'climate change', 'energy imbalance at top-of-atmosphere')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 98 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'climate change', 'atmospheric CO2 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.09 seconds\n", + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'change in biosphere integrity', 'functional diversity', 'CO2eq emissions')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.11 seconds\n", + "Wrote 1 LCIA methods with 188 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'freshwater use', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 15 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.7', 'change in biosphere integrity', 'functional diversity', 'total')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.11 seconds\n", + "Wrote 1 LCIA methods with 226 characterization factors\n", + "\n" + ] + } + ], + "source": [ + "aesa_pbs.add_aesa_pbs(verbose=True)" + ] + }, + { + "cell_type": "markdown", + "id": "9ee1ef54-93b5-4641-a7c9-c77613cc11b6", + "metadata": {}, + "source": [ + "### Adapt a database for quantification of directly fixated nitrogen" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4e168d87-15a4-40ba-b802-2c295a5356d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 6 object(s):\n", + "\tA_technosphere_flows\n", + "\tbiosphere3\n", + "\tei35apos\n", + "\tei35cutoff\n", + "\tei38apos\n", + "\tei38cutoff" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b20bb02c-254f-46ca-ba00-9dfb6250226a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ammonium nitrate phosphate production' (kilogram, RoW, None),\n", + " 'nutrient supply from coconut husk' (kilogram, GLO, None),\n", + " 'diammonium phosphate production' (kilogram, RoW, None),\n", + " 'citric acid production' (kilogram, CN, None),\n", + " 'treatment, sludge from pulp and paper production, landfarming' (kilogram, RoW, None),\n", + " 'ammonium sulfate production' (kilogram, RER, None),\n", + " 'ammonium nitrate phosphate production' (kilogram, RER, None),\n", + " 'nutrient supply from poultry manure, dried' (kilogram, GLO, None),\n", + " 'nutrient supply from potassium nitrate' (kilogram, GLO, None),\n", + " 'nutrient supply from vinasse, from fermentation of sugarcane' (kilogram, GLO, None),\n", + " 'diammonium phosphate production' (kilogram, RER, None),\n", + " 'nutrient supply from calcium nitrate' (kilogram, GLO, None),\n", + " 'urea production, as N' (kilogram, RoW, None),\n", + " 'calcium ammonium nitrate production' (kilogram, RoW, None),\n", + " 'treatment, sludge from pulp and paper production, landfarming' (kilogram, CA-QC, None),\n", + " 'ammonium nitrate production' (kilogram, RER, None),\n", + " 'smelting and refining of nickel ore' (kilogram, GLO, None),\n", + " 'citric acid production' (kilogram, RoW, None),\n", + " 'nutrient supply from vinasse, from fermentation of sugar beet molasses' (kilogram, GLO, None),\n", + " 'citric acid production' (kilogram, RNA, None),\n", + " 'ammonium sulfate production' (kilogram, RoW, None),\n", + " 'nickel mine operation, sulfidic ore' (kilogram, GLO, None),\n", + " 'nutrient supply from ammonium chloride' (kilogram, GLO, None),\n", + " 'urea production, as N' (kilogram, RER, None),\n", + " 'nutrient supply from manure, liquid, swine' (kilogram, GLO, None),\n", + " 'nutrient supply from compost' (kilogram, GLO, None),\n", + " 'ammonium nitrate production' (kilogram, RoW, None),\n", + " 'treatment, sludge from pulp and paper production, landfarming' (kilogram, Europe without Switzerland, None),\n", + " 'calcium ammonium nitrate production' (kilogram, RER, None),\n", + " 'nutrient supply from vinasse, from fermentation of sugarcane molasses' (kilogram, GLO, None),\n", + " 'citric acid production' (kilogram, RER, None),\n", + " 'urea ammonium nitrate production' (kilogram, RoW, None),\n", + " 'nutrient supply from manure, solid, cattle' (kilogram, GLO, None),\n", + " 'monoammonium phosphate production' (kilogram, RoW, None),\n", + " 'calcium nitrate production' (kilogram, RoW, None),\n", + " 'monoammonium phosphate production' (kilogram, RER, None),\n", + " 'nutrient supply from vinasse, from fermentation of sugar beet' (kilogram, GLO, None),\n", + " 'heat production, straw, at furnace 300kW' (kilogram, GLO, None),\n", + " 'nutrient supply from vinasse, from fermentation of sweet sorghum' (kilogram, GLO, None),\n", + " 'nutrient supply from manure, liquid, cattle' (kilogram, GLO, None),\n", + " 'calcium nitrate production' (kilogram, RER, None),\n", + " 'nutrient supply from poultry manure, fresh' (kilogram, GLO, None),\n", + " 'heat production, straw, organic, at furnace 300kW' (kilogram, GLO, None),\n", + " 'urea ammonium nitrate production' (kilogram, RER, None)]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nflow_activities = aesa_pbs.get_nitrogenous_fertilizers(\"ei35cutoff\")\n", + "nflow_activities" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b5c943ce-bd32-4ef8-8568-138d0af4d1a3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Updating activities that produce nitrogen fertilizer...\n", + "__ 1 new exchange has been added to 'ammonium nitrate phosphate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from coconut husk' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'diammonium phosphate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'citric acid production' (kilogram, CN, None).\n", + "__ 1 new exchange has been added to 'treatment, sludge from pulp and paper production, landfarming' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'ammonium sulfate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'ammonium nitrate phosphate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from poultry manure, dried' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from potassium nitrate' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from vinasse, from fermentation of sugarcane' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'diammonium phosphate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from calcium nitrate' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'urea production, as N' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'calcium ammonium nitrate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'treatment, sludge from pulp and paper production, landfarming' (kilogram, CA-QC, None).\n", + "__ 1 new exchange has been added to 'ammonium nitrate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'smelting and refining of nickel ore' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'citric acid production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from vinasse, from fermentation of sugar beet molasses' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'citric acid production' (kilogram, RNA, None).\n", + "__ 1 new exchange has been added to 'ammonium sulfate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'nickel mine operation, sulfidic ore' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from ammonium chloride' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'urea production, as N' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from manure, liquid, swine' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from compost' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'ammonium nitrate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'treatment, sludge from pulp and paper production, landfarming' (kilogram, Europe without Switzerland, None).\n", + "__ 1 new exchange has been added to 'calcium ammonium nitrate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from vinasse, from fermentation of sugarcane molasses' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'citric acid production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'urea ammonium nitrate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from manure, solid, cattle' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'monoammonium phosphate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'calcium nitrate production' (kilogram, RoW, None).\n", + "__ 1 new exchange has been added to 'monoammonium phosphate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from vinasse, from fermentation of sugar beet' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'heat production, straw, at furnace 300kW' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from vinasse, from fermentation of sweet sorghum' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from manure, liquid, cattle' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'calcium nitrate production' (kilogram, RER, None).\n", + "__ 1 new exchange has been added to 'nutrient supply from poultry manure, fresh' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'heat production, straw, organic, at furnace 300kW' (kilogram, GLO, None).\n", + "__ 1 new exchange has been added to 'urea ammonium nitrate production' (kilogram, RER, None).\n", + "Updated 44 out of 44.\n" + ] + } + ], + "source": [ + "aesa_pbs.update_nitrogen_fertilizer_exchanges(nflow_activities, show_updated=True)" + ] + }, + { + "cell_type": "markdown", + "id": "6d704f7d-96f0-4703-a579-9061384b807b", + "metadata": {}, + "source": [ + "
\n", + " AESA methods are now correctly installed and ready to be used as any other `bw.methods` within the active project.
\n", + "
" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/examples/update-nflows-in-premise-dbs.ipynb b/notebooks/examples/update-nflows-in-premise-dbs.ipynb new file mode 100644 index 0000000..114b396 --- /dev/null +++ b/notebooks/examples/update-nflows-in-premise-dbs.ipynb @@ -0,0 +1,100 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5f4ffb04-6a47-4ea2-8432-2b8956e33231", + "metadata": {}, + "source": [ + "
\n", + " Run the next cells case you need to adapt premise generated databases.
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "bc7d39d3-e7ab-41e0-8145-c53c8f7ec6a5", + "metadata": {}, + "source": [ + "### Adapt a database for quantification of directly fixated nitrogen" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75b99a83-521f-4cde-ad6a-32d01ac90fd3", + "metadata": {}, + "outputs": [], + "source": [ + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2fe48ea7-797c-4751-b287-533c6855b759", + "metadata": {}, + "outputs": [], + "source": [ + "# get N-fertilizers in a dict {name: code}\n", + "nfert_acts = {}\n", + "for act in aesa_pbs.get_nitrogenous_fertilizers(\"ei35cutoff\"):\n", + " nfert_acts[act] = act[\"code\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12229a48-7991-4761-8954-b2b8a6822c02", + "metadata": {}, + "outputs": [], + "source": [ + "databases_to_update = [\n", + " db\n", + " for db in list(bw.databases)\n", + " if db not in [\"A_technosphere_flows\", \"biosphere3\",] # \"ei35cutoff\"]\n", + "]\n", + "\n", + "for db in databases_to_update:\n", + " print(f\"\\n///////////////////// {db} /////////////////////\\n\")\n", + " activities = []\n", + " for act in nfert_acts:\n", + " activities.append(bw.Database(db).get(act[\"code\"]))\n", + " # update the exchanges for filtered activities\n", + " aesa_pbs.update_nitrogen_fertilizer_exchanges(\n", + " activities=activities, show_updated=False\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "dfd5858f-8068-4222-b9ba-c862c10af2ab", + "metadata": {}, + "source": [ + "
\n", + " AESA methods are now correctly installed and ready to be used as any other `bw.methods` within the active project.
\n", + "
" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/project_path.py b/notebooks/project_path.py new file mode 100644 index 0000000..caf57ee --- /dev/null +++ b/notebooks/project_path.py @@ -0,0 +1,16 @@ +""" +Adapted from https://stackoverflow.com/a/51028921/14485040 + +This script has to be included in the `notebooks` directory and +has to be imported (first line) in every notebook that uses +scripts/data from directories relative to the root directory of +the project. +""" + +import os +import sys + +ROOT_DIR = os.path.abspath(os.path.join("..")) +# `..` indicate a relative path to root directory +if ROOT_DIR not in sys.path: + sys.path.append(ROOT_DIR) diff --git a/notebooks/test/checkPBsmethod.ipynb b/notebooks/test/checkPBsmethod.ipynb new file mode 100644 index 0000000..b305358 --- /dev/null +++ b/notebooks/test/checkPBsmethod.ipynb @@ -0,0 +1,23139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4f9d748b-8952-4044-a0a0-f3645cda63c2", + "metadata": {}, + "source": [ + "This notebook is used to check the migration of PBs method from SimaPro to Brightway2\n", + "\n", + "For that, its performance will be checked against the dataset of chemicals from Green Chemistry paper." + ] + }, + { + "cell_type": "markdown", + "id": "36b32fc3-27bd-4657-9b7d-71338665c28b", + "metadata": {}, + "source": [ + "# Read set of SimaPro solved chemicals" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "03987bb4-ee87-4757-85ab-c60c4ee0c7f0", + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "from pathlib import Path\n", + "\n", + "import brightway2 as bw\n", + "import pandas as pd\n", + "from project_path import ROOT_DIR\n", + "import project_path\n", + "from src.aesa_pbs.utils import progressbar, solve_lca" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "987d9cab-44bf-4250-9c01-8e69de32c947", + "metadata": {}, + "outputs": [], + "source": [ + "import bw2data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b3539445-2f56-41f9-ba76-ba7f74614ff6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.8+xlsxtoyaml.8.3'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from bw_recipe_2016 import add_recipe_2016\n", + "import aesa_pbs\n", + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "97556053-1446-46f2-81be-15840931ddf2", + "metadata": {}, + "outputs": [], + "source": [ + "SIMAPRO_DATA = Path(ROOT_DIR + r\"\\data\\raw\\lcia-results-from-sp910-combined.xlsx\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "209af87d-cb02-4ff4-afda-1cbed155e6d0", + "metadata": {}, + "outputs": [], + "source": [ + "with pd.ExcelFile(SIMAPRO_DATA, engine=None) as xl_obj:\n", + " df_simapro = pd.read_excel(xl_obj, sheet_name=\"Sheet1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "705d9ca3-118b-4240-b91c-34689d3babb3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
wkbNameActivity('PBs-LCIA V0.71 V0.71', 'Climate change - CO2 concentration', 'ppm')('PBs-LCIA V0.71 V0.71', 'Climate change - Energy imbalance', 'Wm-2')('PBs-LCIA V0.71 V0.71', 'Stratospheric ozone depletion', 'DU')('PBs-LCIA V0.71 V0.71', 'Ocean acidification', 'Omega Aragon')('PBs-LCIA V0.71 V0.71', 'Biogeochemical flows - P', 'Tg P')('PBs-LCIA V0.71 V0.71', 'Biogeochemical flows - N', 'Tg N')('PBs-LCIA V0.71 V0.71', 'Land-system change - Global', '%')('PBs-LCIA V0.71 V0.71', 'Freshwater use - Global', 'km3')...('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Human health', 'DALY')('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Ecosystems', 'species.yr')('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Resources', 'USD2013')('IPCC 2013 GWP 100a V1.03', 'IPCC GWP 100a', 'kg CO2 eq')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non renewable, fossil', 'MJ')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non-renewable, nuclear', 'MJ')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non-renewable, biomass', 'MJ')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, biomass', 'MJ')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, wind, solar, geothe', 'MJ')('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, water', 'MJ')
0Chemicals-Acids (inorganic)-MarketSulfuric acid {RoW}| market for sulfuric acid ...3.682300e-124.965498e-141.156094e-151.125213e-142.047673e-163.232508e-141.099348e-167.588386e-13...0.0000022.389076e-090.0526620.1567356.3163180.1517730.0001500.1218710.0115260.087806
1Chemicals-Acids (inorganic)-MarketSulfuric acid {RER}| market for sulfuric acid ...2.682016e-123.621578e-148.425343e-168.195512e-152.162822e-163.982650e-141.233763e-162.679813e-13...0.0000022.382083e-090.0605250.1192777.1750780.2334070.0001380.0731020.0165860.064712
2Chemicals-Acids (inorganic)-MarketSulfamic acid {GLO}| market for sulfamic acid ...5.439020e-117.271744e-138.913290e-151.662025e-131.122301e-152.008279e-135.993186e-164.956729e-12...0.0000071.325358e-080.2728122.17270235.9890362.0254700.0008120.4795710.1713910.812977
\n", + "

3 rows × 64 columns

\n", + "
" + ], + "text/plain": [ + " wkbName \\\n", + "0 Chemicals-Acids (inorganic)-Market \n", + "1 Chemicals-Acids (inorganic)-Market \n", + "2 Chemicals-Acids (inorganic)-Market \n", + "\n", + " Activity \\\n", + "0 Sulfuric acid {RoW}| market for sulfuric acid ... \n", + "1 Sulfuric acid {RER}| market for sulfuric acid ... \n", + "2 Sulfamic acid {GLO}| market for sulfamic acid ... \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Climate change - CO2 concentration', 'ppm') \\\n", + "0 3.682300e-12 \n", + "1 2.682016e-12 \n", + "2 5.439020e-11 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Climate change - Energy imbalance', 'Wm-2') \\\n", + "0 4.965498e-14 \n", + "1 3.621578e-14 \n", + "2 7.271744e-13 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Stratospheric ozone depletion', 'DU') \\\n", + "0 1.156094e-15 \n", + "1 8.425343e-16 \n", + "2 8.913290e-15 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Ocean acidification', 'Omega Aragon') \\\n", + "0 1.125213e-14 \n", + "1 8.195512e-15 \n", + "2 1.662025e-13 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Biogeochemical flows - P', 'Tg P') \\\n", + "0 2.047673e-16 \n", + "1 2.162822e-16 \n", + "2 1.122301e-15 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Biogeochemical flows - N', 'Tg N') \\\n", + "0 3.232508e-14 \n", + "1 3.982650e-14 \n", + "2 2.008279e-13 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Land-system change - Global', '%') \\\n", + "0 1.099348e-16 \n", + "1 1.233763e-16 \n", + "2 5.993186e-16 \n", + "\n", + " ('PBs-LCIA V0.71 V0.71', 'Freshwater use - Global', 'km3') ... \\\n", + "0 7.588386e-13 ... \n", + "1 2.679813e-13 ... \n", + "2 4.956729e-12 ... \n", + "\n", + " ('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Human health', 'DALY') \\\n", + "0 0.000002 \n", + "1 0.000002 \n", + "2 0.000007 \n", + "\n", + " ('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Ecosystems', 'species.yr') \\\n", + "0 2.389076e-09 \n", + "1 2.382083e-09 \n", + "2 1.325358e-08 \n", + "\n", + " ('ReCiPe 2016 Endpoint (H) V1.03 / World (2010) H/A', 'Resources', 'USD2013') \\\n", + "0 0.052662 \n", + "1 0.060525 \n", + "2 0.272812 \n", + "\n", + " ('IPCC 2013 GWP 100a V1.03', 'IPCC GWP 100a', 'kg CO2 eq') \\\n", + "0 0.156735 \n", + "1 0.119277 \n", + "2 2.172702 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non renewable, fossil', 'MJ') \\\n", + "0 6.316318 \n", + "1 7.175078 \n", + "2 35.989036 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non-renewable, nuclear', 'MJ') \\\n", + "0 0.151773 \n", + "1 0.233407 \n", + "2 2.025470 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Non-renewable, biomass', 'MJ') \\\n", + "0 0.000150 \n", + "1 0.000138 \n", + "2 0.000812 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, biomass', 'MJ') \\\n", + "0 0.121871 \n", + "1 0.073102 \n", + "2 0.479571 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, wind, solar, geothe', 'MJ') \\\n", + "0 0.011526 \n", + "1 0.016586 \n", + "2 0.171391 \n", + "\n", + " ('Cumulative Energy Demand V1.11 / Cumulative energy demand', 'Renewable, water', 'MJ') \n", + "0 0.087806 \n", + "1 0.064712 \n", + "2 0.812977 \n", + "\n", + "[3 rows x 64 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_simapro.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b069539a-eae0-4b0a-9d00-b626f25b322b", + "metadata": {}, + "outputs": [], + "source": [ + "# df_simapro.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7179c742-3d35-4087-b038-c07c7f7c5e61", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Global warming', 'kg CO2 eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Stratospheric ozone depletion', 'kg CFC11 eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ionizing radiation', 'kBq Co-60 eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ozone formation, Human health', 'kg NOx eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Fine particulate matter formation', 'kg PM2.5 eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ozone formation, Terrestrial ecosystems', 'kg NOx eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Terrestrial acidification', 'kg SO2 eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Freshwater eutrophication', 'kg P eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Marine eutrophication', 'kg N eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Terrestrial ecotoxicity', 'kg 1,4-DCB')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Freshwater ecotoxicity', 'kg 1,4-DCB')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Marine ecotoxicity', 'kg 1,4-DCB')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Human carcinogenic toxicity', 'kg 1,4-DCB')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Human non-carcinogenic toxicity', 'kg 1,4-DCB')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Land use', 'm2a crop eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Mineral resource scarcity', 'kg Cu eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Fossil resource scarcity', 'kg oil eq')\",\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Water consumption', 'm3')\"]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in df_simapro.columns if \"ReCiPe 2016 Midpoint\" in i]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ad9b9bbf-a140-43fe-abb5-497c562c3fb0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"('PBs-LCIA (baseline) V0.72', 'Climate change - CO2 concentration', 'ppm')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Climate change - Energy imbalance', 'Wm-2')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Stratospheric ozone depletion', 'DU')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Ocean acidification', 'Omega Aragon')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Biogeochemical flows - P', 'Tg P')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Biogeochemical flows - N', 'Tg N')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Land-system change - Global', '%')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Freshwater use - Global', 'km3')\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Change in biosphere integrity - BII loss', '% BII loss')\"]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in df_simapro.columns if \"0.72\" in i]" + ] + }, + { + "cell_type": "markdown", + "id": "379d0d13-7e92-4d7a-9cce-7dbb6de916f8", + "metadata": { + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, + "source": [ + "```python\n", + "# all ReCiPe2016 categories implemented in bw_recipe_2016\n", + "# use them to update `map_methods`\n", + "[\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Mineral Resource Scarcity\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Mineral Resource Scarcity\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Mineral Resource Scarcity\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Fossil resource scarcity\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ozone Formation\", \"Damage to Ecosystems\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Marine eutrophication\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Terrestrial Acidification\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Global Warming\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Global Warming\", \"100 year timescale\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Global Warming\", \"1000 year timescale\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ionizing Radiation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ionizing Radiation\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ionizing Radiation\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ozone Formation\", \"Damage to Humans\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Stratospheric Ozone Depletion\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Stratospheric Ozone Depletion\", \"100 year timescale\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Stratospheric Ozone Depletion\", \"Infinite timescale\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Marine\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Marine\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Marine\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Terrestrial\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Terrestrial\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Terrestrial\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Land occupation\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Freshwater Eutrophication\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Carcinogenic\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Carcinogenic\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Carcinogenic\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Freshwater\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Freshwater\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Ecotoxicity\", \"Freshwater\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Water consumption\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Particulate Matter Formation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Particulate Matter Formation\", \"Hierarchist\", ),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Particulate Matter Formation\", \"Egalitarian\", ),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Land transformation\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Non-carcinogenic\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Non-carcinogenic\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Midpoint\", \"Toxicity\", \"Non-carcinogenic\", \"Egalitarian\"),\n", + "\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Global Warming\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Global Warming\", \"100 year timescale\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Global Warming\", \"1000 year timescale\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Stratospheric Ozone Depletion\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Stratospheric Ozone Depletion\", \"100 year timescale\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Stratospheric Ozone Depletion\", \"Infinite timescale\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ionizing Radiation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ionizing Radiation\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ionizing Radiation\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Particulate Matter Formation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Particulate Matter Formation\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Particulate Matter Formation\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ozone Formation\", \"Damage to Humans\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ozone Formation\", \"Damage to Humans\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Ozone Formation\", \"Damage to Humans\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Carcinogenic\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Carcinogenic\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Carcinogenic\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Non-carcinogenic\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Non-carcinogenic\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Toxicity\", \"Non-carcinogenic\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Water consumption\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Water consumption\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Water consumption\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Global Warming\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Global Warming\", \"100 year timescale\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Global Warming\", \"1000 year timescale\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ozone Formation\", \"Damage to Ecosystems\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ozone Formation\", \"Damage to Ecosystems\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ozone Formation\", \"Damage to Ecosystems\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Terrestrial Acidification\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Terrestrial Acidification\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Terrestrial Acidification\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ecotoxicity\", \"Terrestrial\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ecotoxicity\", \"Terrestrial\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Ecotoxicity\", \"Terrestrial\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Water consumption\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Water consumption\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Water consumption\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land occupation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land occupation\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land occupation\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Global Warming\", \"20 year timescale\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Global Warming\", \"100 year timescale\",\"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Global Warming\", \"1000 year timescale\",\"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Freshwater Eutrophication\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Freshwater Eutrophication\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Freshwater Eutrophication\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Ecotoxicity\", \"Freshwater\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Ecotoxicity\", \"Freshwater\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Ecotoxicity\", \"Freshwater\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Water consumption\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Water consumption\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Water consumption\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Ecotoxicity\", \"Marine\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Ecotoxicity\", \"Marine\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Ecotoxicity\", \"Marine\",\"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Marine eutrophication\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Marine eutrophication\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Marine eutrophication\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Mineral Resource Scarcity\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Mineral Resource Scarcity\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Mineral Resource Scarcity\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land transformation\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land transformation\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Land transformation\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Fossil resource scarcity\", \"Individualist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Fossil resource scarcity\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Fossil resource scarcity\", \"Egalitarian\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Freshwater ecosystems\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Resources\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Human health\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Marine ecosystems\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Terrestrial ecosystems\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Ecosystems\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Ecosystems\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Ecosystems\", \"Aggregated\", \"Individualist\"),\n", + "\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Weighted single score\", \"Aggregated\", \"Egalitarian\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Weighted single score\", \"Aggregated\", \"Hierarchist\"),\n", + "(\"ReCiPe 2016\", \"1.1 (20180117)\", \"Endpoint\", \"Weighted single score\", \"Aggregated\", \"Individualist\"),\n", + "]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "01e42ff0-1991-4b5d-ac6f-66e08a1b2e9e", + "metadata": {}, + "outputs": [], + "source": [ + "map_methods = {\n", + " \"Activity\": \"Activity\",\n", + " \"('PBs-LCIA (baseline) V0.72', 'Freshwater use - Global', 'km3')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'freshwater use', 'global'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Climate change - CO2 concentration', 'ppm')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'climate change', 'atmospheric CO2 concentration'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Change in biosphere integrity - BII loss', '% BII loss')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'change in biosphere integrity', 'functional diversity', 'total'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Ocean acidification', 'Omega Aragon')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'ocean acidification', 'carbonate ion concentration'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Biogeochemical flows - P', 'Tg P')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'biogeochemical flows', 'phosphorus'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Climate change - Energy imbalance', 'Wm-2')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'climate change','energy imbalance at top-of-atmosphere'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Biogeochemical flows - N', 'Tg N')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'biogeochemical flows', 'nitrogen'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Stratospheric ozone depletion', 'DU')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'ozone depletion', 'stratospheric O3 concentration'),\n", + " \"('PBs-LCIA (baseline) V0.72', 'Land-system change - Global', '%')\": ('AESA (PBs-LCIA)', str(aesa_pbs.__version__), 'land-system change', 'global'),\n", + " \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Global warming', 'kg CO2 eq')\": ('ReCiPe 2016', '1.1 (20180117)', 'Midpoint', 'Global Warming', '100 year timescale', 'Hierarchist'),\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Stratospheric ozone depletion', 'kg CFC11 eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ionizing radiation', 'kBq Co-60 eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ozone formation, Human health', 'kg NOx eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Fine particulate matter formation', 'kg PM2.5 eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Ozone formation, Terrestrial ecosystems', 'kg NOx eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Terrestrial acidification', 'kg SO2 eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Freshwater eutrophication', 'kg P eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Marine eutrophication', 'kg N eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Terrestrial ecotoxicity', 'kg 1,4-DCB')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Freshwater ecotoxicity', 'kg 1,4-DCB')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Marine ecotoxicity', 'kg 1,4-DCB')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Human carcinogenic toxicity', 'kg 1,4-DCB')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Human non-carcinogenic toxicity', 'kg 1,4-DCB')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Land use', 'm2a crop eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Mineral resource scarcity', 'kg Cu eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Fossil resource scarcity', 'kg oil eq')\": ,\n", + " # \"('ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Water consumption', 'm3'): \"\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "b6915f9a-0f52-4c05-9424-66e15248fd23", + "metadata": {}, + "outputs": [], + "source": [ + "rev_map_methods = {v: k for k, v in map_methods.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "72ec9eb5-12f7-44de-a56e-3034b0258d69", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\vtulus\\VirtualEnvs\\bw2\\lib\\site-packages\\pandas\\core\\common.py:241: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", + " result = np.asarray(values, dtype=dtype)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Activity(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global)(ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist)
0Sulfuric acid {RoW}| market for sulfuric acid ...7.588386e-133.687066e-124.280597e-141.126669e-142.047673e-164.971751e-143.232508e-141.156094e-151.099348e-160.160737
1Sulfuric acid {RER}| market for sulfuric acid ...2.679813e-132.685277e-123.340084e-148.205477e-152.162822e-163.625857e-143.982650e-148.425343e-161.233763e-160.123240
2Sulfamic acid {GLO}| market for sulfamic acid ...4.956729e-125.443214e-115.046367e-131.663306e-131.122301e-157.277248e-132.008279e-138.913290e-155.993186e-162.202389
\n", + "
" + ], + "text/plain": [ + " Activity \\\n", + "0 Sulfuric acid {RoW}| market for sulfuric acid ... \n", + "1 Sulfuric acid {RER}| market for sulfuric acid ... \n", + "2 Sulfamic acid {GLO}| market for sulfamic acid ... \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global) \\\n", + "0 7.588386e-13 \n", + "1 2.679813e-13 \n", + "2 4.956729e-12 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration) \\\n", + "0 3.687066e-12 \n", + "1 2.685277e-12 \n", + "2 5.443214e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total) \\\n", + "0 4.280597e-14 \n", + "1 3.340084e-14 \n", + "2 5.046367e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration) \\\n", + "0 1.126669e-14 \n", + "1 8.205477e-15 \n", + "2 1.663306e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus) \\\n", + "0 2.047673e-16 \n", + "1 2.162822e-16 \n", + "2 1.122301e-15 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere) \\\n", + "0 4.971751e-14 \n", + "1 3.625857e-14 \n", + "2 7.277248e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen) \\\n", + "0 3.232508e-14 \n", + "1 3.982650e-14 \n", + "2 2.008279e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration) \\\n", + "0 1.156094e-15 \n", + "1 8.425343e-16 \n", + "2 8.913290e-15 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global) \\\n", + "0 1.099348e-16 \n", + "1 1.233763e-16 \n", + "2 5.993186e-16 \n", + "\n", + " (ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist) \n", + "0 0.160737 \n", + "1 0.123240 \n", + "2 2.202389 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_sp_selected = df_simapro.rename(columns=map_methods)[map_methods.values()]\n", + "df_sp_selected.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "f5181cff-219f-433f-85a1-4146988cab63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "947" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(list(df_sp_selected.Activity))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "873f0a82-5c44-4ddc-b375-1d4a430b505b", + "metadata": {}, + "outputs": [], + "source": [ + "# list(df_simapro.Activity)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "64049d8e-c54c-4562-b480-5aab955788e5", + "metadata": {}, + "outputs": [], + "source": [ + "pattern = re.compile(r\"(^.*) {(.*)}\\| (.*) \\|\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a0da35e3-5246-4e95-9bf1-d1d85a21662a", + "metadata": {}, + "outputs": [], + "source": [ + "activities_sp = {}\n", + "for i in list(df_sp_selected.Activity):\n", + " mo = re.match(pattern, i)\n", + " if mo:\n", + " ref_prod = mo[1].lower()\n", + " location = mo[2]\n", + " name = mo[3].lower()\n", + " activities_sp[i] = {\"reference product\": ref_prod, \"name\": name, \"location\": location}\n", + "# activities_sp" + ] + }, + { + "cell_type": "markdown", + "id": "11cbe5bd-e595-4411-8fa3-125a0ed0525e", + "metadata": {}, + "source": [ + "# Prepare bw project" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "65671efb-0f3a-44d2-9e6b-a420eb196f16", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Brightway2 projects manager with 9 objects:\n", + "\taachen_fast_calculations\n", + "\tdefault\n", + "\tdouble_count_electricity\n", + "\tpremise_scenarios_ei35\n", + "\tpremisified_scenarios\n", + "\tpremisified_scenarios_cars\n", + "\tspreadsheet\n", + "\tsupply chain graph\n", + "\ttest\n", + "Use `projects.report()` to get a report on all projects." + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.projects" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "456ba4b6-e0ba-43a6-bc56-0511fb2298e9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vacuuming database \n", + "Vacuuming database \n", + "Vacuuming database \n", + "Databases in 'check_PBsmethod' project: ['biosphere3', 'ei35apos']\n" + ] + } + ], + "source": [ + "# Create a \"check_PBsmethod\" project or activate it\n", + "\n", + "if not [proj[0] for proj in bw.projects.report() if proj[0]==\"check_PBsmethod\"]:\n", + " bw.projects.set_current(\"default\")\n", + " bw.projects.copy_project(\"check_PBsmethod\", switch=True)\n", + " \n", + " # delete extra dbs\n", + " del bw.databases['ei35cutoff']\n", + " del bw.databases['ei38apos']\n", + " del bw.databases['ei38cutoff']\n", + "else:\n", + " bw.projects.set_current(\"check_PBsmethod\")\n", + "print(f\"Databases in '{bw.projects.current}' project: {bw.databases.list}\")\n", + " \n", + " # Delete \"check_PBsmethod\" project WHEN FINISHED TESTING!\n", + "# bw.projects.set_current(\"default\")\n", + "# bw.projects.delete_project(name=\"check_PBsmethod\", delete_dir=True)\n", + "\n", + "# Delete database\n", + "# del bw.databases['A_technosphere_flows']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "776524f5-a009-4ec2-9330-21ddcd8c67bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'C:\\\\Users\\\\vtulus\\\\AppData\\\\Local\\\\pylca\\\\Brightway3\\\\check_PBsmethod.fbe9669d91325ca0149ce34bf0d8ff48'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.projects.dir" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "80634c12-a63e-49e3-915a-fa2b22abaa99", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Biosphere database already present!!! No setup is needed\n" + ] + } + ], + "source": [ + "bw.bw2setup()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6be97a2f-912b-4576-a8df-6ca17fe20ac7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Database already present! No import is needed.\n" + ] + } + ], + "source": [ + "if \"ei35apos\" in bw.databases:\n", + " print(\"Database already present! No import is needed.\")\n", + "else:\n", + " print(\"Need the apos db, should have been copied from 'default' project.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "bd115b45-316d-4754-9cd7-61ef46bbb5f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 2 object(s):\n", + "\tbiosphere3\n", + "\tei35apos" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9e07275e-fe8f-48db-a8bd-e5449f67824e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'ozone depletion', 'stratospheric O3 concentration')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'nitrogen', 'directly fixated')\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Writing activities to SQLite3 database:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+------------------------------------------------------------+\n", + "| Warning |\n", + "+------------------------------------------------------------+\n", + "| The method for quantification of directly fixated nitrogen |\n", + "| requires an additional database `A_technosphere_flows`. |\n", + "| This database was not found in the current project. |\n", + "| It will be generated now. |\n", + "| |\n", + "| Next steps: |\n", + "| 1. Use `aesa_pbs.get_nitrogenous_fertilizers()` to filter |\n", + "| activities producing nitrogenous fertilizers in a |\n", + "| specific background database. |\n", + "| 2. Use `aesa_pbs.update_nitrogen_fertilizer_exchanges()` |\n", + "| to modify those activities. |\n", + "| |\n", + "| Optionally, |\n", + "| modified activities can be cleaned with |\n", + "| `aesa_pbs.remove_nitrogen_fertilizer_exchanges()`. |\n", + "+------------------------------------------------------------+\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "0% [#] 100% | ETA: 00:00:01\n", + "Total time elapsed: 00:00:00\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Writing activities to SQLite3 database:\n", + " Started: 07/25/2022 12:37:53\n", + " Finished: 07/25/2022 12:37:53\n", + " Total time elapsed: 00:00:00\n", + " CPU %: 0.00\n", + " Memory %: 1.45\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'total')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'direct land use')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'CO2eq emissions')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'land-system change', 'global')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'nitrogen', 'inverse modelling, surface water')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'climate change', 'energy imbalance at top-of-atmosphere')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'climate change', 'atmospheric CO2 concentration')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'freshwater use', 'global')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'ocean acidification', 'carbonate ion concentration')\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'phosphorus')\n" + ] + } + ], + "source": [ + "force_reinstall = True\n", + "\n", + "if (\n", + " any(\n", + " \"AESA\" in str(aesa) and str(aesa_pbs.__version__) in str(aesa)\n", + " for aesa in bw.methods\n", + " )\n", + " and not force_reinstall\n", + "):\n", + " print(\"AESA methods already present!\")\n", + "else:\n", + " aesa_pbs.add_aesa_pbs(verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "8ad15016-18d0-45b9-8c31-540caf09ddd6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding FreshwaterEcotoxicity\n", + "Adding LandOccupation\n", + "Adding TerrestrialEcotoxicity\n", + "Adding GlobalWarming\n", + "Adding StratosphericOzoneDepletion\n", + "Adding FreshwaterEutrophication\n", + "Adding MarineEutrophication\n", + "Adding LandTransformation\n", + "Adding MarineEcotoxicity\n", + "Adding IonizingRadiation\n", + "Adding FossilResourceScarcity\n", + "Adding MineralResourceScarcity\n", + "Adding TerrestrialAcidification\n", + "Adding HumanNoncarcinogenicToxicity\n", + "Adding ParticulateMatterFormation\n", + "Adding WaterConsumption\n", + "Adding HumanCarcinogenicToxicity\n", + "Adding OzoneFormationHumans\n", + "Adding OzoneFormationEcosystems\n", + "Adding single endpoints\n", + "Adding aggregated endpoints\n" + ] + } + ], + "source": [ + "if any(rcp for rcp in bw.methods if \"recipe 2016\" in str(rcp).lower()):\n", + " print(\"ReCiPe2016 methods already present!\")\n", + "else:\n", + " add_recipe_2016()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "09527eda-3b7f-45e7-9b73-ec5df2c01837", + "metadata": {}, + "outputs": [], + "source": [ + "recipe2016 = [rcp for rcp in bw.methods if \"recipe 2016\" in str(rcp).lower()]\n", + "pbs = [aesa for aesa in bw.methods if \"AESA\" in str(aesa) and str(aesa_pbs.__version__) in str(aesa)]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "de48b278-4885-426b-a347-7fd89875feee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('PBs-LCIA (baseline) V0.72', 'Stratospheric ozone depletion', 'DU')\n", + "('PBs-LCIA (baseline) V0.72', 'Change in biosphere integrity - BII loss', '% BII loss')\n", + "('PBs-LCIA (baseline) V0.72', 'Land-system change - Global', '%')\n", + "('PBs-LCIA (baseline) V0.72', 'Climate change - Energy imbalance', 'Wm-2')\n", + "('PBs-LCIA (baseline) V0.72', 'Climate change - CO2 concentration', 'ppm')\n", + "('PBs-LCIA (baseline) V0.72', 'Freshwater use - Global', 'km3')\n", + "('PBs-LCIA (baseline) V0.72', 'Ocean acidification', 'Omega Aragon')\n", + "('PBs-LCIA (baseline) V0.72', 'Biogeochemical flows - P', 'Tg P')\n" + ] + } + ], + "source": [ + "# for m in recipe2016:\n", + "for m in pbs:\n", + " for k, v in rev_map_methods.items():\n", + " if str(k) in str(m):\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "3effb372-c91f-4103-b2b2-397e70fecb93", + "metadata": {}, + "outputs": [], + "source": [ + "eidb = bw.Database(\"ei35apos\")\n", + "# eidb" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "245600a9-84bd-4e2a-8e40-d6e4093e986d", + "metadata": {}, + "outputs": [], + "source": [ + "trial = eidb.random()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "b2d49d63-818e-43bc-849a-6f8e84addb96", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['comment', 'classifications', 'activity type', 'activity', 'database', 'filename', 'location', 'name', 'synonyms', 'parameters', 'authors', 'type', 'reference product', 'flow', 'unit', 'production amount', 'code'])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial.as_dict().keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "c472b927-d2b9-4314-aacf-bf87764514a2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'treatment of blast furnace gas, in power plant'" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial[\"name\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "9a06cb4b-9dcf-48f8-a720-9902aa56408d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'treatment of blast furnace gas, in power plant'" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial.as_dict()[\"name\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "12a405fb-7b85-4a9e-902a-214375ec3ee3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'85d5835b8da689ce4e31828a93c5a01d'" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial.as_dict()[\"code\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "e1916e0c-2420-4c00-88b8-7ac6ec633183", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('ei35apos', '85d5835b8da689ce4e31828a93c5a01d')" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial.key" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "e0ae9228-4485-4ec5-8d03-e59acb62b0fd", + "metadata": {}, + "outputs": [], + "source": [ + "# [i for i in trial.biosphere()]" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "59a54d4e-9f1a-4a02-8077-6b11e097c1d9", + "metadata": {}, + "outputs": [], + "source": [ + "# [i for i in trial.exchanges()]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "b94cd9d2-0ff0-4ac6-b250-19d205c2a85e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Exchange: 1.0 kilowatt hour 'treatment of blast furnace gas, in power plant' (kilowatt hour, ES, None) to 'treatment of blast furnace gas, in power plant' (kilowatt hour, ES, None)>]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in trial.production()]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "2ba3ae10-a0f2-4136-a9e5-8cf0d65ae0d0", + "metadata": {}, + "outputs": [], + "source": [ + "# [i for i in trial.substitution()]\n", + "# [i for i in trial.technosphere()]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "0a0c1f38-b616-4d0b-9d67-fa4214735e01", + "metadata": {}, + "outputs": [], + "source": [ + "# [i for i in trial.upstream()]" + ] + }, + { + "cell_type": "raw", + "id": "d506d83a-4834-4eb2-b76d-2c67bf20bed7", + "metadata": {}, + "source": [ + "[\n", + " act\n", + " for act in eidb\n", + " if \"Nitric acid, without water, in 50% solution state\".lower()\n", + " in str(act[\"reference product\"])\n", + " and \"market\" in str(act[\"name\"])\n", + " and \"RER\" in str(act[\"location\"])\n", + "]" + ] + }, + { + "cell_type": "raw", + "id": "06ca15e1-d9b8-4832-b8bb-acdec71793c0", + "metadata": {}, + "source": [ + "[\n", + " act#[\"reference product\"]\n", + " for act in eidb\n", + " if \"vegetable oil, refined\" in str(act)\n", + " # and \"RER\" in act[\"location\"]\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "9209bf32-f20a-47a1-a440-4e1f78f3eaef", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['reference product', 'name', 'location'])" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "activities_sp['Sulfuric acid {RoW}| market for sulfuric acid | APOS, S'].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "e09e22ce-c02e-41e5-8fff-3bc426ffdfb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Progress: [🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩] 947/947 activity(ies)\n", + "Duration: 0:00:05.512631\n" + ] + } + ], + "source": [ + "eidb_markets = [activity for activity in eidb if \"market\" in activity[\"name\"]]\n", + "\n", + "activities_bw = []\n", + "\n", + "for act_sp in progressbar(\n", + " itobj=activities_sp.keys(),\n", + " prefix=\"Progress: \",\n", + " size=20,\n", + " unit=\"activity(ies)\",\n", + "):\n", + " # activities_sp.setdefault(\"spname\", None)\n", + " for act in eidb_markets:\n", + " if (\n", + " activities_sp[act_sp][\"reference product\"].lower() == str(act[\"reference product\"]).lower()\n", + " and \"market\" in str(act[\"name\"])\n", + " and activities_sp[act_sp][\"location\"] == str(act[\"location\"])\n", + " ):\n", + " activities_bw.append(act)\n", + " activities_sp[act_sp].update({\"einame\": act})\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "20d31c46-72f3-4788-a4ba-43e8c5818f1c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i, a in activities_sp.items() if \"market\" in a.get(\"einame\", \"nope\")]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "3ee454d7-7a4c-4604-b65b-c7680a696874", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'market for neutralising agent, sodium hydroxide-equivalent' (kilogram, GLO, None),\n", + " 'fraction 8 from naphtha separation to generic market for chemical, organic' (kilogram, GLO, None),\n", + " 'methylcyclopentane to generic market for solvent, organic' (kilogram, GLO, None),\n", + " '1,1-dimethylcyclopentane to generic market for solvent, organic' (kilogram, GLO, None),\n", + " 'white spirit to generic market for solvent for paint' (kilogram, GLO, None),\n", + " 'praseodymium oxide to generic market for mischmetal' (kilogram, GLO, None),\n", + " 'market for vegetable oil, refined' (kilogram, GLO, None),\n", + " 'market for solvent for chromatography analysis' (kilogram, GLO, None),\n", + " 'market for ethanol, without water, in 99.7% solution state, from fermentation, at service station' (kilogram, CH, None),\n", + " 'palm oil, refined, to generic market for vegetable oil' (kilogram, GLO, None),\n", + " 'fraction 7 from naphtha separation to generic market for chemical, organic' (kilogram, GLO, None),\n", + " 'heptane to generic market for solvent, organic' (kilogram, GLO, None),\n", + " 'lime to generic market for soil pH raising agent' (kilogram, GLO, None),\n", + " 'argon to generic market for inert gas for discharge lamps' (kilogram, GLO, None),\n", + " 'market for solvent, organic' (kilogram, GLO, None),\n", + " 'sodium hydroxide to generic market for neutralising agent' (kilogram, GLO, None),\n", + " 'soda ash, light, crystalline, heptahydrate, to generic market for neutralising agent' (kilogram, GLO, None),\n", + " 'market for de-icer' (kilogram, GLO, None),\n", + " 'soybean oil, refined, to generic market for vegetable oil, refined' (kilogram, GLO, None),\n", + " 'market for mischmetal' (kilogram, GLO, None),\n", + " 'dichloropropene to generic market for pesticide, unspecified' (kilogram, GLO, None),\n", + " 'market for inert filler' (kilogram, GLO, None),\n", + " 'neodymium oxide to generic market for mischmetal' (kilogram, GLO, None),\n", + " 'turpentine to generic market for solvent for paint' (kilogram, GLO, None),\n", + " 'sodium bicarbonate, to generic market for neutralising agent' (kilogram, GLO, None),\n", + " '2,3-dimethylbutan to generic market for solvent, organic' (kilogram, GLO, None),\n", + " 'market for inert gas for discharge lamps' (kilogram, GLO, None),\n", + " 'market for polishing powder' (kilogram, GLO, None),\n", + " 'methyl acetate to generic market for solvent, organic' (kilogram, GLO, None),\n", + " 'methanol to generic market for solvent for chromatography analysis' (kilogram, GLO, None),\n", + " 'market for ethanol, without water, in 99.7% solution state, from fermentation, at service station' (kilogram, RoW, None),\n", + " 'market for chemical, organic' (kilogram, GLO, None),\n", + " 'cerium oxide to generic market for polishing powder' (kilogram, GLO, None)}" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# len(\n", + "# set(activities_bw)- set([b[\"spname\"] for b in activities_sp.values() if b.get(\"spname\")])\n", + "# )\n", + "\n", + "# activities not returned to activities_sp!!!\n", + "# STOPPED HERE!\n", + "set(activities_bw)- set([b[\"einame\"] for b in activities_sp.values() if b.get(\"einame\")])" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "5533a1b6-ce79-46e6-83c1-0649de54a7c5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "978" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(activities_bw)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "a4caae38-b6fb-4c4f-ab55-49894f93f4d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "945" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "978-33" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "d592439f-a457-443e-9d86-275b0fbaae23", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "978" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(set(activities_bw))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "58988905-20d6-411a-869d-9730e6d41040", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "947" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "871+76" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "1142df17-d1a5-4f5c-991f-542f292e8f04", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "947" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(activities_sp)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "2b641165-64f4-4be3-9f16-705660fa08a8", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['Deinking emulsion, in paper production {GLO}| market for | APOS, S',\n", + " 'Rare earth concentrate, 70% REO, from bastnasite {GLO}| market for | APOS, U - copy']" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i for i in activities_sp if activities_sp[i].get(\"einame\", None)==None]" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "7e1950b3-9794-4436-9253-f3bd0c78f008", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'market for sulfuric acid' (kilogram, RoW, None)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "activities_sp['Sulfuric acid {RoW}| market for sulfuric acid | APOS, S'][\"einame\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "8b7ffbf6-7275-4f75-b031-dc0509cbb0ca", + "metadata": {}, + "outputs": [], + "source": [ + "def get_einame(key):\n", + " return activities_sp[key].get(\"einame\", None)#[\"activity\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "ef44b06f-2486-4c00-a726-08bd58ac20e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'market for sulfuric acid' (kilogram, RoW, None)" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_einame('Sulfuric acid {RoW}| market for sulfuric acid | APOS, S')" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "0a8171cc-4ad8-4389-b21c-ca0ebe850db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Activity(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global)(ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist)einame
0Sulfuric acid {RoW}| market for sulfuric acid ...7.588386e-133.687066e-124.280597e-141.126669e-142.047673e-164.971751e-143.232508e-141.156094e-151.099348e-160.160737[comment, classifications, activity type, acti...
1Sulfuric acid {RER}| market for sulfuric acid ...2.679813e-132.685277e-123.340084e-148.205477e-152.162822e-163.625857e-143.982650e-148.425343e-161.233763e-160.123240[comment, classifications, activity type, acti...
2Sulfamic acid {GLO}| market for sulfamic acid ...4.956729e-125.443214e-115.046367e-131.663306e-131.122301e-157.277248e-132.008279e-138.913290e-155.993186e-162.202389[comment, classifications, activity type, acti...
3Phosphoric acid, industrial grade, without wat...2.076097e-113.683377e-117.170159e-131.125543e-135.740347e-144.924900e-134.259820e-136.920908e-158.400603e-161.491608[comment, classifications, activity type, acti...
4Phosphoric acid, fertiliser grade, without wat...1.415177e-112.322850e-115.772262e-137.098025e-145.402468e-143.118323e-133.214601e-134.997489e-158.019743e-160.957087[comment, classifications, activity type, acti...
.......................................
942Polyvinylchloride, suspension polymerised {GLO...4.007584e-125.098499e-114.271375e-131.557991e-134.873162e-156.738817e-131.941198e-137.519967e-153.080851e-172.035933[comment, classifications, activity type, acti...
943Polyvinylidenchloride, granulate {RER}| market...1.261049e-121.167023e-101.113848e-123.566084e-136.547821e-151.545165e-121.637795e-131.837176e-15-2.863068e-185.330478[comment, classifications, activity type, acti...
944Polyvinylidenchloride, granulate {RoW}| market...1.275448e-121.183721e-101.133030e-123.617105e-136.524817e-151.566875e-121.181972e-131.901179e-151.994662e-175.399748[comment, classifications, activity type, acti...
945Tetrafluoroethylene {GLO}| market for | APOS, U2.032338e-111.900741e-102.871105e-115.808169e-139.836993e-156.185484e-122.573934e-123.205619e-111.585247e-15137.134320[comment, classifications, activity type, acti...
946Tetrafluoroethylene film, on glass {GLO}| mark...2.198749e-112.083141e-103.023271e-116.365536e-131.065948e-146.610749e-122.757163e-123.366050e-111.752770e-15144.344430[comment, classifications, activity type, acti...
\n", + "

947 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " Activity \\\n", + "0 Sulfuric acid {RoW}| market for sulfuric acid ... \n", + "1 Sulfuric acid {RER}| market for sulfuric acid ... \n", + "2 Sulfamic acid {GLO}| market for sulfamic acid ... \n", + "3 Phosphoric acid, industrial grade, without wat... \n", + "4 Phosphoric acid, fertiliser grade, without wat... \n", + ".. ... \n", + "942 Polyvinylchloride, suspension polymerised {GLO... \n", + "943 Polyvinylidenchloride, granulate {RER}| market... \n", + "944 Polyvinylidenchloride, granulate {RoW}| market... \n", + "945 Tetrafluoroethylene {GLO}| market for | APOS, U \n", + "946 Tetrafluoroethylene film, on glass {GLO}| mark... \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global) \\\n", + "0 7.588386e-13 \n", + "1 2.679813e-13 \n", + "2 4.956729e-12 \n", + "3 2.076097e-11 \n", + "4 1.415177e-11 \n", + ".. ... \n", + "942 4.007584e-12 \n", + "943 1.261049e-12 \n", + "944 1.275448e-12 \n", + "945 2.032338e-11 \n", + "946 2.198749e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration) \\\n", + "0 3.687066e-12 \n", + "1 2.685277e-12 \n", + "2 5.443214e-11 \n", + "3 3.683377e-11 \n", + "4 2.322850e-11 \n", + ".. ... \n", + "942 5.098499e-11 \n", + "943 1.167023e-10 \n", + "944 1.183721e-10 \n", + "945 1.900741e-10 \n", + "946 2.083141e-10 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total) \\\n", + "0 4.280597e-14 \n", + "1 3.340084e-14 \n", + "2 5.046367e-13 \n", + "3 7.170159e-13 \n", + "4 5.772262e-13 \n", + ".. ... \n", + "942 4.271375e-13 \n", + "943 1.113848e-12 \n", + "944 1.133030e-12 \n", + "945 2.871105e-11 \n", + "946 3.023271e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration) \\\n", + "0 1.126669e-14 \n", + "1 8.205477e-15 \n", + "2 1.663306e-13 \n", + "3 1.125543e-13 \n", + "4 7.098025e-14 \n", + ".. ... \n", + "942 1.557991e-13 \n", + "943 3.566084e-13 \n", + "944 3.617105e-13 \n", + "945 5.808169e-13 \n", + "946 6.365536e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus) \\\n", + "0 2.047673e-16 \n", + "1 2.162822e-16 \n", + "2 1.122301e-15 \n", + "3 5.740347e-14 \n", + "4 5.402468e-14 \n", + ".. ... \n", + "942 4.873162e-15 \n", + "943 6.547821e-15 \n", + "944 6.524817e-15 \n", + "945 9.836993e-15 \n", + "946 1.065948e-14 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere) \\\n", + "0 4.971751e-14 \n", + "1 3.625857e-14 \n", + "2 7.277248e-13 \n", + "3 4.924900e-13 \n", + "4 3.118323e-13 \n", + ".. ... \n", + "942 6.738817e-13 \n", + "943 1.545165e-12 \n", + "944 1.566875e-12 \n", + "945 6.185484e-12 \n", + "946 6.610749e-12 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen) \\\n", + "0 3.232508e-14 \n", + "1 3.982650e-14 \n", + "2 2.008279e-13 \n", + "3 4.259820e-13 \n", + "4 3.214601e-13 \n", + ".. ... \n", + "942 1.941198e-13 \n", + "943 1.637795e-13 \n", + "944 1.181972e-13 \n", + "945 2.573934e-12 \n", + "946 2.757163e-12 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration) \\\n", + "0 1.156094e-15 \n", + "1 8.425343e-16 \n", + "2 8.913290e-15 \n", + "3 6.920908e-15 \n", + "4 4.997489e-15 \n", + ".. ... \n", + "942 7.519967e-15 \n", + "943 1.837176e-15 \n", + "944 1.901179e-15 \n", + "945 3.205619e-11 \n", + "946 3.366050e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global) \\\n", + "0 1.099348e-16 \n", + "1 1.233763e-16 \n", + "2 5.993186e-16 \n", + "3 8.400603e-16 \n", + "4 8.019743e-16 \n", + ".. ... \n", + "942 3.080851e-17 \n", + "943 -2.863068e-18 \n", + "944 1.994662e-17 \n", + "945 1.585247e-15 \n", + "946 1.752770e-15 \n", + "\n", + " (ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist) \\\n", + "0 0.160737 \n", + "1 0.123240 \n", + "2 2.202389 \n", + "3 1.491608 \n", + "4 0.957087 \n", + ".. ... \n", + "942 2.035933 \n", + "943 5.330478 \n", + "944 5.399748 \n", + "945 137.134320 \n", + "946 144.344430 \n", + "\n", + " einame \n", + "0 [comment, classifications, activity type, acti... \n", + "1 [comment, classifications, activity type, acti... \n", + "2 [comment, classifications, activity type, acti... \n", + "3 [comment, classifications, activity type, acti... \n", + "4 [comment, classifications, activity type, acti... \n", + ".. ... \n", + "942 [comment, classifications, activity type, acti... \n", + "943 [comment, classifications, activity type, acti... \n", + "944 [comment, classifications, activity type, acti... \n", + "945 [comment, classifications, activity type, acti... \n", + "946 [comment, classifications, activity type, acti... \n", + "\n", + "[947 rows x 12 columns]" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_sp_selected['einame'] = df_sp_selected['Activity'].apply(lambda key: get_einame(key))\n", + "df_sp_selected" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "d126ecde-a45d-428e-9b78-05e53a652e3d", + "metadata": {}, + "outputs": [], + "source": [ + "df_sp_selected = df_sp_selected.iloc[[i for i in df_sp_selected.index if df_sp_selected.einame[i] is not None]]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "1b9be9da-a397-4791-929d-4e1ac0a3c7cc", + "metadata": {}, + "outputs": [], + "source": [ + "# type(df_sp_selected.einame[665])" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "cfa9ec02-e439-42e9-9cb3-1d6a30f01858", + "metadata": {}, + "outputs": [], + "source": [ + "# type(activities_bw[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "4c17b9c6-edd9-44d0-8754-aba4ef878a88", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(945, 12)" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_sp_selected.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "9d8ff176-32c2-4457-8404-a615530783b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = 0\n", + "for idx in df_sp_selected.index:\n", + " if not isinstance(df_sp_selected.einame[idx], bw2data.backends.peewee.proxies.Activity):\n", + " print(df_sp_selected.Activity[idx])\n", + " print(idx)\n", + " c += 1\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "a8d60fc6-d6a8-4066-954c-286f08593917", + "metadata": {}, + "outputs": [], + "source": [ + "dct_FUs = [{act: 1} for act in df_sp_selected.einame] # if isinstance(act, bw2data.backends.peewee.proxies.Activity)]\n", + "# dct_FUs = [{act: 1} for act in activities_bw]\n", + "# dct_FUs" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "f0ab112b-1040-452b-955e-a14368f6aee3", + "metadata": {}, + "outputs": [], + "source": [ + "# FU0 = dct_FUs[45]\n", + "# all_scores = {}\n", + "# lca = bw.LCA(FU0, pbs[0])\n", + "# lca.lci()\n", + "# lca.lcia()\n", + "# for category in pbs:\n", + "# lca.switch_method(category)\n", + "# lca.lcia()\n", + "# all_scores[category] = {}\n", + "# all_scores[category][\"score\"] = lca.score\n", + "# all_scores[category][\"unit\"] = bw.Method(category).metadata[\"unit\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "003569be-e265-49f6-8d4c-1f7658c76173", + "metadata": {}, + "outputs": [], + "source": [ + "# FU0" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "4530c17f-eccd-463f-ae4e-10942624d3d9", + "metadata": {}, + "outputs": [], + "source": [ + "pd.options.display.float_format = '{:12.5e}'.format" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "9428db0d-ae48-47f8-8acb-8a357137b709", + "metadata": {}, + "outputs": [], + "source": [ + "# df_temp = pd.DataFrame.from_dict(all_scores).T\n", + "# df_temp" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "a1bb137d-ee42-4b67-a8da-9562bc37d6eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "CalculationSetups dictionary with 0 objects" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw.calculation_setups" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "b050f446-c61f-4580-917b-bd11a88b9d3c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'ozone depletion',\n", + " 'stratospheric O3 concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'directly fixated'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'total'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'direct land use'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'CO2eq emissions'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'land-system change', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'inverse modelling, surface water'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'climate change',\n", + " 'energy imbalance at top-of-atmosphere'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'climate change',\n", + " 'atmospheric CO2 concentration'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'freshwater use', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'ocean acidification',\n", + " 'carbonate ion concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'phosphorus'),\n", + " \"'ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Global warming', 'kg CO2 eq'\"]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pbs + [\"'ReCiPe 2016 Midpoint (H) V1.03 / World (2010) H', 'Global warming', 'kg CO2 eq'\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "1cfbd4b2-34db-4ab2-b181-200d30729e02", + "metadata": {}, + "outputs": [], + "source": [ + "selected_methods = pbs + [\n", + " m for k, v in rev_map_methods.items() for m in recipe2016 if str(k) in str(m)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "6669c8dd-279e-483e-91b4-e839e30cd7c7", + "metadata": {}, + "outputs": [], + "source": [ + "bw.calculation_setups[\"chemicals\"] = {\n", + " \"inv\": dct_FUs,\n", + " \"ia\": selected_methods,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "fbb7ed4e-8878-4e85-8946-53ad8d10e957", + "metadata": {}, + "outputs": [], + "source": [ + "# [act[\"name\"] for FU in myMultiLCA.func_units for act in FU.keys()]" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "81c44231-51cc-469b-ad59-a971a33efcdf", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen, directly fixated)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, direct land use)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, CO2eq emissions)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen, inverse modelling, surface water)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration)(AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus)(ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist)
(market for sulfuric acid, RoW, sulfuric acid)1.15609e-150.00000e+004.59113e-141.25277e-143.33836e-141.09935e-164.67079e-144.97176e-143.68707e-122.02947e-111.12667e-142.04767e-161.60736e-01
(market for sulfuric acid, RER, sulfuric acid)8.42535e-160.00000e+003.62595e-141.06638e-142.55958e-141.23376e-164.97176e-143.62586e-142.68528e-122.59210e-118.20548e-152.16282e-161.23239e-01
(market for sulfamic acid, GLO, sulfamic acid)8.91329e-150.00000e+005.21511e-136.40927e-144.57418e-135.99318e-161.29056e-127.27725e-135.44322e-119.56326e-111.66331e-131.12230e-152.20238e+00
\n", + "
" + ], + "text/plain": [ + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ozone depletion, stratospheric O3 concentration) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 1.15609e-15 \n", + "(market for sulfuric acid, RER, sulfuric acid) 8.42535e-16 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 8.91329e-15 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen, directly fixated) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 0.00000e+00 \n", + "(market for sulfuric acid, RER, sulfuric acid) 0.00000e+00 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 0.00000e+00 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, total) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 4.59113e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 3.62595e-14 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 5.21511e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, direct land use) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 1.25277e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 1.06638e-14 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 6.40927e-14 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, change in biosphere integrity, functional diversity, CO2eq emissions) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 3.33836e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 2.55958e-14 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 4.57418e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, land-system change, global) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 1.09935e-16 \n", + "(market for sulfuric acid, RER, sulfuric acid) 1.23376e-16 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 5.99318e-16 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, nitrogen, inverse modelling, surface water) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 4.67079e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 4.97176e-14 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 1.29056e-12 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, energy imbalance at top-of-atmosphere) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 4.97176e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 3.62586e-14 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 7.27725e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, climate change, atmospheric CO2 concentration) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 3.68707e-12 \n", + "(market for sulfuric acid, RER, sulfuric acid) 2.68528e-12 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 5.44322e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, freshwater use, global) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 2.02947e-11 \n", + "(market for sulfuric acid, RER, sulfuric acid) 2.59210e-11 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 9.56326e-11 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, ocean acidification, carbonate ion concentration) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 1.12667e-14 \n", + "(market for sulfuric acid, RER, sulfuric acid) 8.20548e-15 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 1.66331e-13 \n", + "\n", + " (AESA (PBs-LCIA), 0.8.8+xlsxtoyaml.8.3, biogeochemical flows, phosphorus) \\\n", + "(market for sulfuric acid, RoW, sulfuric acid) 2.04767e-16 \n", + "(market for sulfuric acid, RER, sulfuric acid) 2.16282e-16 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 1.12230e-15 \n", + "\n", + " (ReCiPe 2016, 1.1 (20180117), Midpoint, Global Warming, 100 year timescale, Hierarchist) \n", + "(market for sulfuric acid, RoW, sulfuric acid) 1.60736e-01 \n", + "(market for sulfuric acid, RER, sulfuric acid) 1.23239e-01 \n", + "(market for sulfamic acid, GLO, sulfamic acid) 2.20238e+00 " + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# bw.calculation_setups[\"chemicals\"]\n", + "myMultiLCA = bw.MultiLCA(\"chemicals\")\n", + "# myMultiLCA.results\n", + "\n", + "df_impact = pd.DataFrame(\n", + " data=myMultiLCA.results,\n", + " columns=selected_methods,\n", + " # index=[[act for FU in myMultiLCA.func_units for act in FU.keys()]]\n", + " index=[\n", + " tuple([act[\"name\"], act[\"location\"], act[\"reference product\"]])\n", + " for FU in myMultiLCA.func_units\n", + " for act in FU\n", + " ],\n", + ")\n", + "df_impact.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "00c3b7ba-3ec2-452e-b8fc-1c70701f64a5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(945, 13)" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_impact.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "8b01064b-cd26-4dd7-be88-37ba6b639de6", + "metadata": {}, + "outputs": [], + "source": [ + "# [(act[\"name\"], act[\"location\"]) for FU in myMultiLCA.func_units for act in FU]" + ] + }, + { + "cell_type": "raw", + "id": "882b8b87-735f-42d5-970a-d5a3aec2c527", + "metadata": {}, + "source": [ + "df_impact.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "raw", + "id": "16a3ae3b-b178-4789-a5bd-8178cd21d538", + "metadata": {}, + "source": [ + "df_impact.head(3)" + ] + }, + { + "cell_type": "raw", + "id": "dc2dd458-7801-44f7-9791-b0512536db37", + "metadata": {}, + "source": [ + "df_impact.iloc[10:20,-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "bd4e8ee5-5c99-4aea-8525-6802432e8856", + "metadata": {}, + "outputs": [], + "source": [ + "indices = [tuple([act[\"name\"], act[\"location\"], act[\"reference product\"]]) for act in df_sp_selected.einame]" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "a2d32433-6016-48c9-b54e-10802d4a7e7a", + "metadata": {}, + "outputs": [], + "source": [ + "# df_sp_selected" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "e2c486ee-4053-4553-a38d-fff41495ab52", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_12028\\218076019.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_sp_selected[\"einame_idx\"] = indices\n" + ] + } + ], + "source": [ + "df_sp_selected[\"einame_idx\"] = indices" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "0eed1189-fd36-4b24-bc7f-8f520d59ed03", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_12028\\3607502913.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.drop except for the argument 'labels' will be keyword-only.\n", + " df_sp_selected.drop(\"Activity\", 1, inplace=True)\n", + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_12028\\3607502913.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_sp_selected.drop(\"Activity\", 1, inplace=True)\n", + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_12028\\3607502913.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.drop except for the argument 'labels' will be keyword-only.\n", + " df_sp_selected.drop(\"einame\", 1, inplace=True)\n", + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_12028\\3607502913.py:3: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_sp_selected.drop(\"einame\", 1, inplace=True)\n" + ] + } + ], + "source": [ + "df_sp_selected.set_index(\"einame_idx\", inplace=True)\n", + "df_sp_selected.drop(\"Activity\", 1, inplace=True)\n", + "df_sp_selected.drop(\"einame\", 1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "61cb5838-faf3-4983-a609-b4dcc5009c9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(945, 10)" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_sp_selected.shape" + ] + }, + { + "cell_type": "raw", + "id": "4741c349-fa84-4fd9-89c9-4708791e2ea4", + "metadata": {}, + "source": [ + "df_sp_selected.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "raw", + "id": "b54f398f-1c57-44cf-a964-243494f472e6", + "metadata": {}, + "source": [ + "df_sp_selected.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "4b1d29be-b1f8-438c-8ed6-49de3720bd41", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "b8f4de68-1f1c-4318-bf2b-eacaee2f53d8", + "metadata": {}, + "outputs": [], + "source": [ + "# np.isclose(7.40056E-13*10e13,1.05827e-13*10e13)" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "ff5124a8-04c0-4ce5-9af2-35dec12a7b44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(945, 13)" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_impact.shape" + ] + }, + { + "cell_type": "markdown", + "id": "57d6e415-b48a-468e-be8a-d703294ab66c", + "metadata": {}, + "source": [ + "# one-by-one comparisons" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "f4349035-15f6-4999-8bcd-8f81bf0a9b28", + "metadata": {}, + "outputs": [], + "source": [ + "def reindex_pbs_scores(data: pd.DataFrame) -> pd.DataFrame:\n", + " to_return = data.reindex(\n", + " columns=[\n", + " \"climate change - atmospheric CO2 concentration\",\n", + " \"climate change - energy imbalance at top-of-atmosphere\",\n", + " \"ozone depletion - stratospheric O3 concentration\",\n", + " \"ocean acidification - carbonate ion concentration\",\n", + " \"biogeochemical flows - phosphorus\",\n", + " \"biogeochemical flows - nitrogen\",\n", + " \"land-system change - global\",\n", + " \"freshwater use - global\",\n", + " \"change in biosphere integrity - functional diversity\",\n", + " ],\n", + " level=0,\n", + " ).T\n", + " return to_return" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "193a0689-1396-4aef-a269-771780ada184", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['market for potassium fertiliser, as K2O' (kilogram, GLO, None)]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# axt = [\n", + "# a\n", + "# for a in eidb\n", + "# if \"heat and power co-generation, wood chips, 6667 kW, state\" in a[\"name\"]\n", + "# and \"electricity\" in a[\"reference product\"]\n", + "# and \"ES\" == a[\"location\"]\n", + "# and \"label-certified\" not in a[\"name\"]\n", + "# ] # , 'green manure, Swiss integrated production, until March')\n", + "\n", + "# axt = [a for a in eidb if \"market for sulfuric acid\" in a[\"name\"] and \"RER\" in a[\"location\"]]\n", + "\n", + "# axt = [a for a in eidb if \"market for silicon, multi-Si, casted\" in a[\"name\"] and \"CA-QC\" in a[\"location\"]]\n", + "\n", + "# axt = [a for a in eidb if \"lime to generic market for soil pH raising agent\" in a[\"name\"] and \"GLO\" in a[\"location\"]]\n", + "axt = [a for a in eidb if \"market for potassium fertiliser, as K2O\" in a[\"name\"] and \"GLO\" in a[\"location\"]]\n", + "\n", + "# axt = [\n", + "# a\n", + "# for a in eidb\n", + "# if \"market for green manure, Swiss integrated production, until March\" in a[\"name\"]\n", + "# and \"GLO\" in a[\"location\"]\n", + "# ]\n", + "\n", + "axt" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "f20c9f04-716d-4228-9113-027d14d26ae0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Namemarket for potassium fertiliser, as K2O
LocationGLO
MethodUnit
climate change - atmospheric CO2 concentrationppm3.86726e-11
climate change - energy imbalance at top-of-atmosphereWm-25.83656e-13
ozone depletion - stratospheric O3 concentrationDobson unit2.19451e-13
ocean acidification - carbonate ion concentrationomega aragonite1.18167e-13
biogeochemical flows - phosphorusTg P1.04999e-13
biogeochemical flows - nitrogenTg N1.50788e-11
land-system change - global% forested land1.27769e-14
freshwater use - globalkm31.37133e-10
change in biosphere integrity - functional diversity% BII loss1.15298e-12
\n", + "
" + ], + "text/plain": [ + "Name market for potassium fertiliser, as K2O\n", + "Location GLO\n", + "Method Unit \n", + "climate change - atmospheric CO2 concentration ppm 3.86726e-11\n", + "climate change - energy imbalance at top-of-atm... Wm-2 5.83656e-13\n", + "ozone depletion - stratospheric O3 concentration Dobson unit 2.19451e-13\n", + "ocean acidification - carbonate ion concentration omega aragonite 1.18167e-13\n", + "biogeochemical flows - phosphorus Tg P 1.04999e-13\n", + "biogeochemical flows - nitrogen Tg N 1.50788e-11\n", + "land-system change - global % forested land 1.27769e-14\n", + "freshwater use - global km3 1.37133e-10\n", + "change in biosphere integrity - functional dive... % BII loss 1.15298e-12" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results_df = reindex_pbs_scores(solve_lca(axt, pbs))\n", + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "89cac6ce-920d-4850-9604-38f070f37a61", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
market for potassium fertiliser, as K2O
climate change - atmospheric CO2 concentration3.86726e-11
climate change - energy imbalance at top-of-atmosphere5.83656e-13
ozone depletion - stratospheric O3 concentration2.19451e-13
ocean acidification - carbonate ion concentration1.18167e-13
biogeochemical flows - phosphorus1.04999e-13
biogeochemical flows - nitrogen3.01576e-11
land-system change - global1.27769e-14
freshwater use - global1.37092e-10
change in biosphere integrity - functional diversity1.66499e-12
\n", + "
" + ], + "text/plain": [ + " market for potassium fertiliser, as K2O\n", + "climate change - atmospheric CO2 concentration 3.86726e-11\n", + "climate change - energy imbalance at top-of-atm... 5.83656e-13\n", + "ozone depletion - stratospheric O3 concentration 2.19451e-13\n", + "ocean acidification - carbonate ion concentration 1.18167e-13\n", + "biogeochemical flows - phosphorus 1.04999e-13\n", + "biogeochemical flows - nitrogen 3.01576e-11\n", + "land-system change - global 1.27769e-14\n", + "freshwater use - global 1.37092e-10\n", + "change in biosphere integrity - functional dive... 1.66499e-12" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp_results = {\n", + " \"climate change - atmospheric CO2 concentration\": 3.8672584E-11,\n", + " \"climate change - energy imbalance at top-of-atmosphere\": 5.8365615E-13,\n", + " \"ozone depletion - stratospheric O3 concentration\":2.1945121E-13,\n", + " \"ocean acidification - carbonate ion concentration\": 1.1816742E-13,\n", + " \"biogeochemical flows - phosphorus\": 1.0499918E-13,\n", + " \"biogeochemical flows - nitrogen\": 3.0157583E-11,\n", + " \"land-system change - global\": 1.2776855E-14,\n", + " \"freshwater use - global\": 1.370915E-10,\n", + " \"change in biosphere integrity - functional diversity\": 1.6649877E-12,\n", + "}\n", + "sp_results_df = pd.DataFrame().from_dict(\n", + " sp_results,\n", + " orient=\"index\",\n", + " columns=[results_df.columns[0][0]],\n", + ")\n", + "sp_results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "797a3171-47d8-4cfa-969d-bc4991d6a194", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Namemarket for potassium fertiliser, as K2O
Method
climate change - atmospheric CO2 concentration-0.00%
climate change - energy imbalance at top-of-atmosphere-0.00%
ozone depletion - stratospheric O3 concentration0.00%
ocean acidification - carbonate ion concentration-0.00%
biogeochemical flows - phosphorus0.00%
biogeochemical flows - nitrogen-50.00%
land-system change - global-0.00%
freshwater use - global0.03%
change in biosphere integrity - functional diversity-30.75%
\n", + "
" + ], + "text/plain": [ + "Name market for potassium fertiliser, as K2O\n", + "Method \n", + "climate change - atmospheric CO2 concentration -0.00%\n", + "climate change - energy imbalance at top-of-atm... -0.00%\n", + "ozone depletion - stratospheric O3 concentration 0.00%\n", + "ocean acidification - carbonate ion concentration -0.00%\n", + "biogeochemical flows - phosphorus 0.00%\n", + "biogeochemical flows - nitrogen -50.00%\n", + "land-system change - global -0.00%\n", + "freshwater use - global 0.03%\n", + "change in biosphere integrity - functional dive... -30.75%" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# relative difference of bw vs sp results\n", + "# negative - in bw is less than in sp\n", + "# positive - in bw is more than in sp\n", + "\n", + "bw_res = results_df.droplevel(1, axis=0).droplevel(1, axis=1)\n", + "sp_res = sp_results_df\n", + "rel_diff = (bw_res-sp_res)/sp_res*100\n", + "rel_diff.iloc[:,0] = rel_diff.iloc[:,0].map('{:.2f}%'.format)\n", + "rel_diff" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "210928d3-f7da-458f-aef3-adf68615e78f", + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "\n", + "def top_emissions_by_name(lca, biosphere_database=\"biosphere3\"):\n", + " names = defaultdict(list)\n", + "\n", + " for flow in bw.Database(biosphere_database):\n", + " if flow.key in lca.biosphere_dict:\n", + " names[flow[\"name\"]].append(\n", + " lca.characterized_inventory[lca.biosphere_dict[flow.key], :].sum()\n", + " )\n", + "\n", + " return sorted([(sum(scores), name) for name, scores in names.items()], reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "6e3af664-9855-412e-98ee-598e58600ca8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'ozone depletion',\n", + " 'stratospheric O3 concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'directly fixated'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'total'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'direct land use'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'CO2eq emissions'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'land-system change', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'inverse modelling, surface water'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'climate change',\n", + " 'energy imbalance at top-of-atmosphere'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'climate change',\n", + " 'atmospheric CO2 concentration'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'freshwater use', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'ocean acidification',\n", + " 'carbonate ion concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.3',\n", + " 'biogeochemical flows',\n", + " 'phosphorus')]" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pbs" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "778c39eb-09e9-41de-b0fb-f24bd24a49c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lca = bw.LCA({axt[0]: 1}, pbs[1])\n", + "lca.lci()\n", + "lca.lcia()\n", + "lca.score" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "cd8306be-63fc-42b5-8105-e2467ad2c24e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'market for potassium fertiliser, as K2O' (kilogram, GLO, None): 1}" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lca.demand" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "d3d93e35-2aa6-4e21-a297-e17df9f51850", + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_12028\\434029150.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;33m(\u001b[0m\u001b[1;36m7.010726210309949e-14\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m4.38e-14\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m4.38e-14\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m7.010726210309949e-14\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mlca\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "(7.010726210309949e-14-4.38e-14)/4.38e-14*(7.010726210309949e-14/lca.score)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "e7a09dd8-7e5e-4ff2-82f0-0c745a45dcee", + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_12028\\4085639549.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m5.522868070172049e-16\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mlca\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "5.522868070172049e-16/lca.score" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "b22c2e98-8192-4f58-900b-f4ae7a86f1c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0.0, 'tau-Fluvalinate'),\n", + " (0.0, 't-Butylamine'),\n", + " (0.0, 't-Butyl methyl ether'),\n", + " (0.0, 'o-Xylene'),\n", + " (0.0, 'o-Nitrotoluene'),\n", + " (0.0, 'o-Dichlorobenzene'),\n", + " (0.0, 'm-Xylene'),\n", + " (0.0, '[Deleted]Tri-allate'),\n", + " (0.0, '[Deleted]Carfentrazone ethyl ester'),\n", + " (0.0, 'Zirconium-95'),\n", + " (0.0, 'Zirconium, 50% in zircon, 0.39% in crude ore, in ground'),\n", + " (0.0, 'Zirconium'),\n", + " (0.0, 'Zinc-65'),\n", + " (0.0, 'Zinc, ion'),\n", + " (0.0, 'Zinc, Zn 3.1%, in mixed ore, in ground'),\n", + " (0.0, 'Zinc, Zn 0.63%, in mixed ore, in ground'),\n", + " (0.0, 'Zinc, 9.0% in sulfide, Zn 5.3%, Pb, Ag, Cd, In, in ground'),\n", + " (0.0, 'Zinc'),\n", + " (0.0, 'Zeta-cypermethrin'),\n", + " (0.0, 'Xylene'),\n", + " (0.0, 'Xenon-138'),\n", + " (0.0, 'Xenon-137'),\n", + " (0.0, 'Xenon-135m'),\n", + " (0.0, 'Xenon-135'),\n", + " (0.0, 'Xenon-133m'),\n", + " (0.0, 'Xenon-133'),\n", + " (0.0, 'Xenon-131m'),\n", + " (0.0, 'Xenon, in air'),\n", + " (0.0, 'Wood, unspecified, standing'),\n", + " (0.0, 'Wood, soft, standing'),\n", + " (0.0, 'Wood, hard, standing'),\n", + " (0.0, 'Water, well, in ground'),\n", + " (0.0, 'Water, unspecified natural origin'),\n", + " (0.0, 'Water, turbine use, unspecified natural origin'),\n", + " (0.0, 'Water, salt, sole'),\n", + " (0.0, 'Water, salt, ocean'),\n", + " (0.0, 'Water, river'),\n", + " (0.0, 'Water, lake'),\n", + " (0.0, 'Water, cooling, unspecified natural origin'),\n", + " (0.0, 'Water'),\n", + " (0.0, 'Volume occupied, underground deposit'),\n", + " (0.0, 'Volume occupied, reservoir'),\n", + " (0.0, 'Volume occupied, final repository for radioactive waste'),\n", + " (0.0, 'Volume occupied, final repository for low-active radioactive waste'),\n", + " (0.0, 'Vinclozolin'),\n", + " (0.0, 'Vermiculite, in ground'),\n", + " (0.0, 'Vanadium, ion'),\n", + " (0.0, 'Vanadium'),\n", + " (0.0, 'VOC, volatile organic compounds, unspecified origin'),\n", + " (0.0, 'Urea')]" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "top_emissions_by_name(lca)[:50]" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "ce3f4099-c7d1-4497-a840-4c4bcd128f67", + "metadata": {}, + "outputs": [], + "source": [ + "# contributions in sp can be found in the \"Inventory\" tab\n", + "\n", + "# for Electricity, high voltage {CH}| heat and power co-generation, wood chips, 6667 kW, state-of-the-art 2014 | APOS, U\n", + "# that yields the same score in CBI\n", + "# the main contributor is \"Occupation, forest, extensive\" ~94% of impact\n", + "\n", + "# on the other hand, for 'market for sulfuric acid' (kilogram, RoW, None) the ~65% of impact is \n", + "# of \"Carbon dioxide, fossil\" in sp, BUT NOT IN bw!!!\n", + "# so the problem is the ReCiPe method???\n", + "# in bw \"Carbon dioxide, fossil\" yields 8.2e-15\n", + "# while in sp - 2.78e-14" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "48fbeb56-93c6-4a34-bf9c-13c7a0bd3fd5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n" + ] + }, + { + "data": { + "text/plain": [ + "nan" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = [t[0] for t in top_emissions_by_name(lca)[1:]]\n", + "print(sum(l))\n", + "# np.isclose(sum(l), lca.score)\n", + "1-sum(l)/lca.score" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "ba07a815-301b-4a05-9d00-df1c271e3529", + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_12028\\2605338791.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;33m(\u001b[0m\u001b[1;36m8.281146767077711e-15\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m8.237074606492378e-15\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1.8354772572644123e-15\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1.3654838175278122e-15\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mlca\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "(8.281146767077711e-15+8.237074606492378e-15+1.8354772572644123e-15+1.3654838175278122e-15)/lca.score" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "733a45bf-2616-476e-9cc9-24265b024a84", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2e-14 == 0.2e-13" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "0ef594dc-f45a-4e84-a9db-6e6531c9e7be", + "metadata": {}, + "outputs": [], + "source": [ + "import bw2analyzer as bwa" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "04c2d2e6-c1ea-4df9-ba3c-1a777cd95f73", + "metadata": {}, + "outputs": [], + "source": [ + "# see impact contributors to an activity group by CPC classification\n", + "# if \"relative\" - shows fractional contribution to total\n", + "\n", + "# bwa.compare_activities_by_grouped_leaves(axt, pbs[2], mode=\"relative\", output_format=\"list\", max_level=5)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "1378ccec-46a0-4fe3-ad7d-81b3c4857109", + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0.0,\n", + " 2.062516971172559e-09,\n", + " '[Deleted]Carfentrazone ethyl ester' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.6653032000054992e-06,\n", + " 'Zinc, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 3.8115643913006945e-08,\n", + " 'Trifloxystrobin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.040549903568664e-06,\n", + " 'Trifluralin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.002592851502329e-10,\n", + " 'Trimethylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.243628166227408e-07,\n", + " 'Trinexapac-ethyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.0241856990623803e-07,\n", + " 'Ulexite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.440341198790047e-09,\n", + " 'Uranium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.313463017484098e-05,\n", + " 'Uranium-238' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.6139852712083686e-06,\n", + " 'Vanadium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.1901270169139511e-08,\n", + " 'Vanadium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 1.782075587786733e-05,\n", + " 'Vermiculite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.096277665212731e-09,\n", + " 'Vinclozolin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.021850647356555e-08,\n", + " 'Volume occupied, final repository for low-active radioactive waste' (cubic meter, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.7146444854951785e-08,\n", + " 'Volume occupied, final repository for radioactive waste' (cubic meter, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.006093223893788708,\n", + " 'Volume occupied, reservoir' (cubic meter-year, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 1.8142458239687836e-08,\n", + " 'Volume occupied, underground deposit' (cubic meter, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.08251335795494542,\n", + " 'Water, cooling, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 0.0002449323979564301,\n", + " 'Water, lake' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 0.10938535690717313,\n", + " 'Water, river' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 9.830328227748762e-05,\n", + " 'Water, salt, ocean' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 0.00014444128647290915,\n", + " 'Water, salt, sole' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 3.102648293754481,\n", + " 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 0.0029465495526389443,\n", + " 'Water, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 0.08158250701143237,\n", + " 'Water, well, in ground' (cubic meter, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 5.663909769298943e-05,\n", + " 'Wood, hard, standing' (cubic meter, None, ('natural resource', 'biotic'))),\n", + " (0.0,\n", + " 0.0001234134567042101,\n", + " 'Wood, soft, standing' (cubic meter, None, ('natural resource', 'biotic'))),\n", + " (0.0,\n", + " 4.280221492381301e-10,\n", + " 'Wood, unspecified, standing' (cubic meter, None, ('natural resource', 'biotic'))),\n", + " (0.0,\n", + " 1.6025616440353696e-09,\n", + " 'Xenon, in air' (kilogram, None, ('natural resource', 'in air'))),\n", + " (0.0,\n", + " 1.28821684463912e-06,\n", + " 'Xylene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.725163634180807e-07,\n", + " 'Zinc' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.4649841798291433e-08,\n", + " 'Triclopyr' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.9087328348218483e-11,\n", + " 'Trichlorfon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.275339162947196e-08,\n", + " 'Tribufos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0262302260812965e-05,\n", + " 'Transformation, to river, artificial' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 4.034224521794887e-06,\n", + " 'Transformation, to heterogeneous, agricultural' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 7.483813811638079e-05,\n", + " 'Transformation, to industrial area' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1887389751869522e-07,\n", + " 'Transformation, to inland waterbody, unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.3538116995655476e-05,\n", + " 'Transformation, to lake, artificial' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0001614678917618219,\n", + " 'Transformation, to mineral extraction site' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 7.226690431366621e-06,\n", + " 'Transformation, to pasture, man made' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.4226615893301076e-07,\n", + " 'Transformation, to pasture, man made, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.2929773734532148,\n", + " 'Transformation, to pasture, man made, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.005598367346163388,\n", + " 'Transformation, to permanent crop' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.014861323310612002,\n", + " 'Transformation, to permanent crop, irrigated' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.007564885746786167,\n", + " 'Transformation, to permanent crop, irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 9.310517022960181e-08,\n", + " 'Transformation, to permanent crop, non-irrigated' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.001119474702788546,\n", + " 'Transformation, to permanent crop, non-irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.1392261236628485e-05,\n", + " 'Transformation, to seabed, drilling and mining' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1993738653390165e-08,\n", + " 'Tribenuron-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.814878485046315e-08,\n", + " 'Transformation, to seabed, infrastructure' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1451449791597486e-09,\n", + " 'Transformation, to seabed, unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.3495438786518382e-05,\n", + " 'Transformation, to shrub land, sclerophyllous' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.478629874828339e-06,\n", + " 'Transformation, to traffic area, rail network' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.5332356702334296e-05,\n", + " 'Transformation, to traffic area, rail/road embankment' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.8846121543120198e-05,\n", + " 'Transformation, to traffic area, road network' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.819742615012594e-05,\n", + " 'Transformation, to unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00011330970957232399,\n", + " 'Transformation, to urban, discontinuously built' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.3566942882863363e-07,\n", + " 'Transformation, to urban/industrial fallow (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.9483302599364875e-07,\n", + " 'Transformation, to wetland, inland (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.725867247421212e-09,\n", + " 'Triadimenol' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.455865557364802e-10,\n", + " 'Triasulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.30138915436622e-10,\n", + " 'Tribenuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.002582518583053293,\n", + " 'Zinc, 9.0% in sulfide, Zn 5.3%, Pb, Ag, Cd, In, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.2011934951961257e-05,\n", + " 'Zirconium, 50% in zircon, 0.39% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.7187184231510648e-05,\n", + " 'Transformation, to forest, unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0,\n", + " '1,4-Butanediol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.3734177996658673e-08,\n", + " 'Arsenic' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 2.6243096826367555e-09, 'Arsenic' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.2255367571778351e-07,\n", + " 'Barium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.8965525986259105e-08,\n", + " 'Barium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 1.185561623249452e-06, 'Barium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.3588674243345577e-08,\n", + " 'Barium-140' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 3.36120212661851e-14, 'Benzal chloride' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.041845371748103e-08,\n", + " 'Benzaldehyde' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.308705865832559e-07, 'Benzaldehyde' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.5172503825493697e-05,\n", + " 'Benzene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.2223473609832812e-09,\n", + " 'Benzene' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 2.4397266165863472e-06, 'Benzene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.118297295539274e-06,\n", + " 'Benzene, ethyl-' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.682765617349832e-08, 'Benzene, ethyl-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.9877133643851345e-17,\n", + " 'Benzene, hexachloro-' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.1976323781816378e-10,\n", + " 'Benzene, hexachloro-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.269947793788031e-08,\n", + " 'Benzo(a)pyrene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.1605884829908926e-09, 'Benzo(a)pyrene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.166968113346236e-10,\n", + " 'Beryllium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.703904544179245e-10,\n", + " 'Beryllium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 5.1282019355512655e-11, 'Beryllium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.5438179215950337e-06,\n", + " 'Boron' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.683268019364767e-09,\n", + " 'Boron' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 4.25939154637472e-09, 'Boron' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.910366068303985e-07,\n", + " 'Bromine' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.5874590121432857e-10,\n", + " 'Bromine' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 3.6272324853279704e-09, 'Bromine' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.129243041034779e-10,\n", + " 'Butadiene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.1579792422842422e-09,\n", + " 'Butadiene' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 2.7945388531832466e-07,\n", + " 'Arsenic' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 9.070629049938687e-05,\n", + " 'Argon-41' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.004007841673301e-09,\n", + " 'Antimony-125' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.2212407056082716e-08,\n", + " 'Acrolein' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0,\n", + " '2-Methyl-1-propanol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 9.26768498029568e-09,\n", + " '2-Propanol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 4.807354739016611e-07, '2-Propanol' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.0253904500449479e-10,\n", + " '4-Methyl-2-pentanone' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 9.978847613367375e-12,\n", + " 'Acenaphthene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.543966592683588e-07, 'Acenaphthene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.6401740885500702e-05,\n", + " 'Acetaldehyde' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.0330594503098893e-06, 'Acetaldehyde' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 8.458675954282518e-05,\n", + " 'Acetic acid' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 7.255606000521419e-07, 'Acetic acid' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.522671391418641e-05,\n", + " 'Acetone' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 3.238021912611767e-08, 'Acetone' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 7.2372620082375576e-06,\n", + " 'Acetonitrile' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.9921130996918587e-07, 'Acrolein' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.6945844831737306e-10,\n", + " 'Antimony-124' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.676619737745685e-05,\n", + " 'Actinides, radioactive, unspecified' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.375056850184092e-07,\n", + " 'Aerosols, radioactive, unspecified' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.114158425971138e-08,\n", + " 'Aldehydes, unspecified' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.948146604860415e-09,\n", + " 'Aldehydes, unspecified' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.246288338960019e-07,\n", + " 'Aluminium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.484808053695752e-06,\n", + " 'Aluminium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 4.908469540868324e-05, 'Aluminium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.006100771898067368,\n", + " 'Ammonia' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.91463094048689e-08,\n", + " 'Ammonia' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 2.911041154736002e-05, 'Ammonia' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.387124523288591e-08,\n", + " 'Antimony' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.4020071716228876e-10,\n", + " 'Antimony' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 3.0610554341403395e-06, 'Antimony' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.314347061654326e-06,\n", + " 'Transformation, to grassland, natural (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 9.310517022960181e-08,\n", + " 'Transformation, to forest, secondary (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.7418855578556126e-06,\n", + " 'Butane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 8.025992213829872e-06,\n", + " 'Thorium-232' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.683594492702468e-10,\n", + " 'Sulfosulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.411187182987473e-05,\n", + " 'Sulfur' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.00126737236155554,\n", + " 'Sulfur dioxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2359035299583912e-13,\n", + " 'Sulfur hexafluoride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.3776826553852475e-06,\n", + " 'Sulfur, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.393936458577441e-10,\n", + " 'Sulfuric acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.102652816254543e-11,\n", + " 'Suspended solids, unspecified' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 0.06954830190055561,\n", + " 'Sylvite, 25 % in sylvinite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.3566511936701602e-05,\n", + " 'Talc, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.922135786239335e-08,\n", + " 'Tantalum, 81.9% in tantalite, 1.6E-4% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0, 0.0, 'tau-Fluvalinate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.356071630803725e-08,\n", + " 't-Butyl methyl ether' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.850356062722811e-09,\n", + " 't-Butylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.648413345494207e-07,\n", + " 'TCMTB' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.1187762460508535e-07,\n", + " 'Tebuconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.1651909831358996e-07,\n", + " 'Tebupirimphos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.1569216560441375e-06,\n", + " 'Tebutam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.6337914459611e-09,\n", + " 'Teflubenzuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.7198577590494022e-07,\n", + " 'Tefluthrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5005541166084147e-12,\n", + " 'Tellurium, 0.5ppm in sulfide, Te 0.2ppm, Cu and Ag, in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.710796029164804e-06,\n", + " 'Terbufos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.411265498967836e-10,\n", + " 'Tetramethyl ammonium hydroxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.358848893938048e-09,\n", + " 'Thallium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.95475145707489e-06,\n", + " 'Thiamethoxam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.917667891621704e-09,\n", + " 'Thidiazuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.946965284469954e-10,\n", + " 'Thifensulfuron-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0134060000270626e-08,\n", + " 'Thiobencarb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.83272400394773e-10,\n", + " 'Thiram' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.440915450608913e-09,\n", + " 'Thorium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.696823291500608e-08,\n", + " 'Sulfosate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.4154976372740543e-08,\n", + " 'Sulfentrazone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.6122880253021206e-05,\n", + " 'Sulfate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.016816796435489e-06,\n", + " 'Sodium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.6897141003142904e-08,\n", + " 'Selenium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.9721222338276886e-09,\n", + " 'Sethoxydim' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.05043130939218906,\n", + " 'Shale, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.833904318314021e-05,\n", + " 'Silicon' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.6228452390960116e-09,\n", + " 'Silthiofam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.228582063289221e-10,\n", + " 'Silver' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.0924401896049938e-06,\n", + " 'Silver, 0.007% in sulfide, Ag 0.004%, Pb, Zn, Cd, In, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.0003591560992752e-11,\n", + " 'Silver, 3.2ppm in sulfide, Ag 1.2ppm, Cu and Te, in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.6576653440274274e-10,\n", + " 'Silver, Ag 2.1E-4%, Au 2.1E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.2563254287353115e-08,\n", + " 'Silver, Ag 4.2E-3%, Au 1.1E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.293998432776245e-10,\n", + " 'Silver, Ag 4.6E-5%, Au 1.3E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 7.961425452612495e-10,\n", + " 'Silver, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 2.437125884663244e-06,\n", + " 'Simazine' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.7303783909488532e-08,\n", + " 'Sodium chlorate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.2373328761820693e-06,\n", + " 'Styrene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0032789446996949576,\n", + " 'Sodium chloride, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.151718715841967e-09,\n", + " 'Sodium dichromate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.7348161807329694e-09,\n", + " 'Sodium formate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.5248559962839158e-09,\n", + " 'Sodium hydroxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.7048768021414864e-12,\n", + " 'Sodium nitrate, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.214920523819645e-06,\n", + " 'Sodium sulphate, various forms, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.042621926994213e-05,\n", + " 'Sodium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 0.00019022053327474452,\n", + " 'Solids, inorganic' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 1.779100303685068e-08,\n", + " 'Spinosad' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.279503972073933e-08,\n", + " 'Spiroxamine' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.1204818113086674e-07,\n", + " 'Spodumene, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.6204664507705984e-09,\n", + " 'Stibnite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.346437192537818e-07,\n", + " 'Strontium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2229400925656826e-05,\n", + " 'Thorium-228' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.5591055012554522e-09,\n", + " 'Tin' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0035395526253713602,\n", + " 'Transformation, to forest, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 9.228336098490913e-07,\n", + " 'Tin, 79% in cassiterite, 0.1% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.4226615893301076e-07,\n", + " 'Transformation, from pasture, man made, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.29852086963464247,\n", + " 'Transformation, from pasture, man made, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00035772810388812475,\n", + " 'Transformation, from permanent crop' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.014861323310612002,\n", + " 'Transformation, from permanent crop, irrigated' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.007564885746786167,\n", + " 'Transformation, from permanent crop, irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.001119474702788546,\n", + " 'Transformation, from permanent crop, non-irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1451449791597486e-09,\n", + " 'Transformation, from seabed, infrastructure' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.145041002150524e-05,\n", + " 'Transformation, from seabed, unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.5408446447136765e-05,\n", + " 'Transformation, from shrub land, sclerophyllous' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.946412837097356e-05,\n", + " 'Transformation, from traffic area, rail/road embankment' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 7.902593479276194e-08,\n", + " 'Transformation, from traffic area, road network' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00014883862005428267,\n", + " 'Transformation, from unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.4036247098164855e-08,\n", + " 'Transformation, from unspecified, natural (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.6327936619208648e-06,\n", + " 'Transformation, from wetland, inland (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.3571899568671481,\n", + " 'Transformation, to annual crop' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0021706991393916158,\n", + " 'Transformation, to annual crop, greenhouse' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0015470859245774423,\n", + " 'Transformation, to annual crop, irrigated, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.054838470762297954,\n", + " 'Transformation, to annual crop, irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0004451359640820435,\n", + " 'Transformation, to annual crop, non-irrigated' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.1278532286812286,\n", + " 'Transformation, to annual crop, non-irrigated, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.47805920250560063,\n", + " 'Transformation, to annual crop, non-irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.12471791027838007,\n", + " 'Transformation, to arable land, unspecified use' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.888852813673704e-07,\n", + " 'Transformation, to cropland fallow (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.040008708937225e-05,\n", + " 'Transformation, to dump site' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 9.793925414076701e-06,\n", + " 'Transformation, to dump site, inert material landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.2544390629333498e-05,\n", + " 'Transformation, to dump site, residual material landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.931762407061802e-07,\n", + " 'Transformation, to dump site, sanitary landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 7.64743867973239e-07,\n", + " 'Transformation, to dump site, slag compartment' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.741189936052525e-05,\n", + " 'Transformation, to forest, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0002029508809708767,\n", + " 'Transformation, from pasture, man made' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.9004471827020955e-05,\n", + " 'Transformation, from mineral extraction site' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.5879714953079594e-06,\n", + " 'Transformation, from industrial area' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.12693011585114702,\n", + " 'Transformation, from annual crop, non-irrigated, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.9059041544451436e-09,\n", + " 'Tin, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 8.037397782974969e-05,\n", + " 'TiO2, 54% in ilmenite, 2.6% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.2371887057200496e-05,\n", + " 'TiO2, 95% in rutile, 0.40% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.188910517293909e-07,\n", + " 'Titanium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.527922825560377e-08,\n", + " 'Titanium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 0.008729646610089606,\n", + " 'TOC, Total Organic Carbon' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 3.8072918837809778e-06,\n", + " 'Toluene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.594047852635557e-08,\n", + " 'Toluene, 2-chloro' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.874884012144129e-07,\n", + " 'Tralkoxydim' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.5424348588390714,\n", + " 'Transformation, from annual crop' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0021706991393916158,\n", + " 'Transformation, from annual crop, greenhouse' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.029350671207712387,\n", + " 'Transformation, from annual crop, irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.049897939389994456,\n", + " 'Transformation, from annual crop, non-irrigated' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.26576183875076176,\n", + " 'Transformation, from annual crop, non-irrigated, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.0901126247581537e-09,\n", + " 'Transformation, from heterogeneous, agricultural' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.12046925718406121,\n", + " 'Transformation, from arable land, unspecified use' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1090848520846381e-07,\n", + " 'Transformation, from cropland fallow (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 9.793925414076701e-06,\n", + " 'Transformation, from dump site, inert material landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.2543593263771032e-05,\n", + " 'Transformation, from dump site, residual material landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 3.931762407061802e-07,\n", + " 'Transformation, from dump site, sanitary landfill' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 7.64743867973239e-07,\n", + " 'Transformation, from dump site, slag compartment' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00022407393012879886,\n", + " 'Transformation, from forest, extensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0033619427956058687,\n", + " 'Transformation, from forest, intensive' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0035384617626290017,\n", + " 'Transformation, from forest, primary (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.004524581482007615,\n", + " 'Transformation, from forest, secondary (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00014547665150232327,\n", + " 'Transformation, from forest, unspecified' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0014278173228976783,\n", + " 'Transformation, from grassland, natural (non-use)' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1098680687704806e-06,\n", + " 'Transformation, from grassland, natural, for livestock grazing' (square meter, None, ('natural resource', 'land'))),\n", + " (0.0, 3.112418829227762e-09, 'Butadiene' (kilogram, None, ('air',))),\n", + " (0.0, 2.637545257192655e-08, 'Butane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.775755908082044,\n", + " 'Radon-222' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.3484636044410234e-07, 'Nitrate' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.907696662132669e-09,\n", + " 'Methane, bromotrifluoro-, Halon 1301' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.7061300067906664e-08,\n", + " 'Methane, chlorodifluoro-, HCFC-22' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.869774335482562e-12,\n", + " 'Methane, chlorodifluoro-, HCFC-22' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.142252209954673e-09,\n", + " 'Methane, dichloro-, HCC-30' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 8.13517105318596e-10,\n", + " 'Methane, dichloro-, HCC-30' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.2344226664613785e-12,\n", + " 'Methane, dichlorodifluoro-, CFC-12' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.111936605548223e-15,\n", + " 'Methane, dichlorodifluoro-, CFC-12' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0017130584474194662,\n", + " 'Methane, fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.0634865754476618e-09,\n", + " 'Methane, fossil' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 0.00016424690922863533, 'Methane, fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 9.39938894345197e-09,\n", + " 'Methane, monochloro-, R-40' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.520534996779698e-10,\n", + " 'Methane, monochloro-, R-40' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.2858252879659017e-12,\n", + " 'Methane, tetrachloro-, R-10' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.6925593504489e-08,\n", + " 'Methane, tetrafluoro-, R-14' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 8.287499561862963e-05,\n", + " 'Methanol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 4.0849004990988003e-07, 'Methanol' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.4271659077364577e-09,\n", + " 'Methyl ethyl ketone' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.880109748923132e-09,\n", + " 'Molybdenum' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.806322474811564e-09,\n", + " 'Molybdenum' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 3.062857742588422e-07, 'Molybdenum' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Monoethanolamine' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.890264846103233e-09,\n", + " 'm-Xylene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.653336155675376e-07, 'm-Xylene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.57855869814847e-07,\n", + " 'Nickel' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 8.494681524018127e-09,\n", + " 'Nickel' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 4.2888786313936306e-12,\n", + " 'Nickel' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 2.147432238535085e-08, 'Nickel' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.007703807494910562,\n", + " 'Niobium-95' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.4014248631737804e-08,\n", + " 'Nitrate' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.6332320779882228e-09,\n", + " 'Methane, bromochlorodifluoro-, Halon 1211' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.688685376189661e-15,\n", + " 'Methane, bromo-, Halon 1001' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 9.275414167325638e-07,\n", + " 'Methane, non-fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.2253922426685875e-12,\n", + " 'Lead' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 6.420719207326562e-08,\n", + " 'Iron' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.924770418582158e-06,\n", + " 'Iron' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 6.590861463726399e-06, 'Iron' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.43312176670592e-07,\n", + " 'Isoprene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 5.4548102635649405e-15, 'Isoprene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0002967857789698119,\n", + " 'Krypton-85' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.003142982969888893,\n", + " 'Krypton-85m' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.713003318397464e-05,\n", + " 'Krypton-87' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.00010118718296176066,\n", + " 'Krypton-88' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.247677520236942e-05,\n", + " 'Krypton-89' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.008340267454364e-09,\n", + " 'Lanthanum-140' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.0589458350170212e-06,\n", + " 'Lead' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.5727405237391455e-08,\n", + " 'Lead' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 2.7910580930852863e-07, 'Lead' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.008310534049544465,\n", + " 'Methane, non-fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.00015310755656436153,\n", + " 'Lead-210' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.4976209242071576e-07, 'Lead-210' (kilo Becquerel, None, ('air',))),\n", + " (0.0,\n", + " 1.9013411590833396e-06,\n", + " 'Magnesium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.687121085649253e-07,\n", + " 'Magnesium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 3.941704811305542e-09, 'Magnesium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.6983448450136647e-07,\n", + " 'Manganese' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.0632741317181953e-07,\n", + " 'Manganese' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 1.0377782939030726e-07, 'Manganese' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.8693984727728244e-10,\n", + " 'Manganese-54' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.7653672746049542e-08,\n", + " 'Mercury' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.443302100433703e-10,\n", + " 'Mercury' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 4.288878901264289e-15,\n", + " 'Mercury' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 1.557810432380749e-08, 'Mercury' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 7.363171480386751e-07,\n", + " 'Nitrate' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 0.0023854685205628497,\n", + " 'Nitrogen oxides' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.157017981676184e-05,\n", + " 'Iodine-131' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.084432890289573e-09,\n", + " 'Nitrogen oxides' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 1.1789665120647578e-13,\n", + " 'Platinum' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.160646798382477e-08, 'Platinum' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.7989354622474744e-12,\n", + " 'Plutonium-238' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 6.416203706900721e-12,\n", + " 'Plutonium-alpha' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.00025344923160974624,\n", + " 'Polonium-210' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 4.565505350027531e-07, 'Polonium-210' (kilo Becquerel, None, ('air',))),\n", + " (0.0,\n", + " 5.170197463045799e-11,\n", + " 'Polychlorinated biphenyls' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.79225042814403e-10,\n", + " 'Polychlorinated biphenyls' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.995811449342164e-07,\n", + " 'Potassium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.719456069592259e-07,\n", + " 'Potassium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 8.121416627744715e-08, 'Potassium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.403284574656167e-05,\n", + " 'Potassium-40' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.19673061105691e-08, 'Potassium-40' (kilo Becquerel, None, ('air',))),\n", + " (0.0,\n", + " 1.3985920936153219e-08,\n", + " 'Propanal' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.6012424773839593e-09, 'Propanal' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 9.405185024641762e-06,\n", + " 'Propane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.98408787846201e-08, 'Propane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.848553612930708e-13,\n", + " 'Propanol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.2145287318630743e-05,\n", + " 'Propene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.77122493757748e-09, 'Propene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.901689486533041e-08,\n", + " 'Propionic acid' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 3.01425914947256e-11, 'Propionic acid' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.259672865512589e-06,\n", + " 'Protactinium-234' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.8603800085100502e-08,\n", + " 'Radioactive species, other beta emitters' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.00012420999274575495,\n", + " 'Radium-226' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.446018994866388e-08, 'Radium-226' (kilo Becquerel, None, ('air',))),\n", + " (0.0,\n", + " 1.1234459129697441e-05,\n", + " 'Radium-228' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.5107475182209532e-08, 'Radium-228' (kilo Becquerel, None, ('air',))),\n", + " (0.0,\n", + " 0.0010209974002879094,\n", + " 'Radon-220' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.62136010804018e-11,\n", + " 'Phosphorus trichloride' (kilogram, None, ('air',))),\n", + " (0.0, 6.233539734044784e-10, 'Phosphorus' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 8.268899681303502e-09,\n", + " 'Phosphorus' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 2.328278525691396e-09,\n", + " 'Particulates, < 2.5 um' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 9.069579165388982e-07,\n", + " 'Nitrogen oxides' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 0.0012775374385984098, 'Nitrogen oxides' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0002822201021752664,\n", + " 'NMVOC, non-methane volatile organic compounds, unspecified origin' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.110904195773623e-08,\n", + " 'NMVOC, non-methane volatile organic compounds, unspecified origin' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 0.00022652318336505641,\n", + " 'NMVOC, non-methane volatile organic compounds, unspecified origin' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 196.96093289850617,\n", + " 'Noble gases, radioactive, unspecified' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.7407506804852e-08, 'o-Xylene' (kilogram, None, ('air',))),\n", + " (0.0, 2.248172975328162e-06, 'Ozone' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.2678790362825318e-06,\n", + " 'PAH, polycyclic aromatic hydrocarbons' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.841382452685044e-08,\n", + " 'PAH, polycyclic aromatic hydrocarbons' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Paraffins' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0009248066368591954,\n", + " 'Particulates, < 2.5 um' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.1947066735272123e-05,\n", + " 'Particulates, < 2.5 um' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 8.160693474263246e-05,\n", + " 'Particulates, < 2.5 um' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.311884411136736e-09,\n", + " 'Phosphorus' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0008480082069103631,\n", + " 'Particulates, > 10 um' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.4776640075916205e-05,\n", + " 'Particulates, > 10 um' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 0.00022006452786714714,\n", + " 'Particulates, > 10 um' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0005514653609052577,\n", + " 'Particulates, > 2.5 um, and < 10um' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.2866368335687824e-05,\n", + " 'Particulates, > 2.5 um, and < 10um' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 6.815876212441468e-05,\n", + " 'Particulates, > 2.5 um, and < 10um' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.6793520828342394e-06,\n", + " 'Pentane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.22056003960708e-08, 'Pentane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.788092504002323e-07,\n", + " 'Phenol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.10642794841188e-09, 'Phenol' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.4509635189836057e-12,\n", + " 'Phenol, 2,4-dichloro' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.2977922987598036e-08,\n", + " 'Phenol, pentachloro-' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.5468086711373876e-10,\n", + " 'Phenol, pentachloro-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.447561481442739e-07,\n", + " 'Iodine-133' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.051761875880473e-05,\n", + " 'Iodine-129' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.3863414152146337e-09, 'Butene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.645626797009495e-10,\n", + " 'Ethane, 1,1,1,2-tetrafluoro-, HFC-134a' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.9920801168853036e-08, 'Chromium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 4.1254087061440486e-08,\n", + " 'Chromium VI' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.879224834178314e-09,\n", + " 'Chromium VI' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 2.1903264101963462e-11, 'Chromium VI' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.650379433571709e-10,\n", + " 'Chromium-51' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.8307228804934295e-08,\n", + " 'Cobalt' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.775968474926589e-09,\n", + " 'Cobalt' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 1.039656862813835e-09, 'Cobalt' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.1639391942589956e-09,\n", + " 'Cobalt-58' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.5980234961976318e-08,\n", + " 'Cobalt-60' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.558767725240395e-07,\n", + " 'Copper' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.154058155823582e-08,\n", + " 'Copper' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 1.0416253742536459e-10,\n", + " 'Copper' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 1.6077050113525581e-06, 'Copper' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 9.658742329339341e-11,\n", + " 'Cumene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.545578204233008e-16, 'Cumene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.00013678710899643292,\n", + " 'Cyanide' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.200058308530884e-13, 'Cyanide' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Cyclohexane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Diethylene glycol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.9600857578458235e-10, 'Dimethylamine' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0010106333953896764,\n", + " 'Dinitrogen monoxide' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.491477833345386e-08,\n", + " 'Dinitrogen monoxide' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 1.8380903383150762e-09,\n", + " 'Dinitrogen monoxide' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 8.544483831551588e-06,\n", + " 'Dinitrogen monoxide' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.3648531662842042e-13,\n", + " 'Dioxins, measured as 2,3,7,8-tetrachlorodibenzo-p-dioxin' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.196616442581454e-16,\n", + " 'Dioxins, measured as 2,3,7,8-tetrachlorodibenzo-p-dioxin' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 3.132950722776617e-13,\n", + " 'Dioxins, measured as 2,3,7,8-tetrachlorodibenzo-p-dioxin' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.0338768124059025e-05,\n", + " 'Ethane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.063486540468965e-12,\n", + " 'Chromium' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 4.367188796330841e-12,\n", + " 'Chromium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 1.559221676239012e-06,\n", + " 'Chromium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 6.234068872651799e-15, 'Carbon disulfide' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 8.513123883252693e-08,\n", + " 'Cadmium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.3158260085261778e-09,\n", + " 'Cadmium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 6.127039529091467e-13,\n", + " 'Cadmium' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 2.0675120729981285e-09, 'Cadmium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.7226027301558333e-07,\n", + " 'Calcium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.5260748147958963e-06,\n", + " 'Calcium' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 3.1082539692902347e-07, 'Calcium' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.005707130446235925,\n", + " 'Carbon dioxide, non-fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0020200299014875257,\n", + " 'Carbon dioxide, non-fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.4208267161414442,\n", + " 'Carbon dioxide, fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 0.0001930037002668674,\n", + " 'Carbon dioxide, fossil' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 0.18220863563057443,\n", + " 'Carbon dioxide, fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 8.825502401120432e-06,\n", + " 'Carbon disulfide' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 6.778074020242488e-05,\n", + " 'Carbon monoxide, non-fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.4902394269230216e-13,\n", + " 'Chlorosulfonic acid' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.2762160757080204e-06,\n", + " 'Carbon monoxide, non-fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0005874036933577003,\n", + " 'Carbon monoxide, fossil' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.267021639874688e-07,\n", + " 'Carbon monoxide, fossil' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0,\n", + " 0.0010323828548849895,\n", + " 'Carbon monoxide, fossil' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.024429048790929334,\n", + " 'Carbon-14' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.696612796552196e-09,\n", + " 'Cerium-141' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.7283111977293686e-10,\n", + " 'Cesium-134' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 6.903044874719873e-09,\n", + " 'Cesium-137' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.4245108422365986e-09,\n", + " 'Chlorine' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.5388478103327246e-08,\n", + " 'Chlorine' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 1.6202874068947138e-07, 'Chlorine' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.7382422504034645e-09,\n", + " 'Chloroform' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 2.836501459811235e-15, 'Chloroform' (kilogram, None, ('air',))),\n", + " (0.0, 1.332008472813237e-07, 'Ethane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.8999038669780844e-07,\n", + " 'Ethane, 1,1,1,2-tetrafluoro-, HFC-134a' (kilogram, None, ('air',))),\n", + " (0.0, 5.670422029215398e-10, 'Iodine' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.548959089135485e-10,\n", + " 'Ethane, 1,1,1-trichloro-, HCFC-140' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 0.024888880844001215, 'Heat, waste' (megajoule, None, ('air',))),\n", + " (0.0,\n", + " 2.046942031787341e-07,\n", + " 'Helium' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.6045801521002908e-08, 'Helium' (kilogram, None, ('air',))),\n", + " (0.0, 5.055567466130646e-08, 'Heptane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.2641470959544666e-05,\n", + " 'Hexane' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 3.5079375549273625e-10, 'Hexane' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.0263900422131297e-08,\n", + " 'Hydrocarbons, aliphatic, alkanes, cyclic' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 5.030607781427901e-07,\n", + " 'Hydrocarbons, aliphatic, alkanes, unspecified' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.616931949282451e-06,\n", + " 'Hydrocarbons, aliphatic, alkanes, unspecified' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.8251348837105787e-07,\n", + " 'Hydrocarbons, aliphatic, unsaturated' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.935938744845193e-09,\n", + " 'Hydrocarbons, aliphatic, unsaturated' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.4867903643054867e-07,\n", + " 'Hydrocarbons, aromatic' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.2074096302120774e-06,\n", + " 'Hydrocarbons, aromatic' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.5942024699361784e-09,\n", + " 'Hydrocarbons, chlorinated' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.4629640490423161e-08,\n", + " 'Hydrocarbons, chlorinated' (kilogram, None, ('air',))),\n", + " (0.0, 1.0752369976361386e-07, 'Hydrogen' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.4083378423256785e-05,\n", + " 'Hydrogen chloride' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.2406528544411463e-07,\n", + " 'Hydrogen chloride' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 5.2692511799988656e-11,\n", + " 'Hydrogen chloride' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 5.469194206123635e-06, 'Hydrogen chloride' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.766313979474646e-06,\n", + " 'Hydrogen fluoride' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.2468068938444907e-09,\n", + " 'Hydrogen fluoride' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 6.812011401470814e-07, 'Hydrogen fluoride' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0001878902156045813,\n", + " 'Hydrogen sulfide' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.477380027925737e-08,\n", + " 'Hydrogen sulfide' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 4.424433941266678e-07, 'Hydrogen sulfide' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0631900678758605,\n", + " 'Hydrogen-3, Tritium' (kilo Becquerel, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.055410456656248e-07,\n", + " 'Iodine' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.429443196242906e-15,\n", + " 'Iodine' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 0.1030629110766785,\n", + " 'Heat, waste' (megajoule, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 4.0833152704456155e-16, 'Furan' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.00019299365689304379,\n", + " 'Furan' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 1.922171344046263e-15, 'Ethene, chloro-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.247008112227952e-15,\n", + " 'Ethane, 1,1,1-trichloro-, HCFC-140' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.528302445862012e-10,\n", + " 'Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0,\n", + " 4.001835026076945e-10,\n", + " 'Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.287042725244251e-10,\n", + " 'Ethane, 1,1-difluoro-, HFC-152a' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.079332074555523e-10,\n", + " 'Ethane, 1,2-dichloro-' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 7.069993555134709e-14,\n", + " 'Ethane, 1,2-dichloro-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 6.288593966121307e-09,\n", + " 'Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.001835026076945e-10,\n", + " 'Ethane, 2-chloro-1,1,1,2-tetrafluoro-, HCFC-124' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.7850131314326104e-09,\n", + " 'Ethane, hexafluoro-, HFC-116' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.294326548062115e-06,\n", + " 'Ethanol' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, -6.50185186670234e-11, 'Ethanol' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 7.85565970039268e-05,\n", + " 'Ethene' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 7.855281179574026e-09, 'Ethene' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 7.616625143906706e-10,\n", + " 'Ethene, tetrachloro-' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.4227712656865034e-05,\n", + " 'Formic acid' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 4.156046146168307e-12,\n", + " 'Ethene, tetrachloro-' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Ethylene glycol monoethyl ether' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 3.0248873128593645e-09,\n", + " 'Ethylene oxide' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 1.1194411579119084e-08,\n", + " 'Ethylene oxide' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 2.732389628342416e-08, 'Ethylene oxide' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 1.611314163657703e-06,\n", + " 'Ethyne' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0, 3.730590080231849e-08, 'Ethyne' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 3.130828079135345e-08,\n", + " 'Fluorine' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 2.7206234771230474e-07,\n", + " 'Fluorine' (kilogram, None, ('air', 'low population density, long-term'))),\n", + " (0.0, 2.898620535156804e-10, 'Fluorine' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 5.9763544696108236e-05,\n", + " 'Formaldehyde' (kilogram, None, ('air', 'non-urban air or from high stacks'))),\n", + " (0.0,\n", + " 9.650034775651783e-09,\n", + " 'Formaldehyde' (kilogram, None, ('air', 'lower stratosphere + upper troposphere'))),\n", + " (0.0, 4.2231475523574055e-06, 'Formaldehyde' (kilogram, None, ('air',))),\n", + " (0.0,\n", + " 2.6990063543378607e-09,\n", + " 'Scandium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.2066585806150996e-06,\n", + " 'Sand, unspecified, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.1062944213675407e-10,\n", + " 'Samarium, 0.3% in bastnasite, 0.03% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.6849501478132454e-09,\n", + " 'Ethane, hexafluoro-, HFC-116' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.378093178874822e-06,\n", + " 'Difenoconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.070391714058996e-06,\n", + " 'Diflubenzuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.295727052518951e-07,\n", + " 'Diflufenican' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.12388772623892e-08,\n", + " 'Diflufenzopyr-sodium' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.0588535216022827e-08,\n", + " 'Dimethachlor' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5415670687843038e-06,\n", + " 'Dimethenamid' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.988278427415743e-06,\n", + " 'Dimethoate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.061679675435546e-08,\n", + " 'Dimethomorph' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.0759008777534543e-09,\n", + " 'Dimethyl malonate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.1146869055062027e-11,\n", + " 'Dimethylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0005306252994637264,\n", + " 'Dinitrogen monoxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.617407046415087e-13,\n", + " 'Dioxins, measured as 2,3,7,8-tetrachlorodibenzo-p-dioxin' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.9226363496077785e-09,\n", + " 'Dipropylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.6666558384120712e-07,\n", + " 'Diquat' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.2645957702392983e-05,\n", + " 'Dissolved solids' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 5.779661097705992e-09,\n", + " 'Dithianon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.3623942096119606e-06,\n", + " 'Diuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.008729646610089606,\n", + " 'DOC, Dissolved Organic Carbon' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 0.0007495965331327702,\n", + " 'Dolomite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.1171770778842647e-06,\n", + " 'Endosulfan' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.2270668067637634e-10,\n", + " 'Endothall' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.098882522468567e-08,\n", + " 'Epoxiconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.4462569000699956e-07,\n", + " 'EPTC' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.176968362651019e-09,\n", + " 'Esfenvalerate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.8640376520924235e-09,\n", + " 'Ethalfluralin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.03893316048532e-06,\n", + " 'Ethane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2417385097092004e-09,\n", + " 'Ethane, 1,1,1,2-tetrafluoro-, HFC-134a' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.801761884701061e-11,\n", + " 'Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5251495052369674e-07,\n", + " 'Ethane, 1,1-difluoro-, HFC-152a' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.304458368206498e-13,\n", + " 'Diethylene glycol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2977939581989389e-08,\n", + " 'Diethylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.6690787034878986e-14,\n", + " 'Diethyl ether' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.45286224482933e-09,\n", + " 'Cyanoacetic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.122249690772906e-05,\n", + " 'Copper, 0.52% in sulfide, Cu 0.27% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.1642040727309876e-05,\n", + " 'Copper, 0.59% in sulfide, Cu 0.22% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.155033100429541e-05,\n", + " 'Copper, 0.97% in sulfide, Cu 0.36% and Mo 4.1E-2% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.00011452428497163412,\n", + " 'Copper, 0.99% in sulfide, Cu 0.36% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.0039780341128068e-05,\n", + " 'Copper, 1.13% in sulfide, Cu 0.76% and Ni 0.76% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 7.078023044452911e-05,\n", + " 'Copper, 1.18% in sulfide, Cu 0.39% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 9.625910646588802e-06,\n", + " 'Copper, 1.42% in sulfide, Cu 0.81% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.0003170626932993e-05,\n", + " 'Copper, 2.19% in sulfide, Cu 1.83% and Mo 8.2E-3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.7281525246989366e-07,\n", + " 'Copper, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 2.1258173757295307e-05,\n", + " 'Cu, Cu 3.2E+0%, Pt 2.5E-4%, Pd 7.3E-4%, Rh 2.0E-5%, Ni 2.3E+0% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 7.475026265902764e-06,\n", + " 'Cu, Cu 5.2E-2%, Pt 4.8E-4%, Pd 2.0E-4%, Rh 2.4E-5%, Ni 3.7E-2% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.056844866435126e-07,\n", + " 'Cumene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.946825510431528e-07,\n", + " 'Cyanide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.990281591116606e-11,\n", + " 'Cyclohexane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.985371597526269e-07,\n", + " 'Dicrotophos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.433471451740781e-08,\n", + " 'Cycloxydim' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.276166166630781e-07,\n", + " 'Cymoxanil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.130491599366547e-06,\n", + " 'Cypermethrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.932899586212658e-06,\n", + " 'Cyproconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3535124933486813e-06,\n", + " 'Cyprodinil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.4315263339714185e-09,\n", + " 'Deltamethrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.3406682363977496e-08,\n", + " 'Desmedipham' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5593167770655827e-08,\n", + " 'Diatomite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.101950814133817e-07,\n", + " 'Diazinon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.460461441873528e-07,\n", + " 'Dicamba' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.293685313998022e-07,\n", + " 'Dichlorprop-P' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.199246625002626e-07,\n", + " 'Diclofop' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.2389812556553363e-07,\n", + " 'Diclofop-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.828896281483159e-07,\n", + " 'Ethane, 1,2-dichloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.1614869810887796e-07,\n", + " 'Ethanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.764582797243097e-05,\n", + " 'Colemanite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.3241717858372154e-05,\n", + " 'Ethene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0005762131581712298,\n", + " 'Fluorine, 4.5% in apatite, 3% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.00013187700697860487,\n", + " 'Fluorspar, 92%, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.8275281265715877e-08,\n", + " 'Fluosilicic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.264065761610956e-11,\n", + " 'Flupyrsulfuron-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3135554628426149e-09,\n", + " 'Fluquinconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.778172158565943e-08,\n", + " 'Fluroxypyr' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.111798796380041e-07,\n", + " 'Flurtamone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.9038490286611735e-08,\n", + " 'Flusilazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.593127880293688e-09,\n", + " 'Flutolanil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.595698493642466e-08,\n", + " 'Fomesafen' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.732396599056429e-09,\n", + " 'Foramsulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.1069657603768357e-05,\n", + " 'Formaldehyde' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.280413975664067e-09,\n", + " 'Formamide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.2546843158658472e-09,\n", + " 'Formic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5558112912930926e-10,\n", + " 'Gadolinium, 0.15% in bastnasite, 0.015% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.5861941382381106e-12,\n", + " 'Gallium, 0.014% in bauxite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.001698536773219935,\n", + " 'Gas, mine, off-gas, process, coal mining' (cubic meter, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.08203744752586516,\n", + " 'Gas, natural, in ground' (cubic meter, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.456257047666663e-07,\n", + " 'Glufosinate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.797535991662216e-05,\n", + " 'Glyphosate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.693420024113859e-10,\n", + " 'Gold, Au 1.1E-4%, Ag 4.2E-3%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.2022637776373414e-09,\n", + " 'Gold, Au 1.3E-4%, Ag 4.6E-5%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.5708453362075215e-09,\n", + " 'Gold, Au 1.4E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.6100272582167993e-10,\n", + " 'Gold, Au 2.1E-4%, Ag 2.1E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.969462744074075e-10,\n", + " 'Gold, Au 4.3E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.495671939745954e-09,\n", + " 'Gold, Au 4.9E-5%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.728668607299666e-09,\n", + " 'Gold, Au 6.7E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.7263852656595084e-09,\n", + " 'Gold, Au 7.1E-4%, in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.25875980007981e-11,\n", + " 'Granite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.00028636697078269764,\n", + " 'Fluorine, 4.5% in apatite, 1% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.473932942612242e-08,\n", + " 'Fluorine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.5412234390730276e-09,\n", + " 'Flumioxazin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.7366989718768418e-08,\n", + " 'Feldspar, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.141720708815139e-08,\n", + " 'Ethene, chloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.2998295981829403e-08,\n", + " 'Ethene, tetrachloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2177379247885914e-06,\n", + " 'Ethephon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.100827598355845e-06,\n", + " 'Ethofumesate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.350835378775911e-08,\n", + " 'Ethoprop' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.854320050331275e-07,\n", + " 'Ethyl acetate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.378367863904815e-10,\n", + " 'Ethyl cellulose' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.150513263151243e-08,\n", + " 'Ethylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.059573916652151e-08,\n", + " 'Ethylene diamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Ethylene glycol monoethyl ether' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.342950484817676e-08,\n", + " 'Ethylene oxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.1133222050864098e-06,\n", + " 'Ethyne' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.233900867359086e-11,\n", + " 'Europium, 0.06% in bastnasite, 0.006% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.119731133317333e-09,\n", + " 'Fenbuconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.21849419479788e-08,\n", + " 'Flumetsulam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.209443272282709e-09,\n", + " 'Fenoxaprop' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.6659969177290562e-08,\n", + " 'Fenoxaprop ethyl ester' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.2112904924669714e-08,\n", + " 'Fenoxaprop-P ethyl ester' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.161626770944313e-08,\n", + " 'Fenpiclonil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.279893941900449e-07,\n", + " 'Fenpropidin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.216746791503714e-07,\n", + " 'Fenpropimorph' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.798127656158873e-09,\n", + " 'Fentin hydroxide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.2485723523123632e-06,\n", + " 'Fipronil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.264515065933462e-09,\n", + " 'Florasulam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.7360192323088322e-07,\n", + " 'Fluazifop-P-butyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.0348649939677696e-11,\n", + " 'Flucarbazone sodium salt' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.173299719958021e-08,\n", + " 'Fludioxonil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.1308122882017042e-07,\n", + " 'Flufenacet' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5958868139661285e-07,\n", + " 'Copper' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.023560725494892455,\n", + " 'COD, Chemical Oxygen Demand' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 2.6688221210069724e-08,\n", + " 'Rimsulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.011778701422161699,\n", + " 'BOD5, Biological Oxygen Demand' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 3.6555692905769316e-08,\n", + " 'Anhydrite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.1993919051606074e-08,\n", + " 'Aniline' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5274408414328552e-09,\n", + " 'Anthranilic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.024190251313874e-07,\n", + " 'Anthraquinone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.4859463701200121e-08,\n", + " 'Antimony' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.875751664957872e-08,\n", + " 'Arsenic' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.930865707926487e-07,\n", + " 'Arsenic, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 9.337295996202375e-15,\n", + " 'Arsine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.506622500913339e-08,\n", + " 'Asulam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.760086688914813e-05,\n", + " 'Atrazine' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.5292447580601335e-09,\n", + " 'Azinphos-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.925200191506141e-06,\n", + " 'Azoxystrobin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.0005138516895360158,\n", + " 'Barite, 15% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.345958808962274e-07,\n", + " 'Barium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0001868331357442225,\n", + " 'Basalt, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.880359231967363e-11,\n", + " 'Benomyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.1466552280278582e-10,\n", + " 'Bensulfuron methyl ester' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0773362686389548e-07,\n", + " 'Bentazone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.260896626927927e-12,\n", + " 'Benzal chloride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.3649062953352587e-09,\n", + " 'Benzaldehyde' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.631321689469235e-06,\n", + " 'Benzene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.0229438515122984e-08,\n", + " 'Benzene, dichloro' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.60616139141037e-06,\n", + " 'Benzene, ethyl-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.56198876323154e-12,\n", + " 'Benzene, hexachloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.6562605524329628e-11,\n", + " 'Benzene, pentachloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.197782040356555e-09,\n", + " 'Benzo(a)pyrene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.784821349718341e-09,\n", + " 'Beryllium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.611134519558269e-08,\n", + " 'Bifenox' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.6394805760742604e-08,\n", + " 'Bifenthrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.091039890929031e-07,\n", + " 'Ammonium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 5.559205529046248e-08,\n", + " 'Ammonium carbonate' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0002860064454191903,\n", + " 'Ammonia' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.101545501817197e-06,\n", + " 'Acetaldehyde' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.074290264309095e-09,\n", + " '1-Pentanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.241198291191177e-09,\n", + " '1-Pentene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5163332195298866e-05,\n", + " '2,4-D' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.30631535852172e-09,\n", + " '2-Aminopropanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.04699785026338e-08,\n", + " '2-Methyl pentane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.182293881652761e-09,\n", + " '2-Methyl-1-propanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.310144786375965e-12,\n", + " '2-Methyl-2-butene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.0376930560552416e-09,\n", + " '2-Nitrobenzoic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.819247253831715e-07,\n", + " '2-Propanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0,\n", + " '3-Methyl-1-butanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0,\n", + " '4-Methyl-2-pentanone' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.0684804744789124e-08,\n", + " 'Abamectin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3530888371699521e-06,\n", + " 'Acephate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.6820116732709053e-07,\n", + " 'Acetamide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.779660932869167e-10,\n", + " 'Amidosulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.033248475465798e-06,\n", + " 'Acetic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2732813959293963e-05,\n", + " 'Acetochlor' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.7338579501535304e-07,\n", + " 'Acetone' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.1424161650540824e-11,\n", + " 'Aclonifen' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.2051621918319522e-09,\n", + " 'Acrolein' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.009879495350775e-10,\n", + " 'Acrylic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.630359132705763e-06,\n", + " 'Alachlor' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3887493406690047e-08,\n", + " 'Aldehydes, unspecified' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.749827179629108e-06,\n", + " 'Aldicarb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.169102455535119e-05,\n", + " 'Aldrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.3179746225559612e-05,\n", + " 'Aluminium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.5533878063513053e-07,\n", + " 'Aluminium, 24% in bauxite, 11% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.2616765062783397e-07,\n", + " 'Ametryn' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.0893089081478663e-08,\n", + " 'Bitertanol' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.044622236719482e-05,\n", + " 'Borax, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.929630409008468e-08,\n", + " 'Cobalt' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5790511010486964e-15,\n", + " 'Boric acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.287091330495079e-07,\n", + " 'Chloride' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.714865469776059e-09,\n", + " 'Chlorimuron-ethyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.810030326730394e-06,\n", + " 'Chlorine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.602171051647326e-07,\n", + " 'Chlormequat' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0863181330235741e-07,\n", + " 'Chloroacetic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.5011712797027516e-07,\n", + " 'Chloroform' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.6440394425474508e-10,\n", + " 'Chlorosilane, trimethyl-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.9951060175787874e-09,\n", + " 'Chlorosulfonic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.789785945914279e-06,\n", + " 'Chlorothalonil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.041860103688037e-06,\n", + " 'Chlorpyrifos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.455865557364802e-10,\n", + " 'Chlorsulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.900163545511997e-08,\n", + " 'Choline chloride' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.048649420415953e-08,\n", + " 'Chromium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.0413437726280156e-09,\n", + " 'Chromium VI' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0004510967532107686,\n", + " 'Chromium, 25.5% in chromite, 11.6% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.1683255497107305e-06,\n", + " 'Chromium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 3.619846508215787e-08,\n", + " 'Chrysotile, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 7.005714162820087e-10,\n", + " 'Cinidon-ethyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.953606935804124e-10,\n", + " 'Cinnabar, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.0004789675554865103,\n", + " 'Clay, bentonite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.019981905426674412,\n", + " 'Clay, unspecified, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.082664981969181e-09,\n", + " 'Clethodim' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.553667437286187e-09,\n", + " 'Clodinafop-propargyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5186335773295747e-08,\n", + " 'Clomazone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0921390296685927e-08,\n", + " 'Clopyralid' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.307751379968284e-09,\n", + " 'Cloquintocet-mexyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.037181989906798e-09,\n", + " 'Cloransulam-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.052373406970415474,\n", + " 'Coal, brown, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.2029417561649211,\n", + " 'Coal, hard, unspecified, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.179337048613963e-08,\n", + " 'Chloridazon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.51572590960824e-08,\n", + " 'Chloramine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.4882323842049003e-08,\n", + " 'Cerium, 24% in bastnasite, 2.4% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.08089646720969733,\n", + " 'Calcite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.105770944822449e-06,\n", + " 'Boron' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.0746279115134441e-11,\n", + " 'Boron trifluoride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.204297177747659e-07,\n", + " 'Bromine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.5290248851110795e-07,\n", + " 'Bromoxynil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.683010931711161e-10,\n", + " 'Bromuconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.9932299177200754e-08,\n", + " 'Buprofezin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.1096663813117159e-09,\n", + " 'Butadiene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.530272967274572e-06,\n", + " 'Butane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.0302121965712904e-09,\n", + " 'Butanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.8543820710714684e-07,\n", + " 'Butene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.3482557543687937e-08,\n", + " 'Cadmium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.608064898446684e-05,\n", + " 'Cadmium, 0.30% in sulfide, Cd 0.18%, Pb, Zn, Ag, In, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 9.697401797577517e-09,\n", + " 'Cadmium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 2.063857907840595e-05,\n", + " 'Calcium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.1004317449270434,\n", + " 'Carbon, organic, in soil or biomass stock' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 9.557022264990789e-05,\n", + " 'Calcium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 2.3573010743359e-05,\n", + " 'Captan' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.658257430725816e-09,\n", + " 'Carbaryl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0843750369260626e-06,\n", + " 'Carbendazim' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.1516034256680114e-07,\n", + " 'Carbetamide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.7764358329709942e-08,\n", + " 'Carbofuran' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.264708517043647e-05,\n", + " 'Carbon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.33168361338899066,\n", + " 'Carbon dioxide, fossil' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.6259268382011367,\n", + " 'Carbon dioxide, in air' (kilogram, None, ('natural resource', 'in air'))),\n", + " (0.0,\n", + " 0.2539217698476545,\n", + " 'Carbon dioxide, non-fossil' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.5199968657504204e-08,\n", + " 'Carbon disulfide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.010195952747852387,\n", + " 'Carbon monoxide, fossil' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.010166783774642503,\n", + " 'Carbon monoxide, non-fossil' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.45470464070486205,\n", + " 'Gravel, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.0013849395699934621,\n", + " 'Gypsum, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.100855555392313e-11,\n", + " 'Halosulfuron-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.094085569924751e-09,\n", + " 'Phenol, 2,4-dichloro' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.009391152544319077,\n", + " 'Occupation, traffic area, road network' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 8.747347262784645e-07,\n", + " 'Occupation, unspecified' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00556489890925016,\n", + " 'Occupation, urban, discontinuously built' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.767520842670142e-05,\n", + " 'Occupation, urban/industrial fallow (non-use)' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.12237886589320565,\n", + " 'Oil, crude, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.7070844213247196e-08,\n", + " 'Oils, unspecified' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.6606795086425602e-08,\n", + " 'Olivine, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.7595877927305354e-09,\n", + " 'o-Nitrotoluene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.7534158892609565e-07,\n", + " 'Orbencarb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.3840891898398706e-08,\n", + " 'Oxamyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.12644238365173e-09,\n", + " 'Oxydemeton-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3682060614016532e-06,\n", + " 'Oxyfluorfen' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.543371836252799e-09,\n", + " 'o-Xylene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.629080335317116e-10,\n", + " 'Ozone' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.4799191109172982e-06,\n", + " 'PAH, polycyclic aromatic hydrocarbons' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.628273462129371e-10,\n", + " 'Paraffins' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.165216758385486e-06,\n", + " 'Paraquat' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3864068446439115e-08,\n", + " 'Parathion' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.00016197455909580834,\n", + " 'Particulates, < 2.5 um' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0011017880573939948,\n", + " 'Particulates, > 10 um' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.352950731310833e-05,\n", + " 'Particulates, > 2.5 um, and < 10um' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.080007127344851e-08,\n", + " 'Pd, Pd 2.0E-4%, Pt 4.8E-4%, Rh 2.4E-5%, Ni 3.7E-2%, Cu 5.2E-2% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.84280311052082e-09,\n", + " 'Pd, Pd 7.3E-4%, Pt 2.5E-4%, Rh 2.0E-5%, Ni 2.3E+0%, Cu 3.2E+0% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.004070388821321041,\n", + " 'Peat, in ground' (kilogram, None, ('natural resource', 'biotic'))),\n", + " (0.0,\n", + " 1.7574426715854198e-06,\n", + " 'Pendimethalin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0714620127059105e-05,\n", + " 'Pentane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 9.252477300439621e-05,\n", + " 'Perlite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.4439063253650466e-08,\n", + " 'Permethrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.813304012272992e-07,\n", + " 'Phenmedipham' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.0053882217646244734,\n", + " 'Occupation, traffic area, rail/road embankment' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.001071580119973508,\n", + " 'Occupation, traffic area, rail network' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00011757754006545479,\n", + " 'Occupation, shrub land, sclerophyllous' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.2885678684080218,\n", + " 'Occupation, forest, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00017051611801061908,\n", + " 'NMVOC, non-methane volatile organic compounds, unspecified origin' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.5587792289156127e-07,\n", + " 'Norflurazon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.4410076037327422,\n", + " 'Occupation, annual crop' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0009702412896045513,\n", + " 'Occupation, annual crop, greenhouse' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.009620166048121302,\n", + " 'Occupation, annual crop, irrigated' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.02359235445080524,\n", + " 'Occupation, annual crop, irrigated, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00018236172511222617,\n", + " 'Occupation, annual crop, non-irrigated' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.07045919630452062,\n", + " 'Occupation, annual crop, non-irrigated, extensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.34743864231852917,\n", + " 'Occupation, annual crop, non-irrigated, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 6.360160072095419e-09,\n", + " 'Occupation, arable land, unspecified use' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.002905734665753906,\n", + " 'Occupation, construction site' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0031399335405715733,\n", + " 'Occupation, dump site' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0048322108089755116,\n", + " 'Occupation, forest, extensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 8.734587877167291e-05,\n", + " 'Occupation, grassland, natural (non-use)' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.2502413895878948e-07,\n", + " 'Occupation, seabed, infrastructure' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.008760106909059236,\n", + " 'Occupation, industrial area' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.1887389607481844e-05,\n", + " 'Occupation, inland waterbody, unspecified' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.003506258131573109,\n", + " 'Occupation, lake, artificial' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0009957868925367125,\n", + " 'Occupation, mineral extraction site' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Occupation, pasture, man made' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 1.2113127029990717e-05,\n", + " 'Occupation, pasture, man made, extensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.310337634750651,\n", + " 'Occupation, pasture, man made, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.00041725151482256467,\n", + " 'Occupation, permanent crop' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.3350604629775316,\n", + " 'Occupation, permanent crop, irrigated' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.008466947362069774,\n", + " 'Occupation, permanent crop, irrigated, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.001119474702788546,\n", + " 'Occupation, permanent crop, non-irrigated, intensive' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 0.0010763723485126859,\n", + " 'Occupation, river, artificial' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 2.1392261236628485e-05,\n", + " 'Occupation, seabed, drilling and mining' (square meter-year, None, ('natural resource', 'land'))),\n", + " (0.0,\n", + " 6.588100138212786e-07,\n", + " 'Phenol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.550603233913353e-12,\n", + " 'Phenol, pentachloro-' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.3640641576057521,\n", + " 'Heat, waste' (megajoule, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.057988644332355e-08,\n", + " 'Phorate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.760911876782691e-06,\n", + " 'Propene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.614553040803476e-07,\n", + " 'Propiconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.981938029376202e-08,\n", + " 'Propionic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.6957257411099356e-10,\n", + " 'Propoxycarbazone-sodium (prop)' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.8361541436259656e-09,\n", + " 'Propylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.50424363232638e-08,\n", + " 'Propylene oxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.298685689970476e-09,\n", + " 'Prosulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.812908065891011e-09,\n", + " 'Prothioconazol' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.6600484073151546e-09,\n", + " 'Pt, Pt 2.5E-4%, Pd 7.3E-4%, Rh 2.0E-5%, Ni 2.3E+0%, Cu 3.2E+0% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.8945169161608364e-08,\n", + " 'Pt, Pt 4.8E-4%, Pd 2.0E-4%, Rh 2.4E-5%, Ni 3.7E-2%, Cu 5.2E-2% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.00014502016008496757,\n", + " 'Pumice, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.861624727011555e-09,\n", + " 'Pymetrozine' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.8948080882382144e-06,\n", + " 'Pyraclostrobin (prop)' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Pyrite, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 5.661280679710474e-09,\n", + " 'Pyrithiobac sodium salt' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.908400658593069e-10,\n", + " 'Quinclorac' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0, 0.0, 'Quinmerac' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.3573974045528825e-09,\n", + " 'Quinoxyfen' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.637876739834979e-08,\n", + " 'Quintozene' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.5036877559553405e-10,\n", + " 'Quizalofop ethyl ester' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.731078227985964e-10,\n", + " 'Quizalofop-P' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.025022291203682115,\n", + " 'Radioactive species, other beta emitters' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.7762626505427164e-05,\n", + " 'Radium-226' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.00013877933120225896,\n", + " 'Radium-228' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.6730732017015094e-05,\n", + " 'Radon-220' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.167842757577896e-05,\n", + " 'Radon-222' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.3256501415535402e-10,\n", + " 'Rh, Rh 2.0E-5%, Pt 2.5E-4%, Pd 7.3E-4%, Ni 2.3E+0%, Cu 3.2E+0% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.4505084994112397e-09,\n", + " 'Rh, Rh 2.4E-5%, Pt 4.8E-4%, Pd 2.0E-4%, Ni 3.7E-2%, Cu 5.2E-2% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.5063581521205586e-11,\n", + " 'Rhenium, in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.9430764118853375e-08,\n", + " 'Propargite' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.937743844600393e-07,\n", + " 'Propanol' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.7350388969622724e-08,\n", + " 'Propanil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.0001966563166687055,\n", + " 'Polonium-210' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.66256993579094e-08,\n", + " 'Phosmet' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.00022335894046697925,\n", + " 'Phosphate' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 7.284442970948961e-11,\n", + " 'Phosphine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.590010618976594e-14,\n", + " 'Phosphoric acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.030835588087326e-07,\n", + " 'Phosphorus' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.0692576629433217e-09,\n", + " 'Phosphorus trichloride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.002303547444449631,\n", + " 'Phosphorus, 18% in apatite, 12% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.0011454678831308521,\n", + " 'Phosphorus, 18% in apatite, 4% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.06972998793554e-11,\n", + " 'Picloram' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.982993529870765e-08,\n", + " 'Picoxystrobin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.8318103838177504e-08,\n", + " 'Piperonyl butoxide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.951495338322503e-07,\n", + " 'Pirimicarb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.8188849300095895e-15,\n", + " 'Platinum' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.73374025137584e-10,\n", + " 'Polychlorinated biphenyls' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.106075352217513e-05,\n", + " 'Propane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.9162251601296756e-05,\n", + " 'Potassium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.1940745137454107e-05,\n", + " 'Potassium, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 3.089415949841748e-05,\n", + " 'Potassium-40' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.3530747188918335e-10,\n", + " 'Praseodymium, 0.42% in bastnasite, 0.042% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.577536865156243e-08,\n", + " 'Primisulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.7488643436449066e-08,\n", + " 'Prochloraz' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.2888684585002684e-09,\n", + " 'Procymidone' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.576262960891609e-07,\n", + " 'Profenofos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.8624195748230134e-11,\n", + " 'Prohexadione-calcium' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.460112424146774e-08,\n", + " 'Prometryn' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 9.698961047866119e-14,\n", + " 'Pronamide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.908732795246578e-10,\n", + " 'Propamocarb HCl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.922115659460854e-08,\n", + " 'Propanal' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.027799135319466e-05,\n", + " 'Nitrogen, organic bound' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 0.0008434159370575947,\n", + " 'Nitrogen oxides' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.0902405975151275e-14,\n", + " 'Nitrogen fluoride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.067638723564437e-07,\n", + " 'Nitrobenzene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.3578215098957636e-07,\n", + " 'Isoxaflutole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 0.0002628801617186725,\n", + " 'Kaolinite, 24% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.9139071526918544e-05,\n", + " 'Kieserite, 25% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 3.0834863408185763e-08,\n", + " 'Kresoxim-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.3659929705376826e-08,\n", + " 'Krypton, in air' (kilogram, None, ('natural resource', 'in air'))),\n", + " (0.0,\n", + " 4.639472023367941e-09,\n", + " 'Lactic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.2130809405361347e-10,\n", + " 'Lactofen' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 6.05355343816988e-08,\n", + " 'Lambda-cyhalothrin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.459368941774907e-09,\n", + " 'Lanthanum, 7.2% in bastnasite, 0.72% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.958528691186217e-07,\n", + " 'Lead' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.0014346598236213393,\n", + " 'Lead, 5.0% in sulfide, Pb 3.0%, Zn, Ag, Cd, In, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.00010754436902387087,\n", + " 'Lead-210' (kilo Becquerel, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.9049200223273565e-06,\n", + " 'Linuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 7.074103974765534e-07,\n", + " 'Lithium, 0.15% in brine, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.0005396310472756238,\n", + " 'Magnesite, 60% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.906416077705734e-06,\n", + " 'Magnesium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.4631404896125945e-07,\n", + " 'Malathion' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.6650569100951756e-08,\n", + " 'Maleic hydrazide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.6862121432665144e-05,\n", + " 'Mancozeb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.532283034911121e-10,\n", + " 'Maneb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.5781671544156575e-07,\n", + " 'Manganese' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.00011957345580587167,\n", + " 'Manganese, 35.7% in sedimentary deposit, 14.2% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 2.3028529793042934e-06,\n", + " 'MCPA' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.2116639993857397e-07,\n", + " 'MCPB' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.6857566408289546e-08,\n", + " 'Mecoprop' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.4341606489435645e-08,\n", + " 'Mecoprop-P' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 5.3583537538426624e-08,\n", + " 'Mefenpyr' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.8531045386500995e-08,\n", + " 'Mefenpyr-diethyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.2882244994462112e-07,\n", + " 'Mepiquat chloride' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.6201063579266215e-06,\n", + " 'Isoproturon' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.754953550394832e-08,\n", + " 'Isopropylamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.132088472603268e-06,\n", + " 'Isocyanic acid' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 3.9527041199385994e-05,\n", + " 'Hydrogen sulfide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0, 0.0, 'Helium' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.945238518777541e-06,\n", + " 'Heptane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.1931258888039325e-06,\n", + " 'Hexaconazole' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.7164805832983725e-05,\n", + " 'Hexane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.900564333818478e-07,\n", + " 'Hydrocarbons, aliphatic, alkanes, cyclic' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.663329435805389e-06,\n", + " 'Hydrocarbons, aliphatic, alkanes, unspecified' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 5.394862695440292e-06,\n", + " 'Hydrocarbons, aliphatic, unsaturated' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 7.853225483340378e-07,\n", + " 'Hydrocarbons, aromatic' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.8503106488178558e-07,\n", + " 'Hydrocarbons, chlorinated' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.4283137593889924e-05,\n", + " 'Hydrogen' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 4.6362560823613584e-05,\n", + " 'Hydrogen chloride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.617837640889565e-06,\n", + " 'Hydrogen fluoride' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 6.859352435783633e-10,\n", + " 'Hydrogen peroxide' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.242342465142514e-09,\n", + " 'Imazamox' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.579540813859013e-05,\n", + " 'Iron, ion' (kilogram, None, ('water', 'ground-'))),\n", + " (0.0,\n", + " 1.0309933540312664e-09,\n", + " 'Imazapyr' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.760127026361802e-09,\n", + " 'Imazethapyr' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.0090141495713713e-06,\n", + " 'Imidacloprid' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.4346553958039e-06,\n", + " 'Indium, 0.005% in sulfide, In 0.003%, Pb, Zn, Ag, Cd, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 8.201443383480169e-07,\n", + " 'Indoxacarb' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.145738382872614e-08,\n", + " 'Iodine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.3240300114241373e-05,\n", + " 'Iodine, 0.03% in water' (kilogram, None, ('natural resource', 'in water'))),\n", + " (0.0,\n", + " 8.757036695493435e-11,\n", + " 'Iodosulfuron' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.908769621014292e-11,\n", + " 'Iodosulfuron-methyl-sodium' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.7379914847554786e-07,\n", + " 'Ioxynil' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0967579261358463e-05,\n", + " 'Iprodion' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.011021700363503e-05,\n", + " 'Iron' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 0.023111507293024695,\n", + " 'Iron, 46% in ore, 25% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 6.557053728112504e-09,\n", + " 'Mercury' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.1561937751288656e-10,\n", + " 'Mesosulfuron-methyl (prop)' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.3508192634639783e-07,\n", + " 'Mesotrione' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 8.485607717864949e-07,\n", + " 'Monocrotophos' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.2350561106831998e-10,\n", + " 'Metosulam' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.254694384361782e-07,\n", + " 'Metribuzin' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 3.3687327329758527e-08,\n", + " 'Metsulfuron-methyl' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.828207784227412e-08,\n", + " 'Molinate' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 2.073717281267279e-08,\n", + " 'Molybdenum' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.712031918554863e-07,\n", + " 'Molybdenum, 0.010% in sulfide, Mo 8.2E-3% and Cu 1.83% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.9755795383133498e-07,\n", + " 'Molybdenum, 0.014% in sulfide, Mo 8.2E-3% and Cu 0.81% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.9473529300939083e-06,\n", + " 'Molybdenum, 0.016% in sulfide, Mo 8.2E-3% and Cu 0.27% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.1534860257543653e-06,\n", + " 'Molybdenum, 0.022% in sulfide, Mo 8.2E-3% and Cu 0.22% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.4146041425550969e-06,\n", + " 'Molybdenum, 0.022% in sulfide, Mo 8.2E-3% and Cu 0.36% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.4120026393644378e-06,\n", + " 'Molybdenum, 0.025% in sulfide, Mo 8.2E-3% and Cu 0.39% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.3172568684056395e-06,\n", + " 'Molybdenum, 0.11% in sulfide, Mo 4.1E-2% and Cu 0.36% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 0.0,\n", + " 'Monochloroethane' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 8.335652494791942e-07,\n", + " 'Monoethanolamine' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.489889605944829e-08,\n", + " 'Metiram' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.0129277005404022e-07,\n", + " 'MSMA' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 1.5757613339693868e-07,\n", + " 'm-Xylene' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 2.9649483509686515e-07,\n", + " 'Napropamide' (kilogram, None, ('soil', 'agricultural'))),\n", + " (0.0,\n", + " 4.102652878280447e-09,\n", + " 'Neodymium, 4% in bastnasite, 0.4% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.5346490028413587e-05,\n", + " 'Ni, Ni 2.3E+0%, Pt 2.5E-4%, Pd 7.3E-4%, Rh 2.0E-5%, Cu 3.2E+0% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 1.066003695387289e-05,\n", + " 'Ni, Ni 3.7E-2%, Pt 4.8E-4%, Pd 2.0E-4%, Rh 2.4E-5%, Cu 5.2E-2% in ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " (0.0,\n", + " 4.855799654300097e-07,\n", + " 'Nickel' (kilogram, None, ('air', 'urban air close to ground'))),\n", + " (0.0,\n", + " 1.9521795106268357e-05,\n", + " 'Nickel, 1.13% in sulfide, Ni 0.76% and Cu 0.76% in crude ore, in ground' (kilogram, None, ('natural resource', 'in ground'))),\n", + " ...]" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ca = bwa.ContributionAnalysis()\n", + "# ca.annotated_top_processes(lca, limit=5)\n", + "ca.annotated_top_emissions(lca, limit=0.00001, limit_type='percent')" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "beff8de8-2e96-4e31-ba4f-1b50a0c9490c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-4.934072016025528e-12" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "-4.373743127925108e-11+1.1730336203662644e-11+1.1320238491218266e-11+8.922289063820765e-12+6.830495504523874e-12" + ] + }, + { + "cell_type": "markdown", + "id": "f355f25d-f4c4-4747-bf8a-814d02df7d63", + "metadata": {}, + "source": [ + "# results" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "beca6cb2-8412-4a64-ab2c-0e86f7929be9", + "metadata": {}, + "outputs": [], + "source": [ + "res = (df_impact-df_sp_selected).div(df_sp_selected).mul(100)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "a20e4eb3-2699-4440-a51f-1b3209585420", + "metadata": {}, + "outputs": [], + "source": [ + "# res" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "04b5d12b-8f50-440f-a697-fe113a0c1b2a", + "metadata": {}, + "outputs": [], + "source": [ + "def make_pretty(styler):\n", + " styler.background_gradient(axis=None, vmin=-100, vmax=100, cmap=\"seismic\")\n", + " return styler" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "d14af8d4-2d24-48dd-9f6a-b3f4559b21ba", + "metadata": {}, + "outputs": [], + "source": [ + "# big diffrences in: \n", + "# \"market for green manure\" due to diffenent units, bw -> ha, simapro -> m2\n", + "# lime to generic market for soil pH raising agent: recalculated:OK\n", + "# methyl acetate to generic market for solvent, organic', 'GLO: recalculated: OK" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "a6622c5f-d139-4011-b402-ed8794576ed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'nitrogen')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'nitrogen', 'directly fixated')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'nitrogen', 'inverse modelling, surface water')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'biogeochemical flows', 'phosphorus')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'CO2eq emissions')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'direct land use')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'change in biosphere integrity', 'functional diversity', 'total')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'climate change', 'atmospheric CO2 concentration')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'climate change', 'energy imbalance at top-of-atmosphere')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'freshwater use', 'global')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'land-system change', 'global')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'ocean acidification', 'carbonate ion concentration')('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.3', 'ozone depletion', 'stratospheric O3 concentration')('ReCiPe 2016', '1.1 (20180117)', 'Midpoint', 'Global Warming', '100 year timescale', 'Hierarchist')
('market for sulfuric acid', 'RoW', 'sulfuric acid')nannannan0.000010nannan7.2543920.0000940.0000922574.4439360.0000770.0000920.000038-0.000521
('market for sulfuric acid', 'RER', 'sulfuric acid')nannannan0.000008nannan8.5587410.0000290.0000309572.6952980.0000310.0000320.000040-0.000736
('market for sulfamic acid', 'GLO', 'sulfamic acid')nannannan0.000036nannan3.3438170.0000660.0000651829.348202-0.0000240.0000690.000030-0.000263
('market for phosphoric acid, industrial grade, without water, in 85% solution state', 'GLO', 'phosphoric acid, industrial grade, without water, in 85% solution state')nannannan0.000078nannan2.5335870.0001160.000113674.6981430.0000320.0001140.000017-0.008972
('market for phosphoric acid, fertiliser grade, without water, in 70% solution state', 'GLO', 'phosphoric acid, fertiliser grade, without water, in 70% solution state')nannannan0.000047nannan1.8881400.0000760.000073634.036840-0.0000150.0000760.000048-0.013595
('market for nitric acid, without water, in 50% solution state', 'RoW', 'nitric acid, without water, in 50% solution state')nannannan0.000007nannan0.7814930.0000270.0000362141.1743510.0000210.0000330.000042-0.000021
('market for nitric acid, without water, in 50% solution state', 'RER', 'nitric acid, without water, in 50% solution state')nannannan0.000027nannan0.8785530.0000470.0002242159.431654-0.0000130.0000480.0003350.000199
('market for hydrogen fluoride', 'RoW', 'hydrogen fluoride')nannannan0.000013nannan6.5691450.0001200.0001171234.0350550.0000440.0001260.000066-0.000428
('market for hydrogen fluoride', 'RER', 'hydrogen fluoride')nannannan0.000016nannan7.4390820.0000750.0000762623.715390-0.0000260.0000810.000085-0.000554
('market for hydrochloric acid, without water, in 30% solution state', 'RoW', 'hydrochloric acid, without water, in 30% solution state')nannannan0.000041nannan4.4282070.0000300.000029934.9038280.0003100.0000340.000037-0.000810
('market for hydrochloric acid, without water, in 30% solution state', 'RER', 'hydrochloric acid, without water, in 30% solution state')nannannan0.000013nannan10.5439930.0001210.0001171018.8221470.0003010.0001250.000027-0.002082
('market for fluosilicic acid, without water, in 22% solution state', 'GLO', 'fluosilicic acid, without water, in 22% solution state')nannannan0.000126nannan1.9017990.0000660.000064634.853312-0.0000090.0000690.000052-0.014202
('market for chlorosulfonic acid', 'RoW', 'chlorosulfonic acid')nannannan0.000021nannan6.4114690.0000540.0000531869.8517930.0000980.0000570.000048-0.000700
('market for chlorosulfonic acid', 'RER', 'chlorosulfonic acid')nannannan0.000024nannan11.1306620.0000290.0000252713.9051740.0000550.0000300.000032-0.001519
('market for boric acid, anhydrous, powder', 'GLO', 'boric acid, anhydrous, powder')nannannan0.000048nannan3.8074700.0000540.000055579.1335080.0000070.0000590.000025-0.000364
('market for trifluoroacetic acid', 'RoW', 'trifluoroacetic acid')nannannan0.000040nannan3.7432750.0000390.0000361023.0313920.0000070.0000390.000034-0.000452
('market for trifluoroacetic acid', 'RER', 'trifluoroacetic acid')nannannan0.000061nannan5.8362630.0001740.0001651106.339785-0.0000400.0001740.000041-0.000584
('market for trichloroacetic acid', 'RoW', 'trichloroacetic acid')nannannan0.000008nannan3.3436100.0000750.000070990.3466910.0000730.0000780.000025-0.000410
('market for trichloroacetic acid', 'RER', 'trichloroacetic acid')nannannan0.000057nannan6.0804190.0001510.000148973.4205790.0001070.0001510.000018-0.000659
('market for succinic acid', 'GLO', 'succinic acid')nannannan0.000019nannan2.1153370.0000610.000056202.5837130.0000020.0000630.000025-0.000212
('market for stearic acid', 'GLO', 'stearic acid')nannannan0.000133nannan1.4023810.0000580.0000608.5249390.0000020.0000620.000047-0.001723
('market for salicylic acid', 'GLO', 'salicylic acid')nannannan0.000024nannan2.9731980.0000740.000078716.4080990.0000060.0000790.000021-0.000282
('market for purified terephthalic acid', 'GLO', 'purified terephthalic acid')nannannan0.000021nannan2.6941530.0000940.000092960.0051390.0000580.0000990.000032-0.000105
('market for phenyl isocyanate', 'GLO', 'phenyl isocyanate')nannannan0.000028nannan2.9933430.0001210.000113823.2334970.0000480.0001220.000109-0.000274
('market for phenyl acetic acid', 'GLO', 'phenyl acetic acid')nannannan0.000116nannan3.0448340.0000880.0000851265.2012770.0000430.0000900.000019-0.000194
('market for naphthalene sulfonic acid', 'GLO', 'naphthalene sulfonic acid')nannannan0.000014nannan3.5925390.0000850.000085110.126966-0.0000640.0000880.000033-0.000479
('market for methane sulfonic acid', 'GLO', 'methane sulfonic acid')nannannan0.000035nannan5.7608740.0000780.0000781866.8457690.0000140.000082-0.000021-0.000509
('market for methacrylic acid', 'GLO', 'methacrylic acid')nannannan0.000047nannan2.4362050.0000800.0000751183.7133820.0001440.0000790.000044-0.000162
('market for formic acid', 'RoW', 'formic acid')nannannan0.000034nannan4.2956190.0001200.0001142083.2595580.0000710.0001230.000048-0.000176
('market for formic acid', 'RER', 'formic acid')nannannan0.000042nannan11.9987490.0000760.0000752602.471564-0.0000290.0000810.000039-0.000467
('market for cyanoacetic acid', 'RoW', 'cyanoacetic acid')nannannan0.000179nannan3.1251860.0000950.000093955.011165-0.0000100.0000950.000033-0.000252
('market for cyanoacetic acid', 'RER', 'cyanoacetic acid')nannannan0.000044nannan4.2985540.0000610.000056986.5217940.0000580.0000610.000035-0.000364
('market for citric acid', 'GLO', 'citric acid')nannannan0.000027nannan3.9714130.0000480.000044-4.665911-0.0000100.0000500.000060-0.000626
('market for chloropropionic acid', 'GLO', 'chloropropionic acid')nannannan0.000079nannan3.6221520.0000750.000075821.4139080.0000110.0000780.000040-0.000398
('market for chloroacetic acid', 'RoW', 'chloroacetic acid')nannannan0.000022nannan3.8915010.0000490.000046877.6879240.0000160.0000500.000012-0.000391
('market for chloroacetic acid', 'RER', 'chloroacetic acid')nannannan0.000020nannan6.7854180.0000910.000090891.592573-0.0000730.0000920.000046-0.000600
('market for benzoic acid', 'RoW', 'benzoic acid')nannannan0.000011nannan1.2971060.0001110.000109718.8416500.0000010.0001110.000044-0.000061
('market for benzoic acid', 'RER', 'benzoic acid')nannannan0.000050nannan2.8782070.0001290.000127756.988990-0.0001260.0001310.000054-0.000206
('market for benzaldehyde-2-sulfonic acid', 'GLO', 'benzaldehyde-2-sulfonic acid')nannannan0.000026nannan2.7075400.0000850.000083565.7327740.0000870.0000890.000015-0.000280
('market for ascorbic acid', 'GLO', 'ascorbic acid')nannannan0.000081nannan1.3769340.0001010.00009576.8786330.0000190.0001020.000013-0.001202
('market for anthranilic acid', 'GLO', 'anthranilic acid')nannannan0.000007nannan1.4909040.0001260.0001321739.9463900.0000560.0001270.0001580.000006
('market for adipic acid', 'GLO', 'adipic acid')nannannan0.000016nannan2.0394430.0000570.000023326.100952-0.0000360.000056-0.000000-0.000069
('market for acrylic acid', 'RoW', 'acrylic acid')nannannan0.000003nannan1.1373310.0001100.000108293.8821600.0000210.0001100.000052-0.000013
('market for acrylic acid', 'RER', 'acrylic acid')nannannan0.000016nannan2.0561330.0001400.000138315.324905-0.0003740.0001440.000049-0.000070
('market for acetyl chloride', 'GLO', 'acetyl chloride')nannannan0.000007nannan3.7279760.0000990.0000952005.6917620.0000150.0000990.000044-0.000221
('market for acetoacetic acid', 'GLO', 'acetoacetic acid')nannannan0.000039nannan3.9291730.0001150.000115617.3456280.0000160.0001190.000048-0.000146
('market for acetic acid, without water, in 98% solution state', 'GLO', 'acetic acid, without water, in 98% solution state')nannannan0.000007nannan3.3844890.0000690.000067989.375821-0.0000090.0000700.000020-0.000292
('market for urea, as N', 'GLO', 'urea, as N')nannannan0.000019nannan2.0914710.0000420.0000436362.6067860.0000370.0000440.000056-0.000156
('market for stone meal', 'GLO', 'stone meal')nannannan0.000026nannan17.1273900.0000780.000071183.1070090.0004380.0000790.000080-0.001723
('market for soil pH raising agent, as CaCO3', 'GLO', 'soil pH raising agent, as CaCO3')nannannan0.000068nannan19.7352770.0000290.000027-234.8559000.0002230.0000310.000025-0.000420
('market for potassium sulfate, as K2O', 'GLO', 'potassium sulfate, as K2O')nannannan0.000010nannan8.6992480.0000400.000038445.453838-0.0002850.0000380.000079-0.000553
('market for potassium nitrate', 'GLO', 'potassium nitrate')nannannan-0.000002nannan1.8901220.0000560.000076454.2516620.0000710.0000590.000108-0.000063
('market for potassium fertiliser, as K2O', 'GLO', 'potassium fertiliser, as K2O')nannannan0.000087nannan3.8729000.0000560.00006154.050203-0.0000010.0000590.000123-0.460592
('market for potassium chloride, as K2O', 'GLO', 'potassium chloride, as K2O')nannannan0.000037nannan5.3034260.0000860.000089133.861757-0.0000090.0000910.000050-0.000486
('market for phosphate fertiliser, as P2O5', 'GLO', 'phosphate fertiliser, as P2O5')nannannan0.000094nannan4.6381370.0000700.000068227.413946-0.0000070.0000690.000099-0.072915
('market for nitrogen fertiliser, as N', 'GLO', 'nitrogen fertiliser, as N')nannannan0.000122nannan3.5835000.0000160.000066175.1375250.0000180.0000170.000168-0.074282
('market for calcium nitrate', 'GLO', 'calcium nitrate')nannannan0.000008nannan2.3937350.0000630.0000861370.9045230.0001300.0000680.000130-0.000073
('market for ammonium sulfate, as N', 'GLO', 'ammonium sulfate, as N')nannannan0.000009nannan8.7005450.0000680.00006779.2358010.0002690.0000700.000084-0.000334
('market for ammonium nitrate, as N', 'GLO', 'ammonium nitrate, as N')nannannan0.000023nannan1.4532630.0001220.0001332460.8356740.0000110.0001240.0001570.000026
('market for poultry manure, fresh', 'GLO', 'poultry manure, fresh')nannannan0.000078nannan0.8324030.0000620.0000631.4916590.0000030.0000650.000075-0.003627
('market for poultry manure, dried', 'GLO', 'poultry manure, dried')nannannan0.000097nannan1.3583680.0001070.0001062.6379970.0000030.0001100.000108-0.002452
('market for manure, solid, cattle', 'GLO', 'manure, solid, cattle')nannannan0.000142nannan1.8439150.0000250.000048-6.7764280.0000020.0000320.000224-0.001102
('market for manure, liquid, swine', 'GLO', 'manure, liquid, swine')nannannan0.000072nannan1.4348960.0000600.0000610.9717740.0000110.0000650.000053-0.001276
('market for manure, liquid, cattle', 'GLO', 'manure, liquid, cattle')nannannan0.000045nannan1.8875370.0000360.000046-8.3924960.0000080.0000380.000106-0.001252
('market for horn meal', 'GLO', 'horn meal')nannannan0.000044nannan2.3505720.0000570.00005578.4983360.0000370.0000580.000061-0.000157
('market for green manure, Swiss integrated production, until March', 'GLO', 'green manure, Swiss integrated production, until March')nannannan999900.355692nannan1000502.574372999901.088006999901.0132641187208.372123999899.204761999901.133964999901.049543999897.064688
('market for green manure, Swiss integrated production, until January', 'GLO', 'green manure, Swiss integrated production, until January')nannannan999900.842665nannan1000710.350441999901.088006999901.8268571187208.372123999899.204761999901.133964999902.197282999897.988199
('market for green manure, Swiss integrated production, until February', 'GLO', 'green manure, Swiss integrated production, until February')nannannan999901.409814nannan1000584.919974999901.088006999903.0266901187208.372123999899.789842999901.133964999903.991875999899.420244
('market for green manure, Swiss integrated production, until April', 'GLO', 'green manure, Swiss integrated production, until April')nannannan999900.473340nannan1000433.974077999901.088006999901.0920691187208.372123999899.204761999901.133964999901.100270999897.211114
('market for green manure, organic, until March', 'GLO', 'green manure, organic, until March')nannannan999900.545658nannan1000663.234105999901.098313999901.6815431274750.948884999900.682626999901.103182999902.020543999901.242326
('market for green manure, organic, until January', 'GLO', 'green manure, organic, until January')nannannan999900.176687nannan1000923.368367999901.098313999900.7324671274750.948884999900.682626999901.103182999900.619553999900.090139
('market for green manure, organic, until February', 'RoW', 'green manure, organic, until February')nannannan999901.804914nannan1000766.626128999901.149591999903.7222851274824.322045999898.816446999901.163857999904.926155999903.663544
('market for green manure, organic, until February', 'CH', 'green manure, organic, until February')nannannan999900.556747nannan1000730.219867999901.654030999902.0789481266108.001923999900.831984999901.675482999902.328102999901.604039
('market for green manure, organic, until April', 'GLO', 'green manure, organic, until April')nannannan999900.701797nannan1000576.836767999901.098313999901.6566971274750.963108999900.682626999901.103182999901.929532999901.207507
('market for sulfur dioxide, liquid', 'RoW', 'sulfur dioxide, liquid')nannannan0.000006nannan3.9183320.0001160.000115185.7423550.0000310.0001230.000029-0.000342
('market for sulfur dioxide, liquid', 'RER', 'sulfur dioxide, liquid')nannannan0.000005nannan8.8130290.0000570.000055268.6108100.0000240.0000620.000035-0.000971
('market for ozone, liquid', 'RoW', 'ozone, liquid')nannannan0.000027nannan1.5423690.0001270.000123181.9150870.0000440.0001300.000030-0.000233
('market for ozone, liquid', 'RER', 'ozone, liquid')nannannan0.000006nannan9.9153740.0000720.000068269.6134960.0001440.0000720.000027-0.001395
('market for oxygen, liquid', 'RoW', 'oxygen, liquid')nannannan0.000030nannan1.4155700.0001070.0001031019.6210550.0000080.0001100.000036-0.000242
('market for oxygen, liquid', 'RER', 'oxygen, liquid')nannannan0.000073nannan9.7465450.0001190.0001141008.5048760.0000300.0001220.000022-0.001336
('market for nitrogen, liquid', 'RoW', 'nitrogen, liquid')nannannan0.000059nannan1.4139270.0001260.0001181017.9432710.0000320.0001250.000067-0.000222
('market for nitrogen, liquid', 'RER', 'nitrogen, liquid')nannannan0.000030nannan9.6653100.0000380.0000351006.714611-0.0001780.0000400.000062-0.001396
('market for natural gas liquids', 'GLO', 'natural gas liquids')nannannan-0.000009nannan0.5234480.0000820.000079157.0345570.0000120.0000860.000024-0.000059
('market for hydrogen, liquid', 'RoW', 'hydrogen, liquid')nannannan0.000035nannan0.9260740.0000420.0000442047.5301430.0000190.0000460.000004-0.000072
('market for hydrogen, liquid', 'RER', 'hydrogen, liquid')nannannan0.000032nannan2.0780010.0000910.0000891965.4831260.0002560.0000920.000013-0.000135
('market for fluorine, liquid', 'RoW', 'fluorine, liquid')nannannan0.000055nannan2.2044340.0000350.000036339.2016870.0001170.0000400.000038-0.000338
('market for fluorine, liquid', 'RER', 'fluorine, liquid')nannannan0.000005nannan9.4466380.0001180.000113472.0749250.0000690.0001200.000050-0.001193
('market for chlorine, liquid', 'RoW', 'chlorine, liquid')nannannan0.000006nannan3.0018840.0001370.000131977.2892520.0000510.0001400.000015-0.000379
('market for chlorine, liquid', 'RER', 'chlorine, liquid')nannannan0.000011nannan9.4812580.0001150.000110924.8774930.0000730.0001160.000013-0.001252
('market for carbon dioxide, liquid', 'RoW', 'carbon dioxide, liquid')nannannan0.000037nannan2.9968520.0001050.00010759.6334100.0000170.0001090.000010-0.000119
('market for carbon dioxide, liquid', 'RER', 'carbon dioxide, liquid')nannannan0.000020nannan6.1428800.0000650.000060103.768293-0.0000620.000065-0.000002-0.000387
('market for argon, liquid', 'RoW', 'argon, liquid')nannannan0.000046nannan2.4828950.0001030.0001001008.5573900.0000690.0001070.000010-0.000373
('market for argon, liquid', 'RER', 'argon, liquid')nannannan0.000032nannan9.7486140.0001080.0001031000.836591-0.0001080.0001060.000011-0.001347
('market for argon, crude, liquid', 'GLO', 'argon, crude, liquid')nannannan0.000049nannan2.5062650.0001120.0001091018.3345800.0000590.0001140.000073-0.000361
('market for xenon, gaseous', 'RoW', 'xenon, gaseous')nannannan0.000051nannan1.4197730.0000710.000069213.2645780.0000740.0000740.000029-0.000277
('market for xenon, gaseous', 'RER', 'xenon, gaseous')nannannan0.000055nannan9.7969110.0001770.000171305.516071-0.0000860.0001820.000020-0.001290
('market for sulfur trioxide', 'RoW', 'sulfur trioxide')nannannan0.000011nannan6.3909080.0001260.0001272066.4062930.0000270.0001320.000029-0.000502
('market for sulfur trioxide', 'RER', 'sulfur trioxide')nannannan0.000020nannan11.0529350.0000980.0000903854.8467580.0000280.0001000.000066-0.001146
('market for sulfur hexafluoride, liquid', 'RoW', 'sulfur hexafluoride, liquid')nannannan0.000041nannan0.1547140.0001430.000019337.832168-0.0000050.0001460.000092-0.045850
('market for sulfur hexafluoride, liquid', 'RER', 'sulfur hexafluoride, liquid')nannannan0.000043nannan0.5138270.0001040.000005469.310589-0.0001000.0001070.000027-0.047463
('market for propane', 'GLO', 'propane')nannannan0.000054nannan0.8630160.0000560.000056354.7793080.0000200.0000600.000010-0.000036
('market for nitrous oxide', 'GLO', 'nitrous oxide')nannannan-0.000004nannan2.6980900.0000920.0000891443.6335190.0000680.0000940.000045-0.000287
('market for nitrous dioxide', 'RoW', 'nitrous dioxide')nannannan0.000001nannan2.8741180.0000620.0000591431.4560570.0000030.0000630.000054-0.000324
('market for nitrous dioxide', 'RER', 'nitrous dioxide')nannannan0.000014nannan3.8684590.0001050.0001031428.6545710.0000350.0001080.000015-0.000391
('market for nitric oxide', 'GLO', 'nitric oxide')nannannan0.000032nannan2.1447800.0000930.0000922127.6430590.0000240.0000970.000048-0.000130
('market for krypton, gaseous', 'GLO', 'krypton, gaseous')nannannan0.000038nannan2.6356080.0000640.000062235.349565-0.0000390.0000630.000045-0.000415
('market for hydrogen sulfide', 'RoW', 'hydrogen sulfide')nannannan0.000022nannan2.7969490.0000150.0000181646.2855840.0000260.0000190.000056-0.000251
('market for hydrogen sulfide', 'RER', 'hydrogen sulfide')nannannan0.000021nannan5.0909560.0000980.0000941637.3911970.0000240.0001000.000010-0.000440
('market for hydrogen cyanide', 'RoW', 'hydrogen cyanide')nannannan0.000128nannan0.6403940.0000950.000097767.7322990.0000400.0000980.0000920.000045
('market for hydrogen cyanide', 'RER', 'hydrogen cyanide')nannannan0.000088nannan0.5712400.0001320.000129878.042890-0.0000050.0001330.0000080.000073
('market for helium, crude stockpiling', 'GLO', 'helium, crude stockpiling')nannannan0.000015nannan10.4046150.0000870.000085254.4961110.0001960.0000880.000023-0.000199
('market for helium, crude', 'GLO', 'helium, crude')nannannan-0.000007nannan0.5234580.0001110.000110157.034584-0.0000320.0001140.000019-0.000047
('market for helium', 'GLO', 'helium')nannannan0.000026nannan2.2646370.0000830.000085184.3936910.0000170.0000870.000024-0.000162
('market for ethane', 'GLO', 'ethane')nannannan0.000039nannan2.6042460.0001400.000134161.0723990.0000130.0001410.000037-0.000090
('market for chlorine, gaseous', 'RoW', 'chlorine, gaseous')nannannan-0.000001nannan3.1173070.0000970.0000951026.3638410.0001090.0000990.000029-0.000415
('market for chlorine, gaseous', 'RER', 'chlorine, gaseous')nannannan0.000048nannan9.5629950.0000600.000059962.5245310.0000390.0000610.000028-0.001306
('market for chlorine dioxide', 'RoW', 'chlorine dioxide')nannannan0.000016nannan2.4158770.0001190.0001161006.793471-0.0000540.000123-0.000004-0.000267
('market for chlorine dioxide', 'RER', 'chlorine dioxide')nannannan0.000059nannan9.3199960.0001060.0000991081.067046-0.0000500.0001080.000016-0.001178
('market for carbon monoxide', 'RoW', 'carbon monoxide')nannannan0.000025nannan2.0382320.0000540.000052214.3348840.0000140.0000590.000020-0.000303
('market for carbon monoxide', 'RER', 'carbon monoxide')nannannan0.000009nannan8.7069660.0001160.000109284.7209950.0000180.0001170.000030-0.001086
('market for activated bentonite', 'GLO', 'activated bentonite')nannannan0.000253nannan4.2940660.0000560.00005756.564422-0.0000060.0000620.000001-0.000400
('market for activated silica', 'GLO', 'activated silica')nannannan0.000101nannan8.4491980.0001060.000103839.768058-0.0001790.0001090.000046-0.000322
('market for aluminium chloride', 'GLO', 'aluminium chloride')nannannan0.000003nannan2.2817330.0000730.000068322.9324620.0000060.0000760.000013-0.000530
('market for aluminium fluoride', 'GLO', 'aluminium fluoride')nannannan0.000045nannan4.2793810.0000390.000037928.706955-0.0001240.0000430.000024-0.003607
('market for aluminium hydroxide', 'GLO', 'aluminium hydroxide')nannannan0.000035nannan1.2363890.0000680.00006710511.1698360.0000930.0000710.000023-0.000048
('market for aluminium oxide', 'GLO', 'aluminium oxide')nannannan0.000062nannan3.7819450.0000900.000089553.513273-0.0002730.0000920.000075-0.004708
('market for aluminium sulfate, powder', 'RER', 'aluminium sulfate, powder')nannannan0.000050nannan7.3656280.0000590.0000611236.485896-0.0000570.0000640.000014-0.000775
('market for aluminium sulfate, powder', 'RoW', 'aluminium sulfate, powder')nannannan0.000018nannan3.6684020.0000690.000066857.5296400.0000670.0000710.000016-0.000342
('market for aluminium sulfate, without water, in 4.33% aluminium solution state', 'GLO', 'aluminium sulfate, without water, in 4.33% aluminium solution state')nannannan0.000003nannan4.5670730.0000630.0000642748.316879-0.0000390.0000660.000033-0.000335
('market for ammonia, liquid', 'RER', 'ammonia, liquid')nannannan0.000005nannan1.2783190.0000400.0000396520.3900130.0000310.0000400.000025-0.000102
('market for ammonia, liquid', 'RoW', 'ammonia, liquid')nannannan0.000022nannan1.0094450.0000430.0000426336.9194140.0000150.0000420.000025-0.000053
('market for ammonium bicarbonate', 'RER', 'ammonium bicarbonate')nannannan0.000012nannan5.7239450.0000760.000074609.527253-0.0000060.0000790.000080-0.000458
('market for ammonium bicarbonate', 'RoW', 'ammonium bicarbonate')nannannan0.000017nannan2.9855170.0000750.000076560.510768-0.0000230.0000780.000012-0.000206
('market for ammonium chloride', 'GLO', 'ammonium chloride')nannannan-0.000001nannan3.8832080.0000720.0000691069.318116-0.0000090.0000720.000041-0.000313
('market for anhydrite', 'GLO', 'anhydrite')nannannan0.000062nannan1.7290710.0000550.000056208.222371-0.0000010.0000590.000051-0.000290
('market for anhydrite rock', 'CH', 'anhydrite rock')nannannan0.000042nannan1.5400540.0000310.000036366.6433460.0000010.0000320.000164-0.002098
('market for anhydrite rock', 'RoW', 'anhydrite rock')nannannan0.000046nannan1.5351380.0000350.000037253.3436910.0000030.0000350.000140-0.001635
('market for anhydrite, burned', 'GLO', 'anhydrite, burned')nannannan0.000066nannan2.9247700.0000870.000087102.5417350.0000290.0000910.000055-0.000160
('market for arsine', 'GLO', 'arsine')nannannan0.000019nannan3.7743120.0001120.000107111.6149240.0001630.0001130.000044-0.000513
('market for azodicarbonamide', 'GLO', 'azodicarbonamide')nannannan0.000007nannan3.8692610.0000960.0000931435.6903130.0000120.0001030.000023-0.000400
('market for barite', 'GLO', 'barite')nannannan0.000023nannan4.1776320.0000650.00006529130.7767310.0000160.0000700.000031-0.000325
('market for barium carbonate', 'GLO', 'barium carbonate')nannannan0.000089nannan4.7966140.0000850.000083714.871064-0.0001860.0000890.000034-0.000316
('market for barium hydroxide', 'GLO', 'barium hydroxide')nannannan0.000056nannan4.3132910.0000930.000093428.888420-0.0000150.0000970.000062-0.000311
('market for barium oxide', 'GLO', 'barium oxide')nannannan0.000010nannan4.3584020.0000770.000082557.594543-0.0000170.0000820.000046-0.000306
('market for barium sulfide', 'GLO', 'barium sulfide')nannannan0.000001nannan2.7561940.0000860.0000841132.4090010.0000000.0000880.000088-0.000226
('market for borax, anhydrous, powder', 'GLO', 'borax, anhydrous, powder')nannannan0.000022nannan1.4336470.0001320.00012893.1225990.0000070.0001370.000037-0.000124
('market for boric oxide', 'GLO', 'boric oxide')nannannan0.000024nannan4.0052660.0000980.000096637.992828-0.0000100.0000990.000019-0.000353
('market for boron carbide', 'GLO', 'boron carbide')nannannan0.000008nannan2.5071230.0000770.000076470.440928-0.0000470.0000810.000066-0.000261
('market for boron trifluoride', 'GLO', 'boron trifluoride')nannannan0.000012nannan5.4897760.0000630.0000631012.808313-0.0000350.0000670.000020-0.000437
('market for bromine', 'GLO', 'bromine')nannannan0.000048nannan1.5335400.0000870.000082250.5659000.0000170.0000870.000019-0.000069
('market for cadmium chloride, semiconductor-grade', 'GLO', 'cadmium chloride, semiconductor-grade')nannannan0.000018nannan4.4513010.0000630.000059324.0989000.0000600.0000660.000031-0.000624
('market for cadmium sulfide, semiconductor-grade', 'GLO', 'cadmium sulfide, semiconductor-grade')nannannan0.000016nannan4.7080180.0001360.000131362.1965950.0000540.0001360.000024-0.000571
('market for cadmium telluride, semiconductor-grade', 'GLO', 'cadmium telluride, semiconductor-grade')nannannan0.000151nannan4.1219270.0001460.000140110.934982-0.0001890.0001460.000018-0.002794
('market for calcareous marl', 'GLO', 'calcareous marl')nannannan0.000024nannan2.2027980.0000770.000077-40.9507900.0001080.0000810.000064-0.000873
('market for calcium borates', 'GLO', 'calcium borates')nannannan0.000043nannan1.5676440.0000290.000027158.843727-0.0000150.0000320.000040-0.000238
('market for calcium carbide, technical grade', 'RER', 'calcium carbide, technical grade')nannannan0.000023nannan5.8017710.0000690.000059279.3921400.0001140.0000730.000061-0.000813
('market for calcium carbide, technical grade', 'RoW', 'calcium carbide, technical grade')nannannan0.000008nannan1.7009010.0000940.000094222.4460430.0000190.0000990.000052-0.000279
('market for calcium carbonate, precipitated', 'RER', 'calcium carbonate, precipitated')nannannan0.000011nannan5.8472370.0000400.00003882.1573230.0000180.0000440.000035-0.000377
('market for calcium carbonate, precipitated', 'RoW', 'calcium carbonate, precipitated')nannannan-0.000005nannan3.8580650.0000850.00008448.5934010.0000970.0000850.000003-0.000144
('market for calcium chloride', 'RER', 'calcium chloride')nannannan0.000129nannan22.4240930.0000550.0000562251.0328130.0002420.0000570.000041-0.000572
('market for calcium chloride', 'RoW', 'calcium chloride')nannannan0.000139nannan12.0555870.0000650.0000671757.122049-0.0000060.0000700.000093-0.000482
('market for cerium concentrate, 60% cerium oxide', 'GLO', 'cerium concentrate, 60% cerium oxide')nannannan0.000026nannan4.2042220.0000590.000060591.4841200.0000030.0000650.000074-0.004200
('market for chemicals, inorganic', 'GLO', 'chemical, inorganic')nannannan0.000078nannan3.8842760.0000580.000054467.816087-0.0001300.0000640.000035-0.000583
('market for chromium oxide, flakes', 'GLO', 'chromium oxide, flakes')nannannan0.000058nannan4.9566510.0000970.000097335.3714130.0003290.0001020.000059-0.000173
('market for clinker', 'CH', 'clinker')nannannan0.000067nannan0.2997200.0000540.00005280.7040690.0000630.0000540.000010-0.000020
('market for clinker', 'RoW', 'clinker')nannannan0.000018nannan0.4571750.0001110.000108115.779726-0.0000330.0001120.0000130.000067
('market for cocamide diethanolamine', 'GLO', 'cocamide diethanolamine')nannannan0.000085nannan3.1688490.0000480.0000566.153448-0.0000070.0000520.000210-0.564043
('market for copper carbonate', 'GLO', 'copper carbonate')nannannan0.000089nannan11.1399760.0000550.000057105.1418410.0001360.0000600.000097-0.013848
('market for copper oxide', 'GLO', 'copper oxide')nannannan0.000122nannan11.0644750.0000740.00007442.6927700.0001860.0000760.000054-0.014823
('market for copper sulfate', 'GLO', 'copper sulfate')nannannan0.000193nannan10.2634190.0000720.00007193.9186690.0001450.0000780.000088-0.012637
('market for cryolite', 'GLO', 'cryolite')nannannan0.000021nannan3.8926840.0000670.000064859.6120240.0000080.0000700.000013-0.003523
('market for cyanogen chloride', 'GLO', 'cyanogen chloride')nannannan0.000238nannan2.6720300.0001150.000117935.1806770.0000480.0001210.000034-0.000235
('market for decabromodiphenyl ether', 'GLO', 'decabromodiphenyl ether')nannannan-0.000001nannan2.1160190.0000870.000088396.2941180.0000330.0000900.000088-0.000110
('market for diborane', 'GLO', 'diborane')nannannan0.000051nannan3.3374330.0001170.000114484.5585400.0000570.0001200.000026-0.000341
('market for dicyclopentadiene based unsaturated polyester resin', 'GLO', 'dicyclopentadiene based unsaturated polyester resin')nannannan0.000017nannan1.9136340.0001170.000115384.8130160.0000360.0001200.000012-0.000130
('market for dimethylaminopropylamine', 'GLO', 'dimethylaminopropylamine')nannannan0.000026nannan1.9869260.0000680.000070346.037152-0.0000190.0000680.000044-0.000146
('market for dimethyldichlorosilane', 'GLO', 'dimethyldichlorosilane')nannannan0.000007nannan9.5391910.0001450.000141470.1124050.0001990.0001510.0000010.007098
('market for dinitrogen tetroxide', 'GLO', 'dinitrogen tetroxide')nannannan0.000014nannan2.9253130.0000520.000051655.8849240.0000420.0000570.000032-0.000265
('market for ferrosilicon', 'GLO', 'ferrosilicon')nannannan0.000008nannan3.1455280.0001750.000172-21.8687160.0001340.0001780.000068-0.000468
('market for graphite', 'GLO', 'graphite')nannannan-0.000000nannan3.6208100.0000820.000080177.1100250.0000380.0000850.000034-0.000299
('market for graphite, battery grade', 'GLO', 'graphite, battery grade')nannannan0.000040nannan2.8668490.0000660.00006428.3156850.0000310.0000680.000054-0.000684
('market for hydrazine', 'RER', 'hydrazine')nannannan0.000009nannan5.6780780.0000640.0000621169.895605-0.0000980.0000660.000017-0.000685
('market for hydrazine', 'RoW', 'hydrazine')nannannan0.000021nannan3.5150940.0000780.0000771163.8840890.0000590.0000770.000004-0.000408
('market for hydrazine sulfate', 'GLO', 'hydrazine sulfate')nannannan0.000061nannan4.3533160.0000690.000067943.9287660.0000470.0000720.000012-0.000498
('market for hydrogen peroxide, without water, in 50% solution state', 'RER', 'hydrogen peroxide, without water, in 50% solution state')nannannan0.000028nannan4.9719840.0000670.0000653147.0894710.0000570.0000680.000033-0.000488
('market for hydrogen peroxide, without water, in 50% solution state', 'RoW', 'hydrogen peroxide, without water, in 50% solution state')nannannan0.000070nannan2.2399570.0000970.0000953163.4820690.0000740.0000960.000020-0.000204
('market for hydroxylamine', 'RER', 'hydroxylamine')nannannan-0.000003nannan3.7246520.0001150.0001121044.070026-0.0000050.0001190.000010-0.000332
('market for hydroxylamine', 'RoW', 'hydroxylamine')nannannan0.000023nannan2.9806640.0001020.0000991022.814985-0.0000110.0001080.000040-0.000260
('market for indium rich leaching residues, from zinc production', 'GLO', 'indium rich leaching residues, from zinc production')nannannan0.000029nannan2.9934740.0000690.000067-23.979074-0.0000100.0000710.000002-0.000515
('market for indium rich leaching residues, from zinc production stockpiling', 'GLO', 'indium rich leaching residues, from zinc production stockpiling')nannannan0.000017nannan3.1212360.0000820.000082-18.418738-0.0000470.0000860.000061-0.000482
('market for intral', 'GLO', 'intral')nannannan-0.000003nannan3.1082760.0000500.000047179.2917910.0000310.0000520.000052-0.000363
('market for iodine', 'GLO', 'iodine')nannannan0.000022nannan1.5087720.0000770.000078233.4003830.0000390.0000830.000005-0.000072
('market for iron (III) chloride, without water, in 40% solution state', 'GLO', 'iron (III) chloride, without water, in 40% solution state')nannannan0.000025nannan6.9086520.0001080.000101423.6342650.0000240.0001090.000030-0.000688
('market for iron sulfate', 'RER', 'iron sulfate')nannannan0.000013nannan12.4125050.0000570.000054243.5436960.0002460.0000610.000061-0.001426
('market for iron sulfate', 'RoW', 'iron sulfate')nannannan0.000062nannan6.0591690.0000960.000093183.311564-0.0000230.0000980.000019-0.000542
('market for iron(II) chloride', 'GLO', 'iron(II) chloride')nannannan0.000016nannan7.2060300.0000960.000092194.6825740.0000470.0000970.000047-0.000677
('market for iron(III) chloride, without water, in 14% iron solution state', 'GLO', 'iron(III) chloride, without water, in 14% iron solution state')nannannan0.000000nannan9.1822330.0001010.000098488.733818-0.0000290.0001020.000059-0.000984
('market for iron(III) chloride, without water, in a 12% iron solution state', 'GLO', 'iron(III) chloride, without water, in a 12% iron solution state')nannannan0.000022nannan9.1819310.0001020.000097462.5417190.0002610.0001010.000027-0.000973
('market for iron(III) sulfate, without water, in 12.5% iron solution state', 'GLO', 'iron(III) sulfate, without water, in 12.5% iron solution state')nannannan0.000028nannan8.3183440.0000720.0000662130.4524760.0000830.0000730.000033-0.000798
('market for kaolin', 'GLO', 'kaolin')nannannan0.000030nannan4.8040060.0000800.000077652.458388-0.0001050.0000840.000018-0.000352
('market for lanthanum oxide', 'GLO', 'lanthanum oxide')nannannan0.000026nannan4.2263700.0001190.000116592.2804580.0000400.0001170.000057-0.004175
('market for lime, hydrated, loose weight', 'CH', 'lime, hydrated, loose weight')nannannan0.000024nannan0.092882-0.0000000.000002-2.1850980.0000090.0000040.000031-0.000028
('market for lime, hydrated, loose weight', 'RoW', 'lime, hydrated, loose weight')nannannan0.000073nannan0.1833670.0000300.000029-6.3797600.0000120.0000320.000038-0.000005
('market for lime, hydrated, packed', 'RER', 'lime, hydrated, packed')nannannan0.000036nannan4.121705-0.000003-0.00000617.903228-0.000041-0.0000030.000023-0.000067
('market for lime, hydrated, packed', 'RoW', 'lime, hydrated, packed')nannannan-0.000001nannan4.5043740.0000250.00002515.5259040.0000770.0000290.000092-0.000046
('market for lime, hydraulic', 'RER', 'lime, hydraulic')nannannan0.000006nannan1.0828680.0000840.000083195.4018450.0000180.0000870.000015-0.000004
('market for lime, hydraulic', 'RoW', 'lime, hydraulic')nannannan0.000049nannan0.6178090.0001050.000105145.5336420.0000200.0001090.0000320.000054
('market for lithium carbonate', 'GLO', 'lithium carbonate')nannannan0.000129nannan7.4749070.0000980.0000971030.771820-0.0004330.0001000.000068-0.000347
('market for lithium chloride', 'GLO', 'lithium chloride')nannannan0.000040nannan5.9619710.0000600.000058989.0644560.0064200.0000620.000028-0.000468
('market for lithium fluoride', 'GLO', 'lithium fluoride')nannannan0.000078nannan6.5157230.0000700.000063892.066037-0.0002860.0000700.000023-0.000360
('market for lithium hexafluorophosphate', 'GLO', 'lithium hexafluorophosphate')nannannan0.000068nannan5.6795180.0000610.000061582.5821400.0000580.0000660.000034-0.002029
('market for lithium hydroxide', 'GLO', 'lithium hydroxide')nannannan0.000115nannan5.6386020.0000750.000073517.5886580.0011360.0000780.000034-0.000280
('market for lithium manganese oxide', 'GLO', 'lithium manganese oxide')nannannan0.000023nannan4.4529450.0001570.000153481.8773430.0000280.0001610.000020-0.000392
('market for magnesium oxide', 'GLO', 'magnesium oxide')nannannan-0.000012nannan0.7813380.0001330.000132277.841961-0.0000010.0001360.0000840.000025
('market for magnesium sulfate', 'GLO', 'magnesium sulfate')nannannan0.000052nannan3.1946820.0000430.000040208.5423030.0000160.0000450.000046-0.000485
('market for malusil', 'GLO', 'malusil')nannannan0.000039nannan5.5810490.0001080.000105136.0188020.0000820.0001090.000055-0.000424
('market for manganese dioxide', 'GLO', 'manganese dioxide')nannannan0.000034nannan5.3462190.0000460.000046606.9653020.0002580.0000490.000047-0.000674
('market for manganese sulfate', 'GLO', 'manganese sulfate')nannannan0.000026nannan4.2947370.0001070.000104110.354925-0.0000360.0001100.000039-0.000461
('market for manganese(III) oxide', 'GLO', 'manganese(III) oxide')nannannan0.000008nannan5.4077160.0000720.000069584.764717-0.0001200.0000760.000083-0.000690
('market for molybdenum trioxide', 'GLO', 'molybdenum trioxide')nannannan0.000023nannan5.0292460.0000440.000045-41.8813690.0000140.0000470.000096-0.003361
('market for neodymium oxide', 'GLO', 'neodymium oxide')nannannan0.000023nannan4.2306670.0000600.000058592.436677-0.0000140.0000640.000060-0.004237
('soda ash, dense, to generic market for neutralising agent', 'GLO', 'neutralising agent, sodium hydroxide-equivalent')nannannan-15.177927nannan14.1835987.6072266.261954955.025705110.7158867.606986-46.62557412.641369
('market for nickel sulfate', 'GLO', 'nickel sulfate')nannannan-0.000037nannan4.8664340.0000490.000049-15.6258720.0002690.0000530.000038-0.000654
('market for perfluoropentane', 'GLO', 'perfluoropentane')nannannan0.000032nannan1.2285660.0001190.000087959.9510260.0000050.0001220.000004-0.022865
('market for phosphane', 'GLO', 'phosphane')nannannan0.000038nannan3.4927110.0001060.00010362.5910270.0000220.0001060.000016-0.008095
('market for phosphate rock, as P2O5, beneficiated, dry', 'GLO', 'phosphate rock, as P2O5, beneficiated, dry')nannannan0.000007nannan5.3016250.0001070.000102-31.6666000.0000150.0001070.000042-0.023053
('market for phosphate rock, as P2O5, beneficiated, wet', 'GLO', 'phosphate rock, as P2O5, beneficiated, wet')nannannan0.000142nannan1.3317830.0000640.000061-44.4277330.0000010.0000660.000060-0.056034
('market for phosphorous chloride', 'RER', 'phosphorous chloride')nannannan0.000054nannan4.9867590.0000790.000078131.8369470.0000330.0000830.000060-0.007087
('market for phosphorous chloride', 'RoW', 'phosphorous chloride')nannannan0.000082nannan3.5063300.0000600.000057124.497824-0.0000760.0000620.000028-0.006134
('market for phosphorus oxychloride', 'GLO', 'phosphorus oxychloride')nannannan0.000055nannan5.2893890.0000960.000094215.0411540.0000650.0000980.000020-0.004802
('market for phosphorus pentachloride', 'GLO', 'phosphorus pentachloride')nannannan0.000098nannan5.5743430.0000730.000071176.752603-0.0000230.0000770.000062-0.006272
('market for phosphorus trichloride', 'GLO', 'phosphorus trichloride')nannannan0.000141nannan3.6365610.0000440.000042109.2489160.0001060.0000450.000014-0.006306
('market for phosphorus, white, liquid', 'GLO', 'phosphorus, white, liquid')nannannan0.000085nannan3.4373660.0000610.00005742.472907-0.0000020.0000620.000021-0.008718
('market for phosphoryl chloride', 'RER', 'phosphoryl chloride')nannannan0.000196nannan5.6000390.0000850.000085138.4763870.0000840.0000870.000072-0.006555
('market for phosphoryl chloride', 'RoW', 'phosphoryl chloride')nannannan0.000037nannan3.5563290.0001570.000149127.5697060.0000500.0001570.000019-0.005288
('market for polyaluminium chloride', 'GLO', 'polyaluminium chloride')nannannan0.000050nannan3.2920050.0000930.000091392.2678700.0001430.0000970.000067-0.000384
('market for portachrom', 'GLO', 'portachrom')nannannan-0.000026nannan3.9716950.0000800.000079-60.3092100.0000350.0000820.000051-0.000918
('market for portafer', 'GLO', 'portafer')nannannan0.000015nannan2.5116930.0001450.000142201.0316150.0000340.0001470.000060-0.000199
('market for potassium carbonate', 'GLO', 'potassium carbonate')nannannan-0.000002nannan4.5967270.0000990.00009598.168046-0.0003240.0001020.000019-0.000362
('market for potassium hydroxide', 'GLO', 'potassium hydroxide')nannannan0.000018nannan4.8325170.0001120.000108113.217120-0.0002930.0001130.000025-0.000361
('market for potassium perchlorate', 'GLO', 'potassium perchlorate')nannannan0.000020nannan2.9089080.0000940.000090676.725357-0.0000080.000097-0.000002-0.000376
('market for potassium permanganate', 'GLO', 'potassium permanganate')nannannan0.000029nannan4.5616820.0001140.000110106.948962-0.0000100.0001170.000001-0.000408
('market for praseodymium oxide', 'GLO', 'praseodymium oxide')nannannan0.000039nannan4.2302510.0000680.000067592.4214840.0000220.0000680.000052-0.004226
('market for quicklime, in pieces, loose', 'CH', 'quicklime, in pieces, loose')nannannan0.000010nannan0.081694-0.000001-0.000001116.477095-0.0000040.0000030.000016-0.000025
('market for quicklime, in pieces, loose', 'RoW', 'quicklime, in pieces, loose')nannannan0.000031nannan0.1481400.0000910.00008983.0954050.0000050.0000930.0000430.000065
('market for quicklime, milled, loose', 'CH', 'quicklime, milled, loose')nannannan0.000044nannan0.0941430.0000100.000009131.2617460.0000200.0000120.000013-0.000025
('market for quicklime, milled, loose', 'RoW', 'quicklime, milled, loose')nannannan0.000006nannan0.1703610.0000820.00008188.8912790.0000210.0000830.0000240.000047
('market for quicklime, milled, packed', 'RER', 'quicklime, milled, packed')nannannan0.000108nannan3.2571750.0000090.000010165.490881-0.0000300.0000130.000023-0.000049
('market for quicklime, milled, packed', 'RoW', 'quicklime, milled, packed')nannannan0.000031nannan3.6895200.0000840.000081130.7601840.0000100.0000850.0000330.000022
('market for selenium', 'GLO', 'selenium')nannannan0.000069nannan9.0483320.0001040.000101680.6063850.0000930.0001080.000044-0.000781
('market for silica sand', 'GLO', 'silica sand')nannannan0.000011nannan5.9754010.0000920.0000922723.612111-0.0000520.0000970.000029-0.000156
('market for silicon carbide', 'GLO', 'silicon carbide')nannannan0.000042nannan3.5539090.0000800.000076226.450537-0.0000160.0000830.000073-0.000339
('market for silicon tetrachloride', 'RoW', 'silicon tetrachloride')nannannan0.000041nannan4.5845420.0000820.0000825763.6779560.0000170.0000860.000051-0.000299
('market for silicon tetrahydride', 'GLO', 'silicon tetrahydride')nannannan0.000035nannan5.1366380.0001400.0001369644.820332-0.0000870.0001410.000038-0.000093
('market for soda ash, dense', 'GLO', 'soda ash, dense')nannannan0.000013nannan3.9271190.0001170.0001151013.4056850.0000230.0001200.000024-0.000261
('market for soda ash, light, crystalline, heptahydrate', 'GLO', 'soda ash, light, crystalline, heptahydrate')nannannan0.000073nannan14.2321470.0001080.0001081861.781110-0.0004980.0001130.000031-0.000463
('market for sodium', 'GLO', 'sodium')nannannan0.000042nannan4.1362920.0001330.000128514.588197-0.0001270.0001340.000026-0.000334
('market for sodium aluminate, powder', 'GLO', 'sodium aluminate, powder')nannannan-0.000025nannan2.1453380.0001410.000135-4.9657030.0000080.0001420.000021-0.000108
('market for sodium amide', 'RER', 'sodium amide')nannannan0.000034nannan3.8105140.0000480.0000481263.2221740.0000060.0000520.000023-0.000355
('market for sodium amide', 'RoW', 'sodium amide')nannannan0.000002nannan2.9653000.0000800.0000781246.4053260.0000160.0000830.000006-0.000232
('market for sodium arsenide', 'GLO', 'sodium arsenide')nannannan-0.000018nannan3.2164640.0001070.00010559.035101-0.0000020.0001110.000040-0.000462
('market for sodium bicarbonate', 'GLO', 'sodium bicarbonate')nannannan0.000161nannan14.5197160.0000820.0000821880.574137-0.0000470.0000830.000059-0.000498
('market for sodium borates', 'GLO', 'sodium borates')nannannan0.000023nannan1.8105390.0000810.000079155.606841-0.0000140.0000800.000032-0.000186
('market for sodium chlorate, powder', 'RER', 'sodium chlorate, powder')nannannan0.000065nannan9.5669340.0000800.0000791064.727345-0.0001460.0000850.000050-0.001286
('market for sodium chlorate, powder', 'RoW', 'sodium chlorate, powder')nannannan0.000029nannan1.9577700.0000980.0000891077.6075880.0000060.0000990.000016-0.000276
('market for sodium chloride, brine solution', 'GLO', 'sodium chloride, brine solution')nannannan0.000036nannan12.8659850.0000830.000081-142.7202710.0000010.0000870.000056-0.001058
('market for sodium chloride, powder', 'GLO', 'sodium chloride, powder')nannannan0.000067nannan7.5629020.0000560.000054569.4333740.0004540.0000580.000076-0.000636
('market for sodium cumenesulphonate', 'GLO', 'sodium cumenesulphonate')nannannan0.000029nannan2.6278490.0001090.000106649.2393530.0000340.0001100.000010-0.000247
('market for sodium cyanide', 'RER', 'sodium cyanide')nannannan0.000181nannan2.0545390.0000640.0000631026.619225-0.0001840.0000670.000013-0.000165
('market for sodium cyanide', 'RoW', 'sodium cyanide')nannannan0.000253nannan1.9674090.0000830.000086948.2101230.0000040.0000850.000052-0.000143
('market for sodium dichromate', 'GLO', 'sodium dichromate')nannannan0.000038nannan4.9316690.0000480.000052254.598307-0.0001670.0000540.000040-0.000183
('market for sodium dithionite, anhydrous', 'RER', 'sodium dithionite, anhydrous')nannannan0.000022nannan5.2739110.0001280.000121219.886300-0.0000040.0001290.000033-0.000596
('market for sodium dithionite, anhydrous', 'RoW', 'sodium dithionite, anhydrous')nannannan0.000005nannan3.4812130.0000890.000089203.3834920.0000110.0000930.000041-0.000420
('market for sodium fluoride', 'GLO', 'sodium fluoride')nannannan0.000016nannan4.8842210.0001550.0001501168.5550070.0000520.0001540.000030-0.000435
('market for sodium hydrogen sulfate', 'GLO', 'sodium hydrogen sulfate')nannannan0.000031nannan5.6165960.0000590.000060761.636655-0.0000070.0000630.000051-0.000597
('market for sodium hydrogen sulfite', 'GLO', 'sodium hydrogen sulfite')nannannan0.000026nannan4.2466890.0000490.000046329.3575980.0000260.0000550.000024-0.000514
('market for sodium hydrosulfide', 'GLO', 'sodium hydrosulfide')nannannan0.000026nannan3.9621320.0000670.0000651125.385063-0.0000690.0000690.000024-0.000446
('market for sodium hydroxide, without water, in 50% solution state', 'GLO', 'sodium hydroxide, without water, in 50% solution state')nannannan-0.000008nannan3.8188500.0001600.0001561008.927531-0.0000060.0001600.000005-0.000432
('market for sodium hypochlorite, without water, in 15% solution state', 'RER', 'sodium hypochlorite, without water, in 15% solution state')nannannan0.000023nannan6.6238240.0001090.000106925.759664-0.0001420.0001150.000012-0.000727
('market for sodium hypochlorite, without water, in 15% solution state', 'RoW', 'sodium hypochlorite, without water, in 15% solution state')nannannan-0.000003nannan4.0512610.0000590.000056928.714178-0.0000800.0000630.000010-0.000501
('market for sodium nitrate', 'GLO', 'sodium nitrate')nannannan0.000034nannan2.0964420.0001210.000120676.2511530.0000920.0001220.000135-0.000075
('market for sodium nitrite', 'RER', 'sodium nitrite')nannannan0.000043nannan3.7828940.0000380.0000371302.3216720.0000110.0000400.000008-0.000443
('market for sodium nitrite', 'RoW', 'sodium nitrite')nannannan0.000019nannan3.2263970.0000830.0000781281.0660120.0000400.0000850.000035-0.000344
('market for sodium oxide', 'RER', 'sodium oxide')nannannan0.000050nannan4.5503430.0000690.000070675.2388060.0000370.0000720.000035-0.000479
('market for sodium oxide', 'RoW', 'sodium oxide')nannannan0.000030nannan3.6619830.0000740.000074656.2138240.0000780.0000760.000026-0.000372
('market for sodium perchlorate', 'GLO', 'sodium perchlorate')nannannan0.000010nannan2.5940880.0001050.000101759.2083860.0000350.0001080.000027-0.000345
('market for sodium persulfate', 'GLO', 'sodium persulfate')nannannan0.000059nannan4.0313280.0000980.000096993.2123680.0000200.0001050.000036-0.000397
('market for sodium phosphate', 'RER', 'sodium phosphate')nannannan0.000085nannan3.7446660.0001190.000118704.0896650.0000220.0001210.000046-0.004584
('market for sodium phosphate', 'RoW', 'sodium phosphate')nannannan0.000120nannan3.5448760.0001200.000122701.5803000.0000500.0001230.000042-0.004504
('market for sodium pyrophosphate', 'GLO', 'sodium pyrophosphate')nannannan0.000029nannan4.1594340.0000550.000053621.841469-0.0000230.0000590.000038-0.004377
('market for sodium silicate, solid', 'RER', 'sodium silicate, solid')nannannan0.000072nannan13.1082720.0000710.0000701025.151288-0.0002320.0000740.000043-0.000292
('market for sodium silicate, solid', 'RoW', 'sodium silicate, solid')nannannan0.000102nannan8.3147740.0001240.000122709.2190550.0002840.0001240.000076-0.000257
('market for sodium silicate, spray powder, 80%', 'RER', 'sodium silicate, spray powder, 80%')nannannan0.000029nannan4.6631780.0000680.000067648.9690330.0001020.0000710.000026-0.000425
('market for sodium silicate, spray powder, 80%', 'RoW', 'sodium silicate, spray powder, 80%')nannannan0.000070nannan3.9693200.0000720.000072553.8642830.0001280.0000770.000041-0.000361
('market for sodium silicate, without water, in 37% solution state', 'RER', 'sodium silicate, without water, in 37% solution state')nannannan0.000017nannan12.2880100.0001150.000113801.696979-0.0000830.0001180.000044-0.000292
('market for sodium silicate, without water, in 37% solution state', 'RoW', 'sodium silicate, without water, in 37% solution state')nannannan0.000057nannan7.9774540.0000810.000080568.926283-0.0003180.0000830.000048-0.000319
('market for sodium silicate, without water, in 48% solution state', 'RER', 'sodium silicate, without water, in 48% solution state')nannannan0.000066nannan5.1420360.0000970.000092884.053606-0.0000150.0000980.000024-0.000511
('market for sodium silicate, without water, in 48% solution state', 'RoW', 'sodium silicate, without water, in 48% solution state')nannannan0.000066nannan4.7038210.0001500.000144853.537035-0.0000220.0001510.000011-0.000421
('market for sodium sulfate, anhydrite', 'RER', 'sodium sulfate, anhydrite')nannannan0.000012nannan10.2528210.0000280.0000281475.0125950.0000730.0000300.000036-0.000674
('market for sodium sulfate, anhydrite', 'RoW', 'sodium sulfate, anhydrite')nannannan0.000031nannan14.7297560.0000550.000056229.103264-0.0001670.0000590.000062-0.000468
('market for sodium sulfide', 'GLO', 'sodium sulfide')nannannan0.000057nannan7.5310760.0000720.000067249.791835-0.0001580.0000720.000060-0.000240
('market for sodium sulfite', 'RER', 'sodium sulfite')nannannan-0.000005nannan5.8732590.0000800.000078457.9066510.0000210.0000800.000028-0.000692
('market for sodium sulfite', 'RoW', 'sodium sulfite')nannannan0.000031nannan3.8396790.0001220.000118427.9501980.0000120.0001220.000035-0.000412
('market for sodium tetrafluoroborate', 'GLO', 'sodium tetrafluoroborate')nannannan0.000027nannan3.3574230.0001450.000137493.4348740.0000680.0001470.000010-0.000317
('market for sodium tetrahydridoborate', 'GLO', 'sodium tetrahydridoborate')nannannan0.000020nannan2.7629610.0000930.000093395.3333800.0000080.0000980.000012-0.000348
('market for steatite', 'GLO', 'steatite')nannannan0.000010nannan0.2031370.0000300.000025313.5684930.0000020.0000290.000022-0.000082
('market for sulfite', 'RER', 'sulfite')nannannan0.000038nannan7.2565670.0001010.000096679.691023-0.0000180.0001040.000049-0.000622
('market for sulfite', 'RoW', 'sulfite')nannannan0.000033nannan4.4389060.0001230.000118618.5063050.0000180.0001240.000020-0.000406
('market for sulfur', 'GLO', 'sulfur')nannannan-0.000020nannan0.5624160.0000870.000088388.031536-0.0000030.0000910.0000290.000037
('market for sulfur dichloride', 'RER', 'sulfur dichloride')nannannan0.000056nannan9.4198420.0001430.0001391230.207746-0.0000060.0001460.000030-0.001089
('market for sulfur dichloride', 'RoW', 'sulfur dichloride')nannannan-0.000002nannan4.0634560.0000530.0000511297.9237110.0000760.0000540.000023-0.000470
('market for sulfuryl chloride', 'GLO', 'sulfuryl chloride')nannannan-0.000003nannan4.5993110.0000850.000080737.4988090.0000440.0000860.000041-0.000508
('market for thionyl chloride', 'RER', 'thionyl chloride')nannannan0.000061nannan10.3494180.0000940.0000871266.894717-0.0000820.0000940.000037-0.001215
('market for thionyl chloride', 'RoW', 'thionyl chloride')nannannan0.000015nannan4.8492700.0000730.0000671314.602755-0.0000620.0000730.000021-0.000519
('market for tin dioxide', 'GLO', 'tin dioxide')nannannan-0.000005nannan2.7672670.0000620.000060587.8197650.0000200.0000630.000114-0.000836
('market for titanium dioxide', 'RER', 'titanium dioxide')nannannan0.000055nannan11.3351190.0000590.00005484.0564790.0000320.0000600.000015-0.000313
('market for titanium dioxide', 'RoW', 'titanium dioxide')nannannan0.000034nannan4.3251040.0000270.00002933.1371690.0000920.0000300.000004-0.000245
('market for titanium tetrachloride', 'GLO', 'titanium tetrachloride')nannannan0.000026nannan3.3193110.0000300.0000309.3086700.0000040.0000320.000030-0.000299
('market for trichloroborane', 'GLO', 'trichloroborane')nannannan0.000012nannan3.1686480.0000240.000020686.3414870.0000040.0000260.000034-0.000409
('market for triethyl amine', 'GLO', 'triethyl amine')nannannan0.000054nannan2.9927060.0000680.000067890.451881-0.0000360.0000710.000061-0.000114
('market for trisodium phosphate', 'GLO', 'trisodium phosphate')nannannan0.000060nannan3.2986210.0001060.000103628.536951-0.0000110.0001110.000036-0.003773
('market for zinc monosulfate', 'RER', 'zinc monosulfate')nannannan0.000010nannan5.0352980.0001100.0001061158.1514290.0000060.0001120.000029-0.000405
('market for zinc monosulfate', 'RoW', 'zinc monosulfate')nannannan0.000023nannan5.1032210.0001050.000104664.9661900.0000290.0001090.000023-0.000411
('market for zinc oxide', 'GLO', 'zinc oxide')nannannan0.000034nannan3.8240830.0000940.000089122.6692020.0000300.0000940.000062-0.000406
('market for zinc sulfide', 'GLO', 'zinc sulfide')nannannan0.000025nannan4.6804880.0000680.000068515.5694020.0000290.0000690.000045-0.000414
('market for zircon, 50% zirconium', 'GLO', 'zircon, 50% zirconium')nannannan0.000048nannan5.1881410.0000210.000020-70.3442860.0000640.0000230.000008-0.000253
('market for zirconium oxide', 'GLO', 'zirconium oxide')nannannan-0.000009nannan5.5515270.0001100.000106-16.070466-0.0000380.0001090.000015-0.000327
('market for 1-butanol', 'GLO', '1-butanol')nannannan0.000023nannan4.8779500.0000730.0000712167.111475-0.0000220.0000760.000039-0.000195
('market for 1-pentanol', 'GLO', '1-pentanol')nannannan0.000003nannan7.6389830.0001890.0001892235.6995170.0000400.0001940.000042-0.000054
('market for 1-propanol', 'GLO', '1-propanol')nannannan0.000014nannan5.5446190.0001190.000115903.755092-0.0000370.000119-0.000008-0.000204
('market for 1,1-difluoroethane, HFC-152a', 'GLO', '1,1-difluoroethane, HFC-152a')nannannan0.000008nannan3.8070620.0000960.000089970.393812-0.0001060.0000980.000023-0.000401
('market for 2-butanol', 'RER', '2-butanol')nannannan0.000051nannan8.6028420.0000800.0000801161.7407530.0001130.0000820.000046-0.000038
('market for 2-butanol', 'RoW', '2-butanol')nannannan0.000015nannan3.7380070.0000490.0000501027.6974870.0000550.000051-0.000004-0.000092
('market for 2-cyclopentone', 'GLO', '2-cyclopentone')nannannan0.000025nannan2.0802120.0000760.000035365.2789340.0000470.000079-0.000003-0.000074
('market for 2-methyl-1-butanol', 'GLO', '2-methyl-1-butanol')nannannan0.000003nannan7.6389830.0001890.0001892235.6995170.0000400.0001940.000042-0.000054
('market for 2-methyl-2-butanol', 'GLO', '2-methyl-2-butanol')nannannan0.000015nannan8.6029850.0000630.0000651772.3713630.0000630.0000660.000034-0.000137
('market for 2-nitroaniline', 'GLO', '2-nitroaniline')nannannan0.000002nannan2.5167960.0000850.0000901155.7695320.0001230.0000890.000102-0.000207
('market for 2-pyridinol', 'GLO', '2-pyridinol')nannannan0.000002nannan2.8777130.0001340.000129716.884229-0.0000560.0001340.000066-0.000144
('market for 2,4-di-tert-butylphenol', 'GLO', '2,4-di-tert-butylphenol')nannannan0.000036nannan1.8052080.0000970.000091442.743568-0.0001940.0000970.000025-0.000149
('market for 2,4-dinitrotoluene', 'GLO', '2,4-dinitrotoluene')nannannan0.000018nannan2.2126100.0001140.000111661.7967420.0000150.0001180.000033-0.000130
('market for 2,5-dimethylhexane-2,5-dihydroperoxide', 'GLO', '2,5-dimethylhexane-2,5-dihydroperoxide')nannannan0.000081nannan2.4162030.0000740.000073504.1942710.0000230.0000780.000026-0.000226
('market for 2,6-di-tert-butylphenol', 'GLO', '2,6-di-tert-butylphenol')nannannan0.000022nannan1.7864170.0000790.000081450.000150-0.0000490.0000830.000041-0.000154
('market for 3-methyl-1-butanol', 'GLO', '3-methyl-1-butanol')nannannan0.000003nannan7.6389830.0001890.0001892235.6995170.0000400.0001940.000042-0.000054
('market for 3-methyl-1-butyl acetate', 'GLO', '3-methyl-1-butyl acetate')nannannan0.000019nannan7.1787690.0000820.0000841747.0844940.0000160.0000860.000011-0.000178
('market for 4-methyl-2-pentanone', 'GLO', '4-methyl-2-pentanone')nannannan0.000144nannan1.9976810.0001090.0001071146.084224-0.0000400.0001130.000017-0.000083
('market for 4-tert-butylbenzaldehyde', 'GLO', '4-tert-butylbenzaldehyde')nannannan0.000025nannan2.1522160.0000800.0000841569.3456860.0000590.0000870.000057-0.000139
('market for 4-tert-butyltoluene', 'RER', '4-tert-butyltoluene')nannannan0.000057nannan1.6422180.0001330.0001322701.536775-0.0000500.0001380.000001-0.000028
('market for 4-tert-butyltoluene', 'RoW', '4-tert-butyltoluene')nannannan0.000043nannan0.9474720.0000840.0000832675.760965-0.0000660.0000870.000038-0.000009
('market for acetaldehyde', 'GLO', 'acetaldehyde')nannannan0.000020nannan3.0613740.0000780.000076479.897631-0.0000700.0000780.000024-0.000137
('market for acetanilide', 'GLO', 'acetanilide')nannannan0.000001nannan2.5148520.0000620.000059858.1595440.0000820.0000650.000075-0.000226
('market for acetic anhydride', 'GLO', 'acetic anhydride')nannannan0.000050nannan4.1726970.0001210.0001162206.6904510.0000510.0001220.000031-0.000190
('market for acetone cyanohydrin', 'RER', 'acetone cyanohydrin')nannannan0.000023nannan0.0138760.0000500.0000512580.4418330.0000130.0000500.0000110.000043
('market for acetone cyanohydrin', 'RoW', 'acetone cyanohydrin')nannannan0.000008nannan0.0334330.0000250.0000282477.084406-0.0000010.0000270.0000240.000023
('market for acetone, liquid', 'RER', 'acetone, liquid')nannannan0.000136nannan0.8056540.0000620.0000611736.223985-0.0000680.0000620.000068-0.000017
('market for acetone, liquid', 'RoW', 'acetone, liquid')nannannan0.000227nannan0.9002250.0001630.000160925.7429160.0000650.0001680.0000310.000039
('market for acetonitrile', 'GLO', 'acetonitrile')nannannan0.000005nannan1.5316880.0000460.000044704.3515230.0000830.0000480.000029-0.000060
('market for acetylene', 'RER', 'acetylene')nannannan0.000017nannan9.9317880.0001120.0001041003.721907-0.0000900.0001140.000013-0.001345
('market for acetylene', 'RoW', 'acetylene')nannannan0.000029nannan1.6656170.0001200.0001151012.988786-0.0000160.0001200.000079-0.000248
('market for acrolein', 'GLO', 'acrolein')nannannan0.000031nannan1.9790350.0000600.0000591182.466881-0.0000620.0000620.000005-0.000183
('market for acrylic binder, without water, in 34% solution state', 'RER', 'acrylic binder, without water, in 34% solution state')nannannan0.000033nannan6.4832930.0001240.0001231133.5114220.0000590.0001290.000041-0.000327
('market for acrylic binder, without water, in 34% solution state', 'RoW', 'acrylic binder, without water, in 34% solution state')nannannan0.000035nannan3.9136540.0000660.0000641055.687254-0.0000020.0000700.000021-0.000262
('market for acrylic dispersion, without water, in 65% solution state', 'RER', 'acrylic dispersion, without water, in 65% solution state')nannannan0.000048nannan9.7107150.0000760.000073157.094167-0.0000690.0000800.000039-0.000405
('market for acrylic dispersion, without water, in 65% solution state', 'RoW', 'acrylic dispersion, without water, in 65% solution state')nannannan0.000012nannan4.2377610.0001270.000128114.9941400.0000090.0001290.000034-0.000201
('market for acrylonitrile', 'GLO', 'acrylonitrile')nannannan0.000015nannan1.5296090.0000900.000088703.569728-0.0000160.0000900.000053-0.000022
('market for activated carbon, granular', 'GLO', 'activated carbon, granular')nannannan-0.000005nannan1.5774550.0001300.000131-30.7599700.0000430.0001330.000048-0.000014
('market for alkyd resin, long oil, without solvent, in 70% white spirit solution state', 'RER', 'alkyd resin, long oil, without solvent, in 70% white spirit solution state')nannannan0.000174nannan6.0812090.0000740.0000749.5472250.0000010.0000760.000152-0.000408
('market for alkyd resin, long oil, without solvent, in 70% white spirit solution state', 'RoW', 'alkyd resin, long oil, without solvent, in 70% white spirit solution state')nannannan0.000137nannan5.8471810.0000290.0000346.2785050.0000030.0000310.000129-0.000444
('market for alkyl sulphate (C12-14)', 'GLO', 'alkyl sulphate (C12-14)')nannannan0.000095nannan3.2418180.0000650.00005910.866222-0.0000010.0000680.000013-0.432357
('market for alkylbenzene, linear', 'GLO', 'alkylbenzene, linear')nannannan0.000011nannan5.5268520.0000390.000038420.193067-0.0003480.0000420.000044-0.000257
('market for allyl chloride', 'RER', 'allyl chloride')nannannan0.000044nannan5.9982120.0001210.000120696.643355-0.0000440.0001260.000005-0.000478
('market for allyl chloride', 'RoW', 'allyl chloride')nannannan0.000065nannan2.4896590.0000660.000066674.7293900.0000800.0000700.000035-0.000231
('market for alpha-naphthol', 'GLO', 'alpha-naphthol')nannannan0.000042nannan3.6536040.0000100.0000111084.1753300.0000020.0000140.000036-0.000418
('market for alpha-picoline', 'GLO', 'alpha-picoline')nannannan0.000044nannan2.9984190.0000740.000072710.779516-0.0000220.0000780.000013-0.000154
('market for amine oxide', 'GLO', 'amine oxide')nannannan0.000065nannan3.1384400.0000760.00007910.0923890.0000060.0000830.000100-0.429883
('market for aminopyridine', 'RER', 'aminopyridine')nannannan0.000025nannan3.2148310.0000730.000070710.7270570.0000800.0000740.000007-0.000235
('market for aminopyridine', 'RoW', 'aminopyridine')nannannan0.000036nannan2.7475490.0000750.000075701.3846900.0000180.0000770.000021-0.000180
('market for ammonium carbonate', 'RER', 'ammonium carbonate')nannannan0.000013nannan4.5134250.0000540.0000531257.2910350.0000030.0000540.000041-0.000365
('market for ammonium carbonate', 'RoW', 'ammonium carbonate')nannannan0.000016nannan2.5154240.0000710.0000721165.5761880.0000340.0000750.000038-0.000165
('market for ammonium thiocyanate', 'GLO', 'ammonium thiocyanate')nannannan0.000004nannan1.8139390.0000520.0000502207.9282880.0000340.0000530.000019-0.000162
('market for aniline', 'RER', 'aniline')nannannan-0.000008nannan2.6800790.0000990.000105891.8111070.0000370.0001030.000133-0.000219
('market for aniline', 'RoW', 'aniline')nannannan0.000015nannan1.8459890.0000920.000082740.4292840.0000650.0000940.000063-0.000155
('market for anthraquinone', 'GLO', 'anthraquinone')nannannan0.000019nannan3.2991420.0000290.000028854.093437-0.0000220.0000290.000032-0.000355
('market for benzal chloride', 'RER', 'benzal chloride')nannannan0.000045nannan6.6378560.0000380.0000361552.2705930.0000280.0000390.000043-0.000481
('market for benzal chloride', 'RoW', 'benzal chloride')nannannan0.000044nannan2.7261460.0000510.0000491479.7753980.0000950.0000540.000017-0.000226
('market for benzaldehyde', 'RER', 'benzaldehyde')nannannan0.000049nannan7.5707730.0001040.0000991555.1139670.0004850.0001050.000037-0.000386
('market for benzaldehyde', 'RoW', 'benzaldehyde')nannannan0.000050nannan3.2303320.0001230.0001171388.9410070.0003420.0001260.000014-0.000172
('market for benzene', 'GLO', 'benzene')nannannan0.000014nannan1.0075060.0000880.000086814.4809040.0000510.0000890.000069-0.000194
('market for benzyl alcohol', 'GLO', 'benzyl alcohol')nannannan0.000057nannan4.7953130.0001330.0001301297.357074-0.0000570.0001360.000083-0.000161
('market for benzyl chloride', 'RER', 'benzyl chloride')nannannan0.000079nannan5.5693540.0000870.0000841944.0785410.0003020.0000860.000043-0.000289
('market for benzyl chloride', 'RoW', 'benzyl chloride')nannannan0.000069nannan2.4114320.0001260.0001221800.3122840.0000060.0001290.000040-0.000101
('market for bisphenol A epoxy based vinyl ester resin', 'GLO', 'bisphenol A epoxy based vinyl ester resin')nannannan0.000062nannan2.5505810.0000340.000032445.3525100.0000110.0000360.000002-0.000276
('market for bisphenol A, powder', 'GLO', 'bisphenol A, powder')nannannan0.000160nannan1.9804560.0001110.000110460.5202300.0000370.0001120.000035-0.000167
('market for bromopropane', 'GLO', 'bromopropane')nannannan0.000018nannan2.1091090.0001050.000100446.2028520.0000120.0001080.000017-0.000140
('market for butadiene', 'RER', 'butadiene')nannannan0.000026nannan0.0060780.0000470.0000475095.240881-0.0000840.0000510.0001090.000042
('market for butadiene', 'RoW', 'butadiene')nannannan0.000162nannan0.0131990.0001890.0001895127.535779-0.0002170.0001920.0000400.000174
('market for butane-1,4-diol', 'GLO', 'butane-1,4-diol')nannannan0.000047nannan5.8771790.0001650.0001582215.3979090.0000220.0001620.000048-0.000213
('market for butane', 'GLO', 'butane')nannannan0.000030nannan2.6272510.0000600.000061195.2346800.0000110.0000610.000036-0.000147
('market for butene, mixed', 'RER', 'butene, mixed')nannannan0.000146nannan0.0067000.0001260.0001262885.0988110.0000370.0001330.0000330.000117
('market for butene, mixed', 'RoW', 'butene, mixed')nannannan0.000080nannan0.0111790.0001220.0001202893.6993420.0037510.0001280.0001000.000098
('market for butyl acetate', 'RER', 'butyl acetate')nannannan0.000017nannan6.7740670.0000400.0000421166.4150950.0000400.0000420.000038-0.000249
('market for butyl acetate', 'RoW', 'butyl acetate')nannannan-0.000008nannan4.9229290.0000970.0000981061.440795-0.0000010.000097-0.000002-0.000207
('market for butyl acrylate', 'RER', 'butyl acrylate')nannannan0.000045nannan8.4952960.0000080.0000102610.1079880.0001210.0000090.000057-0.000212
('market for butyl acrylate', 'RoW', 'butyl acrylate')nannannan0.000048nannan4.7932050.0000910.0000872230.3198290.0000810.0000910.000051-0.000143
('market for butyldiglycol acetate', 'GLO', 'butyldiglycol acetate')nannannan0.000015nannan3.5860660.0001290.000123921.1764850.0000030.0001300.000029-0.000190
('market for butyrolactone', 'RER', 'butyrolactone')nannannan0.000051nannan6.0274090.0000730.0000742134.8818380.0000130.0000770.000047-0.000332
('market for butyrolactone', 'RoW', 'butyrolactone')nannannan0.000047nannan5.7249580.0000720.0000742121.089116-0.0000420.0000770.000044-0.000309
('market for carbon black', 'GLO', 'carbon black')nannannan0.000030nannan1.2314350.0001090.00010611.1157170.0000020.0001130.0000450.000020
('market for carbon disulfide', 'GLO', 'carbon disulfide')nannannan0.000014nannan3.0294040.0000510.000051927.3899140.0000710.0000550.000033-0.000263
('market for carbon tetrachloride', 'RER', 'carbon tetrachloride')nannannan0.000016nannan0.052302-0.000010-0.0000122987.256007-0.002334-0.0000130.000031-0.000038
('market for carbon tetrachloride', 'RoW', 'carbon tetrachloride')nannannan0.000087nannan0.0586470.0001710.0001692985.2871520.0000320.0001730.0000550.000127
('fraction 1 from naphtha separation to generic market for chemical, organic', 'GLO', 'chemical, organic')nannannan-79.325068nannan-15.887892-20.563308-20.9909691022.4277901197.854632-20.562805235.515803-28.189340
('market for chloroacetyl chloride', 'GLO', 'chloroacetyl chloride')nannannan0.000025nannan4.9690200.0000830.0000801024.371739-0.0000290.0000850.000025-0.000490
('market for chlorodifluoromethane', 'RER', 'chlorodifluoromethane')nannannan0.000004nannan0.2301300.0001050.000044841.301517-0.0000430.0001060.000009-0.179960
('market for chlorodifluoromethane', 'RoW', 'chlorodifluoromethane')nannannan0.000019nannan0.0772530.0000330.000021611.763518-0.0000320.0000410.000012-0.178344
('market for chloromethyl methyl ether', 'RER', 'chloromethyl methyl ether')nannannan0.000038nannan5.6845400.0000010.000002676.712381-0.0000740.0000040.000026-0.000817
('market for chloromethyl methyl ether', 'RoW', 'chloromethyl methyl ether')nannannan0.000069nannan3.0657500.0000970.000094626.1581120.0000380.0001000.000040-0.000353
('market for chloronitrobenzene', 'GLO', 'chloronitrobenzene')nannannan0.000007nannan2.3256010.0000820.0000831110.4382520.0000220.0000840.000113-0.000191
('market for cumene', 'GLO', 'cumene')nannannan0.000027nannan1.5670550.0001040.0001021059.665767-0.0000590.0001040.000077-0.000163
('market for cyanuric chloride', 'GLO', 'cyanuric chloride')nannannan0.000140nannan2.7967730.0001010.000101957.3898210.0000860.000104-0.000011-0.000248
('market for cyclohexane', 'GLO', 'cyclohexane')nannannan0.000002nannan2.4499100.0000650.000064589.935616-0.0001670.0000670.000029-0.000237
('market for cyclohexanol', 'RER', 'cyclohexanol')nannannan0.000025nannan2.5454650.0001230.000121818.126666-0.0000340.0001280.000043-0.000245
('market for cyclohexanol', 'RoW', 'cyclohexanol')nannannan0.000021nannan1.9924310.0001320.000130797.449945-0.0000110.0001330.000061-0.000174
('market for cyclohexanone', 'RER', 'cyclohexanone')nannannan0.000032nannan7.7396440.0000840.000086402.047611-0.0000310.0000870.000042-0.000201
('market for cyclohexanone', 'RoW', 'cyclohexanone')nannannan0.000017nannan4.0978140.0000850.000082297.4312920.0000180.0000870.000053-0.000201
('market for dichloromethane', 'RER', 'dichloromethane')nannannan0.000054nannan0.0913890.0001040.0000921330.227210-0.0000510.0001060.0000080.086527
('market for dichloromethane', 'RoW', 'dichloromethane')nannannan0.000084nannan0.0955310.0001260.0001111324.661210-0.0000370.0001300.0000050.086346
('market for diethanolamine', 'GLO', 'diethanolamine')nannannan0.000001nannan2.4156660.0001210.000119768.6618940.0000470.0001250.000015-0.000159
('market for diethyl ether, without water, in 99.95% solution state', 'RoW', 'diethyl ether, without water, in 99.95% solution state')nannannan0.000081nannan3.6421760.0001140.0001161108.4713980.0000140.0001180.000051-0.000264
('market for diethylene glycol', 'GLO', 'diethylene glycol')nannannan0.000009nannan2.2424440.0001430.000138937.675333-0.0000340.000147-0.000008-0.000125
('market for dimethyl carbonate', 'GLO', 'dimethyl carbonate')nannannan0.000007nannan3.6726110.0000740.000072253.124884-0.0000150.0000780.000014-0.000297
('market for dimethyl ether', 'RER', 'dimethyl ether')nannannan0.000013nannan2.8099150.0000700.000069463.924590-0.0000010.0000740.000048-0.000276
('market for dimethyl ether', 'RoW', 'dimethyl ether')nannannan0.000022nannan1.7486930.0001350.000130436.775714-0.0000050.0001360.000040-0.000131
('market for dimethyl hexanediol', 'GLO', 'dimethyl hexanediol')nannannan0.000167nannan2.1694110.0000910.000084509.9837250.0000050.0000900.000020-0.000194
('market for dimethyl hexynediol', 'GLO', 'dimethyl hexynediol')nannannan0.000134nannan1.9191440.0000850.000081666.5479370.0000180.0000870.000063-0.000171
('market for dimethyl malonate', 'GLO', 'dimethyl malonate')nannannan0.000073nannan3.7973490.0001100.0001011032.688710-0.0001040.000109-0.000003-0.000322
('market for dimethyl sulfate', 'RER', 'dimethyl sulfate')nannannan0.000025nannan6.7452820.0000670.0000671636.1518510.0000800.0000700.000054-0.000668
('market for dimethyl sulfate', 'RoW', 'dimethyl sulfate')nannannan0.000034nannan3.9576510.0001060.0001011215.5577120.0000530.0001080.000042-0.000324
('market for dimethyl sulfide', 'GLO', 'dimethyl sulfide')nannannan-0.000004nannan2.5130380.0000870.000085692.7843720.0000540.0000940.000049-0.000215
('market for dimethyl sulfoxide', 'GLO', 'dimethyl sulfoxide')nannannan0.000027nannan2.7954700.0000950.000092730.889734-0.0000040.0000980.000044-0.000237
('market for dimethylacetamide', 'GLO', 'dimethylacetamide')nannannan0.000027nannan2.7318540.0001190.000115514.432397-0.0000060.0001200.000037-0.000199
('market for dimethylamine', 'RER', 'dimethylamine')nannannan0.000026nannan2.2836350.0000500.000049490.3064130.0000230.0000530.000002-0.000226
('market for dimethylamine', 'RoW', 'dimethylamine')nannannan0.000019nannan1.4167400.0000620.000060468.4940330.0000430.0000630.000029-0.000119
('market for dimethylamine borane', 'GLO', 'dimethylamine borane')nannannan0.000042nannan2.9491730.0000920.000088513.3521010.0000230.0000930.000030-0.000292
('market for dioxane', 'RER', 'dioxane')nannannan0.000044nannan6.2665040.0001600.0001542634.5292390.0001070.0001570.000029-0.000142
('market for dioxane', 'RoW', 'dioxane')nannannan0.000032nannan3.4067860.0001230.0001172235.2790870.0001340.0001210.000033-0.000152
('market for dipropyl amine', 'GLO', 'dipropyl amine')nannannan0.000024nannan6.1388320.0000600.0000581070.784736-0.0000320.0000620.000040-0.000230
('market for dipropylene glycol monomethyl ether', 'RER', 'dipropylene glycol monomethyl ether')nannannan0.000024nannan4.7117290.0001280.000123818.6226520.0000870.0001300.000014-0.000501
('market for dipropylene glycol monomethyl ether', 'RoW', 'dipropylene glycol monomethyl ether')nannannan0.000063nannan2.7734350.0001150.000109807.6166360.0001080.0001160.000042-0.000290
('market for dodecanol', 'GLO', 'dodecanol')nannannan0.000088nannan3.1643840.0000570.0000556.3434520.0000040.0000610.000096-0.584075
('market for DTPA, diethylenetriaminepentaacetic acid', 'RER', 'DTPA, diethylenetriaminepentaacetic acid')nannannan0.000161nannan3.0531960.0000360.000032981.874336-0.0000630.0000400.000031-0.014017
('market for DTPA, diethylenetriaminepentaacetic acid', 'RoW', 'DTPA, diethylenetriaminepentaacetic acid')nannannan0.000126nannan2.2732990.0001190.000119922.641785-0.0000320.0001210.000021-0.014017
('market for EDTA, ethylenediaminetetraacetic acid', 'GLO', 'EDTA, ethylenediaminetetraacetic acid')nannannan0.000137nannan2.3964900.0001070.000104592.0093930.0000630.0001080.000009-0.013673
('market for epichlorohydrin', 'GLO', 'epichlorohydrin')nannannan-0.000022nannan4.3936740.0000460.000044643.0498540.0000060.0000520.000023-0.000348
('market for epoxy resin insulator, Al2O3', 'GLO', 'epoxy resin insulator, Al2O3')nannannan0.000082nannan3.1294950.0001160.000113411.942027-0.0000800.0001160.000046-0.001955
('market for epoxy resin insulator, SiO2', 'GLO', 'epoxy resin insulator, SiO2')nannannan0.000141nannan2.7552260.0000810.000078399.8970650.0000180.0000820.000015-0.000244
('market for epoxy resin, liquid', 'RER', 'epoxy resin, liquid')nannannan0.000053nannan3.1389340.0000620.000059389.245192-0.0001180.0000620.000025-0.000302
('market for epoxy resin, liquid', 'RoW', 'epoxy resin, liquid')nannannan0.000092nannan2.6369520.0000610.000057377.846972-0.0001610.0000640.000061-0.000253
('market for esters of versatic acid', 'RER', 'esters of versatic acid')nannannan0.000038nannan4.7036030.0001010.000100808.6468870.0000420.0001010.000037-0.000461
('market for esters of versatic acid', 'RoW', 'esters of versatic acid')nannannan0.000068nannan1.5560820.0001660.000163775.3749860.0000050.0001690.000098-0.000054
('market for ethanol, without water, in 99.7% solution state, from ethylene', 'RER', 'ethanol, without water, in 99.7% solution state, from ethylene')nannannan0.000145nannan4.5398640.0001080.000105564.7000450.0003130.0001100.000087-0.000044
('market for ethanol, without water, in 99.7% solution state, from ethylene', 'RoW', 'ethanol, without water, in 99.7% solution state, from ethylene')nannannan0.000038nannan2.5585930.0001040.000102491.3481600.0000170.000105-0.000003-0.000036
('market for ethyl acetate', 'GLO', 'ethyl acetate')nannannan-0.000007nannan4.9985700.0000800.000079549.643320-0.0000020.0000820.000025-0.000208
('market for ethyl benzene', 'RER', 'ethyl benzene')nannannan0.000021nannan2.0603560.0000810.0000821054.8294740.0000380.0000830.000050-0.000233
('market for ethyl benzene', 'RoW', 'ethyl benzene')nannannan0.000054nannan1.4754820.0001240.0001231018.753481-0.0000730.0001250.000028-0.000140
('market for ethylamine', 'GLO', 'ethylamine')nannannan0.000079nannan2.7418100.0001090.0001081276.238419-0.0000640.0001130.000009-0.000080
('market for ethylene bromide', 'RER', 'ethylene bromide')nannannan0.000055nannan2.4006600.0000780.000075452.5125590.0000680.0000800.000032-0.000198
('market for ethylene bromide', 'RoW', 'ethylene bromide')nannannan0.000015nannan1.8603780.0000790.000075437.617355-0.0000030.0000780.000033-0.000132
('market for ethylene carbonate', 'GLO', 'ethylene carbonate')nannannan0.000030nannan3.9460170.0000920.000091458.315294-0.0001480.0000990.000032-0.000267
('market for ethylene dichloride', 'RER', 'ethylene dichloride')nannannan0.000048nannan6.5321660.0000790.000076942.723254-0.0001300.0000820.000009-0.000701
('market for ethylene dichloride', 'RoW', 'ethylene dichloride')nannannan0.000039nannan3.0537450.0001020.000099986.6542770.0000080.0001040.000028-0.000291
('market for ethylene glycol', 'GLO', 'ethylene glycol')nannannan0.000026nannan2.3436070.0000890.000088932.433176-0.0000650.0000910.000040-0.000182
('market for ethylene glycol diethyl ether', 'GLO', 'ethylene glycol diethyl ether')nannannan0.000022nannan3.4953340.0000580.000055957.725989-0.0000020.0000600.000027-0.000315
('market for ethylene glycol dimethyl ether', 'GLO', 'ethylene glycol dimethyl ether')nannannan0.000036nannan2.5926750.0001280.000126759.6776630.0000040.0001320.000043-0.000182
('market for ethylene glycol monoethyl ether', 'RER', 'ethylene glycol monoethyl ether')nannannan0.000114nannan4.6068840.0001200.000117930.754956-0.0002190.0001240.000068-0.000273
('market for ethylene glycol monoethyl ether', 'RoW', 'ethylene glycol monoethyl ether')nannannan0.000027nannan2.2217990.0001070.000106856.777149-0.0000630.0001110.000073-0.000103
('market for ethylene oxide', 'RER', 'ethylene oxide')nannannan0.000050nannan3.4117670.0001320.000129978.2492790.0000260.0001380.000059-0.000266
('market for ethylene oxide', 'RoW', 'ethylene oxide')nannannan0.000039nannan1.2658510.0002000.000196987.9147270.0000020.0002010.0000050.000032
('market for ethylene, average', 'RER', 'ethylene, average')nannannan0.000106nannan0.0053190.0000470.0000442710.191478-0.0000060.0000480.0001730.000040
('market for ethylene, average', 'RoW', 'ethylene, average')nannannan0.000181nannan0.0114190.0002380.0002342715.557812-0.0000620.0002400.0000610.000197
('market for ethylene, pipeline system', 'RER', 'ethylene, pipeline system')nannannan0.000122nannan0.0051130.0001030.0001021885.429695-0.0000310.0001060.0000930.000085
('market for ethylene, pipeline system', 'RoW', 'ethylene, pipeline system')nannannan0.000026nannan0.0108160.0000280.0000251887.3995360.0000280.0000300.0000400.000020
('market for ethylenediamine', 'RER', 'ethylenediamine')nannannan-0.000017nannan3.9003830.0001020.0000961010.956493-0.0000470.0001000.000004-0.074368
('market for ethylenediamine', 'RoW', 'ethylenediamine')nannannan0.000040nannan2.1758390.0000800.0000781004.1415210.0000670.0000850.000021-0.064345
('market for fatty acid', 'GLO', 'fatty acid')nannannan0.000109nannan0.8059110.0000480.000051-12.367672-0.0000040.0000480.000169-0.351303
('market for fatty alcohol', 'GLO', 'fatty alcohol')nannannan0.000072nannan3.1620530.0001140.00011714.6057080.0000010.0001160.000139-0.450591
('market for formaldehyde', 'RER', 'formaldehyde')nannannan0.000021nannan2.6573840.0000690.000070171.2830600.0000110.0000700.000032-0.000232
('market for formaldehyde', 'RoW', 'formaldehyde')nannannan0.000036nannan1.9414460.0001110.000108160.8741290.0000320.0001110.000019-0.000125
('market for glucose', 'GLO', 'glucose')nannannan0.000081nannan1.0407870.0001170.00010878.4829120.0000040.0001200.000030-0.002446
('market for glycerine', 'RER', 'glycerine')nannannan0.000054nannan0.9888020.0000730.00009738.1523140.0000520.0000790.000264-0.003973
('market for glycerine', 'RoW', 'glycerine')nannannan0.000105nannan0.4454140.0000340.000038-15.5059410.0000100.0000370.000153-0.004231
('market for glycine', 'GLO', 'glycine')nannannan0.000026nannan4.2111040.0001040.0001031034.4162730.0000170.0001110.000025-0.000377
('market for glyoxal', 'RER', 'glyoxal')nannannan0.000041nannan5.1694100.0000610.0000611001.5540520.0001070.0000650.000021-0.000549
('market for glyoxal', 'RoW', 'glyoxal')nannannan0.000036nannan1.7205860.0001010.000097998.943083-0.0000080.0001020.000028-0.000138
('market for heptane', 'GLO', 'heptane')nannannan0.000005nannan4.7891380.0001130.000114830.1307640.0000200.0001160.000009-0.000165
('market for hexafluoroethane', 'GLO', 'hexafluoroethane')nannannan0.000027nannan4.2328150.0001410.000139820.930673-0.0001240.0001450.000035-0.000431
('market for hexamethyldisilazane', 'GLO', 'hexamethyldisilazane')nannannan0.000066nannan6.8883810.0001230.0001241444.686507-0.0001630.0001290.0000160.001655
('market for hexane', 'GLO', 'hexane')nannannan0.000036nannan4.9541890.0000670.000063837.5116700.0000240.0000680.000018-0.000209
('market for hydroquinone', 'GLO', 'hydroquinone')nannannan0.000023nannan2.4505400.0001000.000101942.7988240.0000450.0001020.000049-0.000228
('market for imidazole', 'GLO', 'imidazole')nannannan0.000012nannan2.4670490.0001020.0001051242.5240710.0000260.0001080.000026-0.000189
('market for isobutanol', 'RER', 'isobutanol')nannannan0.000008nannan8.7590610.0000970.0000972339.7684060.0000760.0000990.000048-0.000279
('market for isobutanol', 'RoW', 'isobutanol')nannannan0.000029nannan3.3214750.0001210.0001192096.710700-0.0000200.0001220.000027-0.000106
('market for isobutyl acetate', 'GLO', 'isobutyl acetate')nannannan0.000031nannan5.5395890.0000790.0000811524.7190450.0000220.0000820.000009-0.000223
('market for isohexane', 'GLO', 'isohexane')nannannan0.000021nannan5.5355860.0000930.0000881477.9620600.0000260.0000940.000022-0.000291
('market for isophthalic acid based unsaturated polyester resin', 'GLO', 'isophthalic acid based unsaturated polyester resin')nannannan-0.000000nannan2.4391750.0000660.000065552.6280240.0000240.0000660.000022-0.000243
('market for isopropanol', 'RER', 'isopropanol')nannannan0.000036nannan1.7899910.0001100.000110414.9392610.0000310.0001130.000060-0.000044
('market for isopropanol', 'RoW', 'isopropanol')nannannan-0.000024nannan1.2657400.0000780.000077357.2948130.0000800.0000780.000035-0.000035
('market for isopropyl acetate', 'RER', 'isopropyl acetate')nannannan0.000028nannan4.8240280.0000960.000094898.166387-0.0000100.0001010.000008-0.000198
('market for isopropyl acetate', 'RoW', 'isopropyl acetate')nannannan0.000016nannan4.0356280.0000830.000082844.4620150.0000330.0000890.000060-0.000190
('market for isopropylamine', 'GLO', 'isopropylamine')nannannan0.000019nannan1.8103230.0000380.000039807.9148050.0000380.0000390.000045-0.000132
('market for lactic acid', 'GLO', 'lactic acid')nannannan0.000108nannan2.8549610.0000870.000083752.8566980.0000660.0000870.000062-0.000231
('market for lime', 'RER', 'lime')nannannan0.000050nannan13.1217130.0000580.000057354.375157-0.0000030.0000600.000062-0.000977
('market for lime', 'RoW', 'lime')nannannan0.000023nannan3.3892630.0001270.000125330.9477990.0000610.0001250.000072-0.000236
('market for maleic anhydride', 'GLO', 'maleic anhydride')nannannan0.000036nannan1.6812290.0000680.000067288.8257940.0000270.0000710.000031-0.000172
('market for melamine', 'GLO', 'melamine')nannannan0.000023nannan2.3512260.0001110.0001073684.9714700.0000630.0001130.000049-0.000120
('market for melamine formaldehyde resin', 'RER', 'melamine formaldehyde resin')nannannan0.000008nannan3.5448210.0000930.0000913068.432520-0.0000230.0000920.000045-0.000162
('market for melamine formaldehyde resin', 'RoW', 'melamine formaldehyde resin')nannannan0.000005nannan2.8650760.0000930.0000842972.6574190.0000260.0000920.000029-0.000160
('market for methanol', 'GLO', 'methanol')nannannan0.000030nannan0.4456190.0000800.000076143.7883750.0000150.0000830.000009-0.000070
('market for methyl-3-methoxypropionate', 'GLO', 'methyl-3-methoxypropionate')nannannan0.000005nannan2.0336440.0001030.000100539.0631170.0000470.0001050.000041-0.000113
('market for methyl acetate', 'GLO', 'methyl acetate')nannannan0.000057nannan5.4836440.0001260.0001241143.9075720.0000090.0001280.000020-0.000159
('market for methyl acrylate', 'GLO', 'methyl acrylate')nannannan-0.000012nannan1.5937090.0001150.000114432.309446-0.0000490.0001200.000059-0.000044
('market for methyl ethyl ketone', 'RER', 'methyl ethyl ketone')nannannan0.000023nannan2.8481120.0001800.000177609.2908690.0000650.0001790.000039-0.000060
('market for methyl ethyl ketone', 'RoW', 'methyl ethyl ketone')nannannan0.000049nannan1.6825850.0000800.000078643.2228570.0000530.0000860.000050-0.000059
('market for methyl formate', 'GLO', 'methyl formate')nannannan0.000018nannan4.1224980.0000790.0000772001.6463860.0000030.0000820.000029-0.000321
('market for methyl iodide', 'GLO', 'methyl iodide')nannannan0.000106nannan2.0217030.0000730.000071274.4047620.0000350.0000730.000061-0.000823
('market for methyl methacrylate', 'RER', 'methyl methacrylate')nannannan0.000057nannan0.0078140.0000430.0000433165.5080070.0000290.0000470.0001010.000037
('market for methyl methacrylate', 'RoW', 'methyl methacrylate')nannannan0.000001nannan0.016624-0.000005-0.0000033178.6751810.000050-0.0000000.000059-0.000002
('market for methyl tert-butyl ether', 'GLO', 'methyl tert-butyl ether')nannannan0.000022nannan1.6682470.0001260.000125571.4779150.0000630.0001290.000036-0.000013
('market for methylamine', 'RER', 'methylamine')nannannan0.000045nannan3.1037150.0000560.0000551325.0849700.0000770.0000590.000059-0.000207
('market for methylamine', 'RoW', 'methylamine')nannannan0.000028nannan1.7436200.0001070.0001051271.198120-0.0000160.0001090.000026-0.000077
('market for methylchloride', 'RER', 'methylchloride')nannannan0.000056nannan0.0285410.0000780.0000763721.2247010.0000620.0000820.0000150.016957
('market for methylchloride', 'RoW', 'methylchloride')nannannan0.000099nannan0.0410890.0002530.0002463419.375951-0.0000050.0002540.0000180.016963
('market for methylcyclohexane', 'GLO', 'methylcyclohexane')nannannan0.000017nannan4.3577830.0000350.000031747.1178480.0000000.0000390.000048-0.000118
('market for methylene diphenyl diisocyanate', 'RER', 'methylene diphenyl diisocyanate')nannannan0.000043nannan4.1382750.0001010.000122703.369534-0.0000220.0001000.000326-0.000362
('market for methylene diphenyl diisocyanate', 'RoW', 'methylene diphenyl diisocyanate')nannannan0.000036nannan2.4134030.0000920.000083633.258478-0.0000280.0000940.000031-0.000250
('market for monochlorobenzene', 'RER', 'monochlorobenzene')nannannan0.000036nannan4.1674780.0000880.0000851082.9119950.0001130.0000890.000029-0.000452
('market for monochlorobenzene', 'RoW', 'monochlorobenzene')nannannan0.000015nannan2.5787120.0001000.0000991083.0228910.0001720.0001040.000032-0.000304
('market for monochloropentafluoroethane', 'GLO', 'monochloropentafluoroethane')nannannan0.000064nannan4.3974870.0000690.0000641122.8922960.0001370.0000700.000012-0.000504
('market for monoethanolamine', 'GLO', 'monoethanolamine')nannannan0.000012nannan2.3526700.0001310.000128879.2357370.0000310.0001310.000013-0.000145
('market for morpholine', 'GLO', 'morpholine')nannannan0.000057nannan1.8983460.0001030.000101379.6160400.0001260.0001050.000024-0.000166
('market for N-methyl-2-pyrrolidone', 'GLO', 'N-methyl-2-pyrrolidone')nannannan0.000021nannan4.5388270.0000760.0000701624.461726-0.0000060.0000770.000017-0.000265
('market for n-olefins', 'GLO', 'n-olefins')nannannan0.000091nannan3.1397890.0001740.0001701214.0878740.0000980.0001780.000032-0.000006
('market for N,N-dimethylformamide', 'GLO', 'N,N-dimethylformamide')nannannan0.000057nannan3.3117070.0001110.000108512.3550900.0000290.0001150.000048-0.000241
('market for nitrobenzene', 'RER', 'nitrobenzene')nannannan0.000005nannan2.1237300.0000720.0001361352.081618-0.0000360.0000730.000329-0.000091
('market for nitrobenzene', 'RoW', 'nitrobenzene')nannannan0.000034nannan1.6420060.0000370.0000531095.9562760.0001220.0000390.000108-0.000151
('market for o-aminophenol', 'GLO', 'o-aminophenol')nannannan0.000022nannan2.0736910.0001410.000127919.9514670.0000850.0001420.000069-0.000130
('market for o-chlorobenzaldehyde', 'GLO', 'o-chlorobenzaldehyde')nannannan0.000047nannan3.3279420.0000480.0000451160.246295-0.0001030.0000510.000019-0.000376
('market for o-chlorotoluene', 'RER', 'o-chlorotoluene')nannannan0.000038nannan3.8172310.0000840.0000811606.4745080.0001180.0000880.000041-0.000374
('market for o-chlorotoluene', 'RoW', 'o-chlorotoluene')nannannan-0.000017nannan2.0419460.0001540.0001491644.651891-0.0000620.0001560.000012-0.000132
('market for o-cresol', 'GLO', 'o-cresol')nannannan0.000035nannan2.1570920.0001090.000105638.847826-0.0000050.0001100.000057-0.000196
('market for o-dichlorobenzene', 'RER', 'o-dichlorobenzene')nannannan0.000036nannan4.9189210.0000850.0000831050.447205-0.0000270.0000880.000021-0.000553
('market for o-dichlorobenzene', 'RoW', 'o-dichlorobenzene')nannannan-0.000007nannan2.6456660.0000830.0000791061.9917930.0000030.0000870.000002-0.000338
('market for o-nitrophenol', 'RER', 'o-nitrophenol')nannannan0.000032nannan1.9268610.0000850.000135890.5184880.0000700.0000860.000359-0.000066
('market for o-nitrophenol', 'RoW', 'o-nitrophenol')nannannan0.000035nannan1.8373730.0000330.000039886.5984990.0000620.0000330.000089-0.000167
('market for octabenzone', 'GLO', 'octabenzone')nannannan0.000034nannan3.3676510.0001090.000106455.9171770.0000230.0001110.000028-0.000212
('market for p-chlorophenol', 'GLO', 'p-chlorophenol')nannannan-0.000001nannan2.8202440.0000490.000049772.660180-0.0000180.0000500.000034-0.000343
('market for p-dichlorobenzene', 'RER', 'p-dichlorobenzene')nannannan0.000045nannan4.9189180.0000810.0000801050.447185-0.0000270.0000820.000021-0.000557
('market for p-dichlorobenzene', 'RoW', 'p-dichlorobenzene')nannannan-0.000007nannan2.6456670.0000830.0000791061.991793-0.0000440.0000870.000002-0.000338
('market for p-nitrophenol', 'GLO', 'p-nitrophenol')nannannan0.000023nannan1.8654870.0000920.000092887.0183560.0001190.0000950.000125-0.000126
('market for p-nitrotoluene', 'GLO', 'p-nitrotoluene')nannannan0.000003nannan1.0372640.0000980.0000932524.4747320.0000320.0001010.0000810.000010
('market for paraffin', 'GLO', 'paraffin')nannannan0.000035nannan6.9541600.0001470.0001451596.8851060.0000850.0001490.000034-0.000108
('market for pentaerythritol', 'GLO', 'pentaerythritol')nannannan0.000079nannan44.3158120.0001070.000105675.3200100.0007230.0001090.000013-0.000349
('market for pentane', 'GLO', 'pentane')nannannan-0.000014nannan1.1533090.0001960.000194334.9695920.0000410.0001960.0000380.000092
('market for phenol', 'GLO', 'phenol')nannannan0.000017nannan1.9057290.0001110.000109615.9392640.0000350.0001140.000043-0.000180
('market for phenolic resin', 'RER', 'phenolic resin')nannannan0.000013nannan2.8050640.0001020.000102435.694278-0.0000880.0001040.000065-0.000274
('market for phenolic resin', 'RoW', 'phenolic resin')nannannan0.000043nannan2.2117220.0000850.000081429.4609180.0000280.0000880.000069-0.000224
('market for phosgene, liquid', 'RER', 'phosgene, liquid')nannannan0.000036nannan9.1250270.0000710.000070738.9459610.0000000.0000740.000036-0.001155
('market for phosgene, liquid', 'RoW', 'phosgene, liquid')nannannan0.000080nannan3.0364570.0000660.000061722.4804260.0000340.0000680.000048-0.000395
('market for phthalic anhydride', 'GLO', 'phthalic anhydride')nannannan0.000032nannan3.4025420.0000700.0000691412.0703200.0000960.0000720.000017-0.000087
('market for phthalimide', 'GLO', 'phthalimide')nannannan0.000050nannan3.2546220.0000910.0000881585.0489840.0001090.0000930.000054-0.000110
('market for piperidine', 'GLO', 'piperidine')nannannan0.000019nannan2.6574990.0001020.000103710.3116310.0000710.0001070.000029-0.000116
('market for polyacrylamide', 'GLO', 'polyacrylamide')nannannan0.000025nannan2.0661120.0000180.000018562.8950740.0000150.0000190.000047-0.000147
('market for polyester resin, unsaturated', 'RER', 'polyester resin, unsaturated')nannannan0.000020nannan4.0323480.0001290.0001071226.811490-0.0000430.0001290.000012-0.000169
('market for polyester resin, unsaturated', 'RoW', 'polyester resin, unsaturated')nannannan0.000078nannan2.2139010.0000420.000039200.6485640.0000050.0000440.000006-0.066114
('market for polyol', 'RER', 'polyol')nannannan0.000009nannan0.0583780.0000680.000070193.2092040.0000150.0000720.0000670.000037
('market for polyol', 'RoW', 'polyol')nannannan0.000034nannan0.1302190.0001060.000109193.3813670.0000030.0001100.0000700.000090
('market for polysulfone', 'GLO', 'polysulfone')nannannan0.000050nannan2.4577810.0001110.000109775.5515580.0000050.0001150.000031-0.000270
('market for polyvinylfluoride', 'GLO', 'polyvinylfluoride')nannannan0.000037nannan2.3976460.0001360.000131526.1739140.0000490.0001380.000013-0.000242
('market for polyvinylfluoride, dispersion', 'GLO', 'polyvinylfluoride, dispersion')nannannan0.000036nannan2.4623690.0001470.000143391.046191-0.0000580.0001510.000038-0.000257
('market for polyvinylfluoride, film', 'GLO', 'polyvinylfluoride, film')nannannan0.000051nannan2.9248800.0001320.000128284.8098150.0000440.0001340.000041-0.000233
('market for propanal', 'RER', 'propanal')nannannan0.000036nannan12.7955330.0000330.0000331103.860146-0.0000730.0000350.000034-0.000398
('market for propanal', 'RoW', 'propanal')nannannan0.000014nannan4.4947410.0000790.000080900.2478720.0000080.0000800.000039-0.000175
('market for propionic acid', 'GLO', 'propionic acid')nannannan0.000016nannan2.8163080.0000680.000066569.941250-0.0000020.0000720.000039-0.000276
('market for propyl amine', 'GLO', 'propyl amine')nannannan0.000013nannan4.9097120.0000740.0000721053.8925800.0000050.0000770.000023-0.000228
('market for propylene', 'RER', 'propylene')nannannan0.000135nannan0.0053510.0001220.0001182546.834057-0.0000890.0001240.0001180.000098
('market for propylene', 'RoW', 'propylene')nannannan0.000077nannan0.0111890.0000420.0000402551.715896-0.0000020.0000430.0000960.000038
('market for propylene glycol, liquid', 'RER', 'propylene glycol, liquid')nannannan0.000045nannan4.8579010.0000600.0000591144.3323380.0000030.0000630.000037-0.000564
('market for propylene glycol, liquid', 'RoW', 'propylene glycol, liquid')nannannan0.000049nannan2.8957330.0000820.0000781142.2856350.0000310.0000850.000025-0.000339
('market for propylene oxide, liquid', 'RER', 'propylene oxide, liquid')nannannan0.000060nannan4.5373600.0001090.0001091138.956480-0.0000660.0001160.000014-0.000495
('market for propylene oxide, liquid', 'RoW', 'propylene oxide, liquid')nannannan0.000036nannan2.7694570.0001290.0001211154.817641-0.0000160.0001300.000014-0.000293
('market for propylene, pipeline system', 'RER', 'propylene, pipeline system')nannannan0.000073nannan0.0047810.0000370.0000351710.9297970.0000210.0000380.0000360.000040
('market for propylene, pipeline system', 'RoW', 'propylene, pipeline system')nannannan0.000018nannan0.010120-0.000002-0.0000031712.5037970.000004-0.0000010.000098-0.000001
('market for pyrazole', 'GLO', 'pyrazole')nannannan0.000057nannan3.0852940.0001400.000133978.3649150.0000080.0001410.000000-0.010525
('market for pyridine', 'GLO', 'pyridine')nannannan0.000046nannan2.5897760.0000490.000047669.576316-0.0000710.0000500.000008-0.000153
('market for refrigerant R134a', 'GLO', 'refrigerant R134a')nannannan0.000003nannan1.2289370.0000640.000048962.137902-0.0000330.0000660.000007-0.022953
('market for sodium chloroacetate', 'GLO', 'sodium chloroacetate')nannannan0.000064nannan5.7682860.0001050.000105686.0912870.0001050.0001070.000038-0.000359
('market for sodium ethoxide', 'GLO', 'sodium ethoxide')nannannan0.000041nannan3.7053380.0001350.000132867.551402-0.0000680.0001370.000034-0.000264
('market for sodium formate', 'RoW', 'sodium formate')nannannan-0.000071nannan61.0005070.0000330.000030-2237.5975530.0077600.0000350.0000440.000728
('market for sodium methoxide', 'GLO', 'sodium methoxide')nannannan0.000041nannan3.2635640.0000960.000093786.116527-0.0000740.0000990.000006-0.000374
('market for sodium phenolate', 'GLO', 'sodium phenolate')nannannan0.000017nannan2.5135200.0000910.000092733.5947100.0000430.0000930.000021-0.000266
('acetonitrile to generic market for solvent for chromatography analysis', 'GLO', 'solvent for chromatography analysis')nannannan1201.728492nannan395.062307465.063382458.1644283126.13553728.980764465.06768886.932558388.794637
('2-methylpentane to generic market for solvent, organic', 'GLO', 'solvent, organic')nannannan36.126574nannan60.03430251.79664651.4453671418.73260162.01387451.79670922.36172850.432696
('market for styrene', 'GLO', 'styrene')nannannan0.000014nannan1.5421940.0000920.000089312.387231-0.0001060.0000940.000009-0.000191
('market for tert-butyl amine', 'GLO', 'tert-butyl amine')nannannan0.000200nannan2.3365580.0001060.0001001178.145576-0.0000350.0001070.000025-0.000176
('market for tetrachloroethylene', 'RER', 'tetrachloroethylene')nannannan0.000007nannan0.0444420.0000200.000015106983.829937-0.0003410.0000220.0000050.038239
('market for tetrachloroethylene', 'RoW', 'tetrachloroethylene')nannannan0.000174nannan0.0505810.0003660.00027995791.349765-0.0000430.0003690.0000040.038327
('market for tetraethyl orthosilicate', 'GLO', 'tetraethyl orthosilicate')nannannan0.000040nannan4.0586500.0000690.0000664078.7809060.0000470.0000690.000014-0.000259
('market for tetrafluoroethane', 'GLO', 'tetrafluoroethane')nannannan0.000063nannan4.1755370.0001230.000115864.5229340.0000620.0001220.000039-0.000422
('market for tetrahydrofuran', 'GLO', 'tetrahydrofuran')nannannan0.000008nannan6.0673020.0001030.0001002203.3998710.0000730.0001030.000003-0.000293
('market for toluene diisocyanate', 'RER', 'toluene diisocyanate')nannannan0.000007nannan0.0064940.0000270.0000282966.9888110.0000040.0000300.0000650.000021
('market for toluene diisocyanate', 'RoW', 'toluene diisocyanate')nannannan0.000044nannan0.0132500.0000760.0000732986.6218540.0000060.0000770.0001880.000066
('market for toluene, liquid', 'RER', 'toluene, liquid')nannannan0.000085nannan0.0230660.0001350.00013314700.098499-0.0000110.0001380.0000340.000110
('market for toluene, liquid', 'RoW', 'toluene, liquid')nannannan0.000051nannan0.0492570.0000940.00009313437.231235-0.0000230.0000930.0000070.000082
('market for trichloroethylene', 'GLO', 'trichloroethylene')nannannan0.000037nannan3.5783410.0000790.000074729.8484290.0001650.0000810.000018-0.000451
('market for trichloromethane', 'RER', 'trichloromethane')nannannan0.000012nannan2.8284420.0001080.000104631.1012250.0002650.000110-0.000006-0.027057
('market for trichloromethane', 'RoW', 'trichloromethane')nannannan0.000056nannan1.2885790.0001220.000118524.0320590.0000410.0001250.000020-0.024657
('market for trichloropropane', 'RoW', 'trichloropropane')nannannan0.000054nannan3.9973450.0000630.000061719.126585-0.0000430.0000660.000041-0.000354
('market for triethanolamine', 'GLO', 'triethanolamine')nannannan0.000013nannan2.4328620.0000760.000074727.8073020.0000410.0000800.000018-0.000201
('market for triethylene glycol', 'RER', 'triethylene glycol')nannannan0.000024nannan5.1916180.0001260.000121750.5347380.0002460.0001290.000071-0.000446
('market for triethylene glycol', 'RoW', 'triethylene glycol')nannannan0.000003nannan1.9711640.0001420.000139907.5861500.0000420.0001470.000019-0.000106
('market for trifluoromethane', 'GLO', 'trifluoromethane')nannannan0.000004nannan3.1436010.0001450.000136905.546651-0.0000230.0001460.000015-0.020625
('market for trimesoyl chloride', 'GLO', 'trimesoyl chloride')nannannan0.000079nannan1.8570340.0000480.0000481075.6026680.0001750.0000520.0000510.046866
('market for trimethyl borate', 'GLO', 'trimethyl borate')nannannan0.000004nannan2.1001130.0001000.000099241.4555640.0000180.0001040.000037-0.000109
('market for trimethylamine', 'RER', 'trimethylamine')nannannan0.000011nannan2.1197120.0000460.000044778.941635-0.0000010.0000440.000015-0.000211
('market for trimethylamine', 'RoW', 'trimethylamine')nannannan0.000055nannan1.3990650.0000620.000063750.9175770.0000000.0000630.000045-0.000115
('market for triphenyl phosphate', 'GLO', 'triphenyl phosphate')nannannan0.000141nannan3.6386220.0000780.000076327.1972280.0000610.0000800.000017-0.002064
('market for tris(2,4-ditert-butylphenyl) phosphite', 'GLO', 'tris(2,4-ditert-butylphenyl) phosphite')nannannan0.000108nannan2.4008780.0000890.000082218.2189070.0000530.0000900.000042-0.001159
('market for urea formaldehyde resin', 'RER', 'urea formaldehyde resin')nannannan0.000038nannan3.5439300.0000740.0000733433.022707-0.0000110.0000770.000026-0.000177
('market for urea formaldehyde resin', 'RoW', 'urea formaldehyde resin')nannannan0.000012nannan2.7922780.0001240.0001223315.665878-0.0000040.0001240.000016-0.000128
('market for vinyl acetate', 'GLO', 'vinyl acetate')nannannan0.000029nannan3.0727640.0000680.0000671129.048086-0.0000030.0000730.000059-0.000268
('market for vinyl chloride', 'RER', 'vinyl chloride')nannannan0.000099nannan-0.0022730.0000510.0000509716.6891520.0000210.0000530.000123-0.009484
('market for vinyl chloride', 'RoW', 'vinyl chloride')nannannan0.000252nannan0.0049190.0001330.0001329738.822422-0.0000030.0001360.000261-0.009378
('market for vinyl fluoride', 'GLO', 'vinyl fluoride')nannannan0.000031nannan2.8619450.0001490.000148891.185218-0.0000610.0001540.000076-0.000273
('market for wax, lost-wax casting', 'GLO', 'wax, lost-wax casting')nannannan0.000053nannan5.4102140.0001850.0001841497.0260130.0001770.0001870.000024-0.000076
('market for white spirit', 'GLO', 'white spirit')nannannan0.000017nannan2.9779300.0000760.000072283.801913-0.0000140.0000770.000005-0.000268
('market for xylene', 'RER', 'xylene')nannannan0.000039nannan0.0217450.0000850.00008510130.802268-0.0000090.0000870.0000310.000066
('market for xylene', 'RoW', 'xylene')nannannan0.000066nannan0.0464920.0001120.0001099386.804761-0.0000020.0001130.0000280.000094
('market for turpentine', 'GLO', 'turpentine')nannannan0.000119nannan55.6863350.0000630.0000611469.8397650.0020800.0000640.000032-0.002041
('market for toner, colour, powder', 'GLO', 'toner, colour, powder')nannannan-0.000006nannan1.6473090.0000670.000064687.075983-0.0000180.0000690.000040-0.000264
('market for toner, black, powder', 'GLO', 'toner, black, powder')nannannan0.000043nannan1.8038050.0001240.000117594.5370070.0000310.0001230.000083-0.000216
('market for solvent for paint', 'GLO', 'solvent for paint')nannannan0.000009nannan13.1570250.0001440.000139304.9623550.0000070.0001470.000026-0.000231
('market for rosin size, for paper production', 'RoW', 'rosin size, for paper production')nannannan0.000080nannan1.8509480.0000520.000051-21.4680420.0000040.0000560.000116-0.571000
('market for rosin size, for paper production', 'RER', 'rosin size, for paper production')nannannan0.000084nannan1.2133730.0000580.000064-21.702336-0.0000020.0000610.000142-0.580125
('market for retention aid, for paper production', 'RoW', 'retention aid, for paper production')nannannan0.000044nannan1.7195190.0000830.000081258.0535320.0000400.0000860.000017-0.000095
('market for retention aid, for paper production', 'RER', 'retention aid, for paper production')nannannan0.000008nannan3.1243010.0000660.000064295.835916-0.0000110.0000680.000072-0.000248
('market for printing ink, rotogravure, without solvent, in 55% toluene solution state', 'RoW', 'printing ink, rotogravure, without solvent, in 55% toluene solution state')nannannan0.000172nannan5.5453080.0000720.00007441.5525550.0000110.0000770.000084-0.000348
('market for printing ink, rotogravure, without solvent, in 55% toluene solution state', 'RER', 'printing ink, rotogravure, without solvent, in 55% toluene solution state')nannannan0.000087nannan6.3501800.0000500.00004555.5596780.0000040.0000470.000074-0.000447
('market for printing ink, offset, without solvent, in 47.5% solution state', 'RoW', 'printing ink, offset, without solvent, in 47.5% solution state')nannannan0.000108nannan4.6177640.0000470.00004340.9147440.0000050.0000460.000065-0.028832
('market for printing ink, offset, without solvent, in 47.5% solution state', 'RER', 'printing ink, offset, without solvent, in 47.5% solution state')nannannan0.000156nannan5.5277680.0000100.00001355.0100740.0000070.0000110.000015-0.032317
('tin dioxide to generic market for polishing powder', 'GLO', 'polishing powder')nannannan-68.736385nannan175.935365151.714182155.3210371638.4242023.800200151.714780301.510740150.721946
('market for pitch despergents, in paper production', 'RoW', 'pitch despergents, in paper production')nannannan0.000048nannan1.0406580.0000760.0000764082.005654-0.0000180.0000790.000010-0.000043
('market for pitch despergents, in paper production', 'RER', 'pitch despergents, in paper production')nannannan0.000027nannan1.6505550.0000310.0000294902.842438-0.0000160.0000320.000038-0.000143
('market for optical brighteners, for paper production', 'RoW', 'optical brighteners, for paper production')nannannan0.000040nannan0.3349830.0001440.000142208911.392222-0.0005360.0001440.0000590.000126
('market for optical brighteners, for paper production', 'RER', 'optical brighteners, for paper production')nannannan0.000048nannan0.3333430.0001160.000113214661.406015-0.0004330.0001140.0000640.000096
('market for lubricating oil', 'RoW', 'lubricating oil')nannannan-0.000002nannan3.3467720.0001010.000097436.0232900.0000550.0001030.000059-0.000341
('market for lubricating oil', 'RER', 'lubricating oil')nannannan0.000020nannan5.0998620.0001140.000113479.2934570.0000480.0001140.000051-0.000502
('market for latex', 'RoW', 'latex')nannannan0.000072nannan0.0390430.0000520.00005254729.2778840.0000090.0000550.0000580.000034
('market for latex', 'RER', 'latex')nannannan0.000017nannan0.0194490.0000480.00004679823.2199470.0000340.0000470.0000760.000027
('krypton to generic market for inert gas for discharge lamps', 'GLO', 'inert gas for discharge lamps')nannannan6905.448393nannan6529.8870266347.3452936348.14147021813.1047196333.2060976347.3455216377.1902036344.066873
('sand to generic market for inert filler', 'GLO', 'inert filler')nannannan-67.659435nannan-66.543423-69.428266-69.3233993145.714139-433.615523-69.428387-68.888918-69.130890
('market for heavy water', 'GLO', 'heavy water')nannannan0.000002nannan1.7852730.0000740.000074-52.7284860.0000100.0000780.000033-0.000168
('market for flux, for wave soldering', 'GLO', 'flux, for wave soldering')nannannan0.000059nannan1.8666810.0000680.000067290.7798670.0000110.0000720.000031-0.000144
('market for explosive, tovex', 'GLO', 'explosive, tovex')nannannan0.000027nannan4.5217960.0000750.000099245.343015-0.0000160.0000800.000172-0.010532
('market for enzymes', 'GLO', 'enzymes')nannannan0.000131nannan1.8886300.0000420.00005020.779045-0.0000540.0000460.000179-0.001279
('market for deinking emulsion, in paper production', 'RoW', 'deinking emulsion, in paper production')nannannan0.000112nannan1.5688040.0000510.000049354.820386-0.0000020.0000520.000038-0.129675
('market for deinking emulsion, in paper production', 'RER', 'deinking emulsion, in paper production')nannannan0.000147nannan1.8990740.0000360.000035359.424183-0.0000040.0000370.000098-0.139595
('market for deinked pulp, wet lap', 'GLO', 'deinked pulp, wet lap')nannannan0.000181nannan49.0182500.0000850.000082-130.966433-0.0024480.0000850.000045-0.001083
('sodium chloride to generic market for de-icer', 'GLO', 'de-icer')nannannan-85.352442nannan-63.442446-62.375203-61.836883226.752449-53.147826-62.375181-49.194645-62.824156
('market for coating powder', 'RoW', 'coating powder')nannannan0.000038nannan4.6231200.0000520.000050123.133486-0.0000140.0000530.000082-0.013474
('market for coating powder', 'RER', 'coating powder')nannannan0.000027nannan9.3152920.0000590.000058203.3288520.0000580.000063-0.000007-0.000478
('market for cationic resin', 'RoW', 'cationic resin')nannannan0.000046nannan1.6449660.0000720.000071213.133283-0.0000330.0000730.000048-0.000097
('market for cationic resin', 'RER', 'cationic resin')nannannan0.000014nannan1.7970360.0000630.000064265.400809-0.0000070.0000660.000028-0.000159
('market for anionic resin', 'RoW', 'anionic resin')nannannan0.000056nannan1.5792980.0000950.000093212.7403410.0000190.0000980.000014-0.006730
('market for anionic resin', 'RER', 'anionic resin')nannannan0.000090nannan2.2020720.0001130.000110227.541383-0.0000050.0001120.000007-0.007217
('market for alkylketene dimer sizing agent, for paper production', 'RoW', 'alkylketene dimer sizing agent, for paper production')nannannan0.000128nannan0.9167220.0000140.000019-9.511427-0.0000070.0000200.000124-0.319868
('market for alkylketene dimer sizing agent, for paper production', 'RER', 'alkylketene dimer sizing agent, for paper production')nannannan0.000087nannan1.0045570.0000220.000024-8.153482-0.0000140.0000260.000077-0.327583
('market for adhesive, for metal', 'RoW', 'adhesive, for metal')nannannan0.000122nannan3.1977770.0000370.000037369.5260060.0001880.0000390.000017-0.000280
('market for adhesive, for metal', 'RER', 'adhesive, for metal')nannannan0.000215nannan3.6734980.0000760.000075385.0578240.0000150.0000780.000049-0.000305
('market for wood preservative, organic salt, Cr-free', 'GLO', 'wood preservative, organic salt, Cr-free')nannannan0.000047nannan5.1839030.0001050.000104337.4528200.0001450.0001060.000048-0.037367
('market for wood preservative, inorganic salt, containing Cr', 'GLO', 'wood preservative, inorganic salt, containing Cr')nannannan0.000049nannan6.6760860.0001510.000147175.329226-0.0000710.0001530.000024-0.003603
('market for wood preservative, creosote', 'GLO', 'wood preservative, creosote')nannannan0.000025nannan3.1011200.0001020.000100-20.9405790.0000390.0001010.000036-0.000504
('market for triazine-compound, unspecified', 'GLO', 'triazine-compound, unspecified')nannannan0.000023nannan3.4367920.0000460.0000431001.167133-0.0000220.0000470.000027-0.000298
('market for pyridine-compound', 'GLO', 'pyridine-compound')nannannan0.000046nannan4.4238000.0000900.000089999.0869950.0001130.0000920.000021-0.000361
('market for pyridazine-compound', 'GLO', 'pyridazine-compound')nannannan0.000095nannan4.1088220.0000650.000062405.855505-0.0000080.0000660.000016-0.001122
('market for pyrethroid-compound', 'GLO', 'pyrethroid-compound')nannannan0.000051nannan4.8373230.0001030.000100-970.8694720.0001090.0001070.000018-0.000211
('market for prosulfocarb', 'GLO', 'prosulfocarb')nannannan0.000036nannan5.3617500.0000760.0000771112.6589920.0000910.0000800.000063-0.000327
('market for phthalimide-compound', 'GLO', 'phthalimide-compound')nannannan0.000027nannan4.4698670.0001130.000112-185.873836-0.0000050.0001180.0000330.000752
('market for phenoxy-compound', 'GLO', 'phenoxy-compound')nannannan-0.000000nannan4.1467190.0001400.0001391070.2581960.0000620.0001450.000037-0.000292
('market for pesticide, unspecified', 'GLO', 'pesticide, unspecified')nannannan0.000075nannan4.2680250.0000860.000082100.1971310.0000450.0000860.000032-0.000789
('market for pendimethalin', 'GLO', 'pendimethalin')nannannan0.000036nannan3.2695340.0000760.0000741369.7285850.0001200.0000770.000068-0.000096
('market for organophosphorus-compound, unspecified', 'GLO', 'organophosphorus-compound, unspecified')nannannan0.000016nannan4.0623450.0000700.000072524.6551300.0000160.0000730.000113-0.002244
('market for orbencarb', 'GLO', 'orbencarb')nannannan0.000070nannan4.5542020.0001390.000135-57.957691-0.0000590.0001410.000040-0.023855
('market for nitrile-compound', 'GLO', 'nitrile-compound')nannannan0.000019nannan4.8013650.0001310.000129-4899.2409710.0000020.0001340.000018-0.002222
('market for napropamide', 'GLO', 'napropamide')nannannan0.000022nannan5.9940180.0000890.000087-628.642553-0.0000250.0000920.000062-0.011124
('market for metolachlor', 'GLO', 'metolachlor')nannannan0.000044nannan3.6040270.0000780.0000741285.7708530.0000710.0000800.000078-0.000250
('market for metamitron', 'GLO', 'metamitron')nannannan0.000064nannan4.6896060.0000790.0000751142.1845430.0000420.0000820.000037-0.000411
('market for metaldehyde', 'GLO', 'metaldehyde')nannannan0.000048nannan4.0001670.0001260.000124604.886322-0.0000210.0001270.000058-0.000154
('market for mecoprop', 'GLO', 'mecoprop')nannannan0.000022nannan4.1241020.0000760.000075827.268870-0.0000990.0000760.000055-0.000381
('market for mancozeb', 'GLO', 'mancozeb')nannannan0.000036nannan4.8313050.0000710.000067568.9015580.0000520.0000720.000011-0.015931
('market for isoproturon', 'GLO', 'isoproturon')nannannan0.000013nannan3.9613980.0001130.0001081030.7986400.0000270.0001190.000054-0.000261
('market for glyphosate', 'GLO', 'glyphosate')nannannan0.000190nannan4.2807700.0000790.000078660.5680240.0000140.0000820.000025-0.002271
('market for fosetyl-Al', 'GLO', 'fosetyl-Al')nannannan0.000114nannan3.8796090.0000830.000075550.438064-0.0000090.0000870.000045-0.002190
('market for folpet', 'GLO', 'folpet')nannannan0.000028nannan4.2152840.0000650.000063487.6424390.0002190.0000690.000046-0.000292
('market for dithiocarbamate-compound', 'GLO', 'dithiocarbamate-compound')nannannan0.000011nannan4.3955640.0001220.000113563.8379600.0000500.0001220.000021-0.015470
('market for diphenylether-compound', 'GLO', 'diphenylether-compound')nannannan0.000006nannan3.8225270.0001110.0001031054.9093080.0002830.0001150.000028-0.000280
('market for dinitroaniline-compound', 'GLO', 'dinitroaniline-compound')nannannan0.000011nannan3.5592830.0001490.0001381078.1333640.0000810.0001510.000055-0.000173
('market for dimethenamide', 'GLO', 'dimethenamide')nannannan0.000023nannan4.6350340.0001070.0001041077.5131560.0000670.0001070.000039-0.000359
('market for diazole-compound', 'GLO', 'diazole-compound')nannannan0.000015nannan4.2237230.0000760.000074327.3985720.0000020.0000810.000019-0.002392
('market for diazine-compound', 'GLO', 'diazine-compound')nannannan0.000053nannan4.3193120.0000900.000085-549.259874-0.0001190.0000890.0000480.002021
('market for cyclic N-compound', 'GLO', 'cyclic N-compound')nannannan0.000007nannan4.8079080.0001200.000114-806.0386640.0000860.0001250.0000340.002283
('market for chlorotoluron', 'GLO', 'chlorotoluron')nannannan0.000048nannan4.4011690.0000450.0000511174.2164510.0000910.0000510.000106-0.000329
('market for chlorothalonil', 'GLO', 'chlorothalonil')nannannan0.000068nannan3.8113400.0000460.0000411288.6882490.0000810.0000490.000021-0.000370
('market for captan', 'GLO', 'captan')nannannan0.000008nannan4.1761530.0000600.000056917.689374-0.0000180.0000630.000041-0.000348
('market for bipyridylium-compound', 'GLO', 'bipyridylium-compound')nannannan0.000065nannan4.1088260.0000650.000062405.855505-0.0000080.0000690.000016-0.001122
('market for benzoic-compound', 'GLO', 'benzoic-compound')nannannan0.000150nannan4.1088300.0000730.000068405.855505-0.0000080.0000740.000016-0.001112
('market for benzo[thia]diazole-compound', 'GLO', 'benzo[thia]diazole-compound')nannannan0.000192nannan4.1088340.0000810.000077405.855505-0.0000080.0000820.000016-0.001112
('market for benzimidazole-compound', 'GLO', 'benzimidazole-compound')nannannan-0.000001nannan4.0827070.0001210.0001121042.548972-0.0001500.0001250.000028-0.000301
('market for atrazine', 'GLO', 'atrazine')nannannan0.000100nannan3.5227030.0000700.000068971.6835770.0000320.0000710.000014-0.000297
('market for ammonium nitrite', 'GLO', 'ammonium nitrite')nannannan0.000032nannan3.0202570.0000910.0000881284.0796500.0000390.0000950.000015-0.000252
('market for aclonifen', 'GLO', 'aclonifen')nannannan0.000026nannan4.3247410.0000530.0000521013.5196220.0000060.0000580.000073-0.000357
('market for acetamide-anillide-compound, unspecified', 'GLO', 'acetamide-anillide-compound, unspecified')nannannan0.000007nannan3.8737880.0000780.000075966.476706-0.0000200.0000810.000043-0.002142
('market for 2,4-dichlorotoluene', 'GLO', '2,4-dichlorotoluene')nannannan0.000045nannan3.0719120.0001010.0000971356.751033-0.0001020.0001050.000024-0.000322
('market for 2,4-dichlorophenol', 'GLO', '2,4-dichlorophenol')nannannan0.000022nannan3.1692270.0000620.000063823.8146810.0000420.0000650.000029-0.000387
('market for [thio]carbamate-compound', 'GLO', '[thio]carbamate-compound')nannannan0.000058nannan4.3090960.0001090.000108-737.2871310.0000070.0001120.000097-0.004110
('market for [sulfonyl]urea-compound', 'GLO', '[sulfonyl]urea-compound')nannannan0.000047nannan4.0845330.0001070.0001011018.832151-0.0000090.0001100.0000430.001303
('market for silicone product', 'RoW', 'silicone product')nannannan0.000091nannan7.5621030.0001080.0001031332.8103290.0000360.0001110.0000210.002230
('market for silicone product', 'RER', 'silicone product')nannannan0.000052nannan9.0176360.0001140.0001111435.473750-0.0001880.0001160.0000170.002265
('market for silicon, solar grade', 'GLO', 'silicon, solar grade')nannannan0.000028nannan6.3384690.0001310.000125978.1076250.0000480.000130-0.000003-0.000169
('market for silicon, multi-Si, casted', 'RoW', 'silicon, multi-Si, casted')nannannan0.000046nannan5.5312250.0001330.0001333223.087389-0.0000540.0001380.000039-0.000402
('market for silicon, multi-Si, casted', 'RER', 'silicon, multi-Si, casted')nannannan0.000047nannan6.8396670.0001000.0000993172.3241230.0000440.0001030.000049-0.000566
('market for silicon, multi-Si, casted', 'CA-QC', 'silicon, multi-Si, casted')nannannan0.000040nannan5.8686480.0000920.0000904314.572890-0.0000880.0000940.000025-0.000486
('market for silicon, metallurgical grade', 'GLO', 'silicon, metallurgical grade')nannannan0.000021nannan18.5257330.0000580.000057604.201944-0.0003180.0000620.000046-0.000336
('market for silicon, electronics grade', 'GLO', 'silicon, electronics grade')nannannan0.000013nannan6.7233850.0001430.0001406176.6662860.0000310.0001440.000048-0.001323
('market for polydimethylsiloxane', 'GLO', 'polydimethylsiloxane')nannannan0.000034nannan8.2166820.0000590.000056250.623654-0.0003450.000059-0.0000090.004901
('market for fluorescent whitening agent, distyrylbiphenyl type', 'GLO', 'fluorescent whitening agent, distyrylbiphenyl type')nannannan0.000093nannan0.2471700.0001940.000193308310.4068230.0000360.0001980.0001070.000182
('market for fluorescent whitening agent, DAS1, triazinylaminostilben type', 'GLO', 'fluorescent whitening agent, DAS1, triazinylaminostilben type')nannannan0.000021nannan0.5064270.0000160.000018121117.3190510.0008360.000020-0.000001-0.000006
('market for carboxymethyl cellulose, powder', 'GLO', 'carboxymethyl cellulose, powder')nannannan0.000038nannan21.7167550.0000690.000064564.143550-0.0004290.0000730.000041-0.000370
('market for sodium percarbonate, powder', 'RoW', 'sodium percarbonate, powder')nannannan0.000101nannan5.1451080.0001410.0001392791.443110-0.0000180.0001450.000108-0.000233
('market for sodium percarbonate, powder', 'RER', 'sodium percarbonate, powder')nannannan0.000063nannan7.7674420.0001190.0001172796.671391-0.0000310.0001190.000118-0.000485
('market for sodium perborate, tetrahydrate, powder', 'RoW', 'sodium perborate, tetrahydrate, powder')nannannan0.000009nannan2.8349050.0000040.000003257.256807-0.0000080.0000030.000001-0.000332
('market for sodium perborate, tetrahydrate, powder', 'RER', 'sodium perborate, tetrahydrate, powder')nannannan0.000007nannan4.3273310.0000470.000047265.0352190.0000080.0000510.000047-0.000371
('market for sodium perborate, monohydrate, powder', 'GLO', 'sodium perborate, monohydrate, powder')nannannan0.000142nannan3.9553630.0001420.000141258.8984500.0000960.0001490.000149-0.000182
('market for zeolite, slurry, without water, in 50% solution state', 'RoW', 'zeolite, slurry, without water, in 50% solution state')nannannan-0.000005nannan3.327051-0.000006-0.000006881.7154410.000011-0.0000060.000003-0.000375
('market for zeolite, slurry, without water, in 50% solution state', 'RER', 'zeolite, slurry, without water, in 50% solution state')nannannan0.000008nannan3.7575160.0000280.000027909.455556-0.0000810.0000310.000035-0.000381
('market for zeolite, powder', 'GLO', 'zeolite, powder')nannannan0.000100nannan3.5891650.0001730.000170987.5480700.0000730.0001740.000081-0.000222
('market for sodium tripolyphosphate', 'GLO', 'sodium tripolyphosphate')nannannan0.000066nannan3.8705870.0001270.000122691.217216-0.0000540.0001290.000058-0.004054
('market for sodium metasilicate pentahydrate, 58% active substance, powder', 'RoW', 'sodium metasilicate pentahydrate, 58% active substance, powder')nannannan0.000033nannan4.3637740.0000470.000044750.0095200.0001040.0000510.000035-0.000488
('market for sodium metasilicate pentahydrate, 58% active substance, powder', 'RER', 'sodium metasilicate pentahydrate, 58% active substance, powder')nannannan0.000031nannan5.1883810.0001230.000120785.8482630.0000280.0001210.000053-0.000506
('market for polycarboxylates, 40% active substance', 'RoW', 'polycarboxylates, 40% active substance')nannannan0.000151nannan2.8366830.0001880.000186412.8271480.0000340.0001900.000113-0.000109
('market for polycarboxylates, 40% active substance', 'RER', 'polycarboxylates, 40% active substance')nannannan0.000014nannan3.7498820.0000150.000015424.9877550.0000020.0000180.000004-0.000373
('market for layered sodium silicate, SKS-6, powder', 'GLO', 'layered sodium silicate, SKS-6, powder')nannannan0.000027nannan3.3932530.0000320.000030682.911418-0.0000290.0000320.000007-0.000345
('market for soap', 'GLO', 'soap')nannannan0.000145nannan1.1312040.0000300.000035-25.226614-0.0000050.0000360.000153-0.641266
('market for non-ionic surfactant', 'GLO', 'non-ionic surfactant')nannannan0.000117nannan2.2724220.0000610.00006016.754300-0.0000010.0000620.000076-0.225693
('market for fatty alcohol sulfate', 'GLO', 'fatty alcohol sulfate')nannannan0.000105nannan3.3223300.0000880.00008619.097382-0.0000030.0000910.000076-0.351675
('market for ethoxylated alcohol (AE7)', 'RoW', 'ethoxylated alcohol (AE7)')nannannan-0.000027nannan2.9712600.0000520.000050189.2276350.0000150.0000510.000102-0.038427
('market for ethoxylated alcohol (AE7)', 'RER', 'ethoxylated alcohol (AE7)')nannannan0.000040nannan5.3313400.0000080.000009207.954988-0.0000080.0000130.000043-0.045123
('market for ethoxylated alcohol (AE3)', 'RoW', 'ethoxylated alcohol (AE3)')nannannan0.000099nannan3.0531350.0000800.00007621.9461290.0000090.0000820.000098-0.301780
('market for ethoxylated alcohol (AE3)', 'RER', 'ethoxylated alcohol (AE3)')nannannan0.000050nannan5.5467280.0000600.000059191.8775410.0000220.0000650.000060-0.060608
('market for ethoxylated alcohol (AE11)', 'GLO', 'ethoxylated alcohol (AE11)')nannannan0.000067nannan1.7801170.0000330.00003398.247642-0.0000050.0000350.000091-0.264059
('market for ethoxylated alcohol (AE>20)', 'GLO', 'ethoxylated alcohol (AE>20)')nannannan0.000041nannan1.7297690.0000720.000071205.430702-0.0000160.0000750.000045-0.135775
('market for esterquat', 'RoW', 'esterquat')nannannan0.000100nannan2.5081660.0000760.00007938.6906730.0000100.0000770.000183-0.491820
('market for esterquat', 'RER', 'esterquat')nannannan0.000176nannan2.7214780.0000630.00006439.408936-0.0000020.0000620.000140-0.513812
('market for alkylbenzene sulfonate, linear, petrochemical', 'GLO', 'alkylbenzene sulfonate, linear, petrochemical')nannannan-0.000011nannan5.0571970.0001100.000108719.6915340.0000030.0001100.000008-0.000530
('market for acrylic filler', 'RER', 'acrylic filler')nannannan-0.000004nannan6.7078180.000002-0.000001343.541639-0.0000000.0000030.000003-0.000430
('market for acrylic filler', 'RoW', 'acrylic filler')nannannan-0.000004nannan3.375354-0.0000000.000001321.958918-0.0000000.0000040.000006-0.000331
('market for acrylic varnish, without water, in 87.5% solution state', 'RER', 'acrylic varnish, without water, in 87.5% solution state')nannannan0.000002nannan9.5134430.000001-0.000000164.619563-0.0000020.0000030.000004-0.000503
('market for acrylic varnish, without water, in 87.5% solution state', 'RoW', 'acrylic varnish, without water, in 87.5% solution state')nannannan-0.000001nannan4.208079-0.000000-0.000001123.264607-0.0000040.0000010.000007-0.000334
('market for acrylonitrile-butadiene-styrene copolymer', 'GLO', 'acrylonitrile-butadiene-styrene copolymer')nannannan0.000004nannan0.3205930.0000020.0000051375.2316970.0000030.0000040.000004-0.000033
('market for alkyd paint, white, without solvent, in 60% solution state', 'RER', 'alkyd paint, white, without solvent, in 60% solution state')nannannan-0.000002nannan7.6126320.0000020.00000268.524854-0.0000030.0000040.000003-0.000448
('market for alkyd paint, white, without solvent, in 60% solution state', 'RoW', 'alkyd paint, white, without solvent, in 60% solution state')nannannan-0.000001nannan5.395372-0.000002-0.00000328.840294-0.0000050.000000-0.000001-0.000381
('market for alkyd paint, white, without water, in 60% solution state', 'RER', 'alkyd paint, white, without water, in 60% solution state')nannannan0.000003nannan9.917424-0.0000000.00000479.941633-0.0000020.0000050.000004-0.000413
('market for alkyd paint, white, without water, in 60% solution state', 'RoW', 'alkyd paint, white, without water, in 60% solution state')nannannan-0.000001nannan7.050060-0.000002-0.00000436.548621-0.0000030.0000000.000002-0.000353
('market for cadmium', 'GLO', 'cadmium')nannannan0.000012nannan4.8350690.000001-0.000002345.0632940.0000060.0000020.000004-0.000625
('market for cadmium, semiconductor-grade', 'GLO', 'cadmium, semiconductor-grade')nannannan0.000007nannan3.386432-0.000004-0.000002233.610484-0.000001-0.0000020.000002-0.000528
('market for charcoal', 'GLO', 'charcoal')nannannan0.000005nannan51.6069020.0000010.0000033784.3919320.0000020.0000020.000009-0.000535
('market for diesel', 'CH', 'diesel')nannannan-0.000000nannan1.055405-0.000003-0.000002517.164839-0.000004-0.000001-0.000002-0.000116
('market for diesel', 'Europe without Switzerland', 'diesel')nannannan-0.000001nannan1.303370-0.000001-0.000000423.8541500.000001-0.0000000.000002-0.000156
('market group for diesel', 'GLO', 'diesel')nannannan0.000004nannan1.080704-0.0000000.000001421.3321310.0000010.0000030.000004-0.000130
('market group for diesel', 'RER', 'diesel')nannannan0.000002nannan1.3018550.0000010.000002424.4253410.0000050.0000050.000006-0.000154
('market for diesel', 'RoW', 'diesel')nannannan0.000002nannan0.909176-0.000001-0.000001418.8181740.0000000.0000010.000002-0.000113
('market for diesel, low-sulfur', 'CH', 'diesel, low-sulfur')nannannan0.000002nannan1.6887420.000003-0.000001447.232084-0.0000030.0000020.000002-0.000136
('market for diesel, low-sulfur', 'Europe without Switzerland', 'diesel, low-sulfur')nannannan0.000004nannan1.981389-0.0000010.000001425.4163250.0000030.0000020.000003-0.000156
('market group for diesel, low-sulfur', 'GLO', 'diesel, low-sulfur')nannannan0.000001nannan1.325825-0.0000020.000000416.7716620.0000010.0000020.000003-0.000121
('market group for diesel, low-sulfur', 'RER', 'diesel, low-sulfur')nannannan0.000002nannan1.9739800.000003-0.000000425.9533950.0000030.0000050.000005-0.000153
('market for diesel, low-sulfur', 'RoW', 'diesel, low-sulfur')nannannan-0.000000nannan1.151879-0.000001-0.000003414.1997660.0000020.0000020.000003-0.000111
('market for electrolyte, KOH, LiOH additive', 'GLO', 'electrolyte, KOH, LiOH additive')nannannan0.000004nannan4.044029-0.000001-0.000001863.791914-0.0000010.0000020.000005-0.000553
('market for electrostatic paint', 'GLO', 'electrostatic paint')nannannan-0.000006nannan4.562183-0.000007-0.000003117.387125-0.0000130.0000010.000000-0.000298
('market for enriched uranium, 4.2%', 'GLO', 'enriched uranium, 4.2%')nannannan0.000002nannan2.5084880.0000020.00000526.5772410.0000030.000003-0.000001-0.006402
('market for ethanol, without water, in 95% solution state, from fermentation', 'GLO', 'ethanol, without water, in 95% solution state, from fermentation')nannannan-0.000001nannan18.7641980.0000040.0000031.3075150.0000020.0000050.000006-1.412310
('market for ethanol, without water, in 99.7% solution state, from fermentation', 'GLO', 'ethanol, without water, in 99.7% solution state, from fermentation')nannannan-0.000001nannan2.3325280.0000010.000001-0.838620-0.0000070.0000020.000006-2.952153
('ethanol, from fermentation, to niche market for ethanol, at service station', 'CH', 'ethanol, without water, in 99.7% solution state, from fermentation, at service station')nannannan-0.093637nannan0.213696-1.445627-1.27540361.158890-0.521687-1.445632-0.110942-1.090941
('ethanol, from fermentation, to niche market for ethanol, at service station', 'RoW', 'ethanol, without water, in 99.7% solution state, from fermentation, at service station')nannannan-0.079867nannan1.778372-1.481541-1.520424-0.909208-0.086000-1.481967-0.182572-4.383459
('market for ethyl tert-butyl ether', 'GLO', 'ethyl tert-butyl ether')nannannan0.000004nannan2.1824620.0000030.0000021.023158-0.0000010.0000060.000008-1.975269
('market for frit, for cathode ray tube display', 'GLO', 'frit, for cathode ray tube display')nannannan0.000002nannan2.961704-0.000001-0.00000260.914224-0.0000010.0000040.000006-0.000588
('market for frit, for ceramic tile', 'GLO', 'frit, for ceramic tile')nannannan0.000001nannan5.769065-0.000002-0.0000036.766774-0.000005-0.0000020.000006-0.000557
('market for gallium, semiconductor-grade', 'GLO', 'gallium, semiconductor-grade')nannannan-0.000004nannan2.258371-0.000007-0.000008450.116363-0.0000070.000001-0.000001-0.012870
('market for heavy fuel oil', 'CH', 'heavy fuel oil')nannannan-0.000002nannan1.071151-0.0000010.000001520.341848-0.0000040.0000020.000000-0.000129
('market for heavy fuel oil', 'Europe without Switzerland', 'heavy fuel oil')nannannan-0.000003nannan1.459495-0.000004-0.000008423.831941-0.000005-0.000001-0.000004-0.000187
('market group for heavy fuel oil', 'RER', 'heavy fuel oil')nannannan0.000004nannan1.458129-0.0000030.000002424.171698-0.0000050.0000010.000000-0.000184
('market for heavy fuel oil', 'RoW', 'heavy fuel oil')nannannan0.000002nannan0.945132-0.000002-0.000002418.506599-0.0000080.000000-0.000003-0.000132
('market for indium', 'GLO', 'indium')nannannan-0.000002nannan2.968136-0.000004-0.000006-22.307443-0.000006-0.000001-0.000004-0.000586
('market for indium tin oxide powder, nanoscale, for sputtering target', 'RER', 'indium tin oxide powder, nanoscale, for sputtering target')nannannan0.000000nannan4.063091-0.000007-0.000007-3.646525-0.000006-0.000007-0.000001-0.000710
('market for indium tin oxide powder, nanoscale, for sputtering target', 'RoW', 'indium tin oxide powder, nanoscale, for sputtering target')nannannan0.000003nannan2.747995-0.000002-0.000003-9.178789-0.000002-0.0000020.000003-0.000537
('market for kerosene', 'CH', 'kerosene')nannannan0.000000nannan1.087027-0.000001-0.000007450.058740-0.000004-0.000001-0.000002-0.000130
('market for kerosene', 'Europe without Switzerland', 'kerosene')nannannan-0.000002nannan1.205780-0.000003-0.000003427.061945-0.000006-0.000001-0.000003-0.000154
('market for kerosene', 'RoW', 'kerosene')nannannan-0.000000nannan0.832761-0.000005-0.000003423.976408-0.000003-0.000001-0.000002-0.000106
('market for light fuel oil', 'CH', 'light fuel oil')nannannan-0.000001nannan1.110450-0.000001-0.000000449.8095990.0000000.0000010.000003-0.000130
('market for light fuel oil', 'Europe without Switzerland', 'light fuel oil')nannannan0.000000nannan1.237878-0.000004-0.000005426.081019-0.000002-0.0000010.000002-0.000156
('market group for light fuel oil', 'RER', 'light fuel oil')nannannan0.000004nannan1.234444-0.0000030.000000426.7006680.0000020.0000040.000004-0.000152
('market for light fuel oil', 'RoW', 'light fuel oil')nannannan0.000002nannan0.835085-0.000002-0.000004422.656642-0.0000010.0000000.000001-0.000107
('market for liquefied petroleum gas', 'CH', 'liquefied petroleum gas')nannannan0.000006nannan1.0580310.000000-0.000000500.0930380.0000040.0000040.000004-0.000116
('market for liquefied petroleum gas', 'RoW', 'liquefied petroleum gas')nannannan0.000001nannan0.915538-0.000005-0.000003427.206361-0.000005-0.000001-0.000004-0.000108
('market for lithium', 'GLO', 'lithium')nannannan0.000002nannan4.5949750.000001-0.000003611.791109-0.0000000.0000010.000003-0.000510
('market for lithium brine, 6.7 % Li', 'GLO', 'lithium brine, 6.7 % Li')nannannan0.000006nannan0.3585890.0000030.000001282.3887420.0000030.0000040.000005-0.000135
('market for magnetite', 'GLO', 'magnetite')nannannan0.000004nannan4.7500830.000000-0.000002600.2421020.0000000.0000010.000005-0.000614
('market for metallization paste, back side', 'RER', 'metallization paste, back side')nannannan-0.000000nannan6.440954-0.000005-0.000005122.867417-0.000004-0.0000030.000003-0.000936
('market for metallization paste, back side', 'RoW', 'metallization paste, back side')nannannan0.000001nannan6.436412-0.000004-0.000005122.815722-0.0000040.0000010.000002-0.000935
('market for metallization paste, back side, aluminium', 'RER', 'metallization paste, back side, aluminium')nannannan0.000002nannan2.9023180.0000050.000002402.9286040.0000020.0000060.000006-0.002478
('market for metallization paste, back side, aluminium', 'RoW', 'metallization paste, back side, aluminium')nannannan0.000002nannan2.7958060.0000040.000003400.2295200.0000020.0000070.000007-0.002448
('market for metallization paste, front side', 'RER', 'metallization paste, front side')nannannan-0.000000nannan6.445557-0.000005-0.000007122.303256-0.000004-0.0000010.000002-0.000935
('market for metallization paste, front side', 'RoW', 'metallization paste, front side')nannannan-0.000001nannan6.441895-0.000005-0.000008122.261491-0.000004-0.0000020.000002-0.000935
('market for methanol, from biomass', 'CH', 'methanol, from biomass')nannannan0.000002nannan11.730285-0.000002-0.000002282.1328790.000007-0.0000010.000002-0.005420
('market for methanol, from biomass', 'RoW', 'methanol, from biomass')nannannan0.000000nannan56.604871-0.000008-0.000007241.9072320.000006-0.000004-0.000001-0.001437
('samarium europium gadolinium concentrate to generic market for mischmetal', 'GLO', 'mischmetal')nannannan2.352149nannan-26.003447-29.803840-29.785140355.0031381.502726-29.803961-33.684733-29.464888
('market for MOX fuel element, for light water reactor', 'GLO', 'MOX fuel element, for light water reactor')nannannan0.000001nannan4.131978-0.000003-0.00000238.776817-0.000001-0.0000000.000001-0.000877
('market for naphtha', 'RER', 'naphtha')nannannan0.000003nannan1.769016-0.000002-0.000003414.487091-0.000006-0.000002-0.000004-0.000228
('market for naphtha', 'RoW', 'naphtha')nannannan0.000001nannan1.004172-0.000009-0.000004406.448006-0.000007-0.000002-0.000005-0.000149
('market for NOx retained, by selective catalytic reduction', 'GLO', 'NOx retained, by selective catalytic reduction')nannannan-0.000004nannan2.430488-0.000008-0.000006755.682986-0.000011-0.000004-0.000004-0.000151
('market for nuclear fuel element, for boiling water reactor, UO2 4.0% & MOX', 'GLO', 'nuclear fuel element, for boiling water reactor, UO2 4.0% & MOX')nannannan0.000007nannan2.5178090.0000070.00000626.6169870.0000080.0000100.000003-0.006363
('market for nuclear fuel element, for pressure water reactor, UO2 3.8% & MOX', 'GLO', 'nuclear fuel element, for pressure water reactor, UO2 3.8% & MOX')nannannan-0.000003nannan2.517387-0.000003-0.00000726.185198-0.000003-0.000002-0.000003-0.006266
('market for nuclear fuel element, for pressure water reactor, UO2 3.9% & MOX', 'GLO', 'nuclear fuel element, for pressure water reactor, UO2 3.9% & MOX')nannannan0.000003nannan2.5237320.0000040.00000726.6320130.0000060.0000040.000000-0.006333
('market for nuclear fuel element, for pressure water reactor, UO2 4.0% & MOX', 'GLO', 'nuclear fuel element, for pressure water reactor, UO2 4.0% & MOX')nannannan0.000006nannan2.5195450.0000040.00000626.6242920.0000060.000005-0.000000-0.006361
('market for nuclear fuel element, for pressure water reactor, UO2 4.2% & MOX', 'GLO', 'nuclear fuel element, for pressure water reactor, UO2 4.2% & MOX')nannannan0.000004nannan2.5102750.0000040.00000226.5832280.0000040.0000080.000004-0.006394
('market for nuclear fuel element, for pressure water reactor, UO2 4.2% centrifuge & MOX', 'GLO', 'nuclear fuel element, for pressure water reactor, UO2 4.2% centrifuge & MOX')nannannan0.000004nannan2.5102760.0000040.00000526.5850400.0000050.0000040.000004-0.006394
('market for orthophthalic acid based unsaturated polyester resin', 'GLO', 'orthophthalic acid based unsaturated polyester resin')nannannan0.000003nannan2.705610-0.000000-0.000002615.946691-0.0000030.0000030.000000-0.000320
('market for petrol, 15% ETBE additive by volume, with ethanol from biomass', 'GLO', 'petrol, 15% ETBE additive by volume, with ethanol from biomass')nannannan0.000010nannan1.7569200.0000070.00000625.9644410.0000020.0000100.000010-0.419993
('market for petrol, 4% ETBE additive by volume, with ethanol from biomass', 'GLO', 'petrol, 4% ETBE additive by volume, with ethanol from biomass')nannannan0.000004nannan1.5427970.0000010.00000188.992751-0.0000000.0000040.000001-0.118809
('market for petrol, 5% ethanol by volume from biomass', 'GLO', 'petrol, 5% ethanol by volume from biomass')nannannan-0.000001nannan1.4603650.0000060.000003347.3453480.0000040.0000080.000008-0.000175
('market for petrol, low-sulfur', 'CH', 'petrol, low-sulfur')nannannan0.000003nannan1.8101620.0000060.000004441.164800-0.0000000.0000050.000003-0.000131
('market for petrol, low-sulfur', 'Europe without Switzerland', 'petrol, low-sulfur')nannannan-0.000000nannan2.1426590.0000020.000002418.921318-0.0000020.0000030.000000-0.000146
('market for petrol, low-sulfur', 'RoW', 'petrol, low-sulfur')nannannan-0.000001nannan1.1082580.000000-0.000000399.607033-0.0000000.000003-0.000000-0.000105
('market for petrol, two-stroke blend', 'GLO', 'petrol, two-stroke blend')nannannan0.000007nannan1.0508520.0000070.000005412.1696070.0000020.0000070.000005-0.000124
('market for petrol, unleaded', 'RER', 'petrol, unleaded')nannannan0.000000nannan1.266682-0.000002-0.000001417.100845-0.0000050.000003-0.000000-0.000148
('market for petrol, unleaded', 'RoW', 'petrol, unleaded')nannannan0.000000nannan0.7898120.0000030.000002408.885251-0.0000020.000003-0.000001-0.000098
('market for petroleum coke', 'GLO', 'petroleum coke')nannannan0.000005nannan0.8609750.0000020.000002413.126453-0.0000010.0000040.000005-0.000111
('market for pitch', 'CH', 'pitch')nannannan-0.000001nannan0.987292-0.0000030.000001527.567089-0.0000010.000001-0.000001-0.000125
('market for pitch', 'RoW', 'pitch')nannannan-0.000001nannan1.387310-0.000006-0.000005428.516039-0.000009-0.000003-0.000006-0.000122
('market for plasticiser, for concrete, based on sulfonated melamine formaldehyde', 'GLO', 'plasticiser, for concrete, based on sulfonated melamine formaldehyde')nannannan-0.000002nannan2.2071260.0000000.000000962.5838940.0000010.0000030.000004-0.000503
('market for polybutadiene', 'GLO', 'polybutadiene')nannannan0.000003nannan0.034085-0.0000000.0000011671.8825600.0000010.0000030.000005-0.000002
('market for polylactide, granulate', 'GLO', 'polylactide, granulate')nannannan-0.000005nannan1.6748510.000000-0.0000064.361917-0.0000020.0000020.000001-0.000830
('market for polystyrene foam slab', 'GLO', 'polystyrene foam slab')nannannan-0.000005nannan1.642327-0.000005-0.0000012597.549187-0.000006-0.000004-0.000001-0.000190
('market for polystyrene foam slab for perimeter insulation', 'GLO', 'polystyrene foam slab for perimeter insulation')nannannan0.000002nannan1.3785580.0000050.0000052774.1107180.0000030.0000050.000004-0.000175
('market for polystyrene foam slab with graphite, 6% recycled', 'GLO', 'polystyrene foam slab with graphite, 6% recycled')nannannan-0.000001nannan0.955200-0.000002-0.0000022885.229214-0.0000030.0000010.000002-0.000263
('market for polystyrene foam slab, 10% recycled', 'GLO', 'polystyrene foam slab, 10% recycled')nannannan-0.000002nannan0.949023-0.0000030.0000012911.536460-0.0000010.0000010.000001-0.000264
('market for polystyrene, extruded', 'GLO', 'polystyrene, extruded')nannannan0.000000nannan0.413912-0.000001-0.0000032293.756753-0.0000010.0000030.000003-0.032938
('market for polysulfide, sealing compound', 'GLO', 'polysulfide, sealing compound')nannannan-0.000001nannan4.7813170.0000010.000001370.8154060.0000030.0000050.000008-0.000493
('market for polyurethane, flexible foam', 'RER', 'polyurethane, flexible foam')nannannan-0.000006nannan0.4946380.0000020.000000302.0693250.0000040.000003-0.000000-0.000050
('market for polyurethane, flexible foam', 'RoW', 'polyurethane, flexible foam')nannannan-0.000000nannan0.4271200.0000010.000002301.9897990.0000020.0000040.000001-0.000030
('market for polyurethane, rigid foam', 'RER', 'polyurethane, rigid foam')nannannan-0.000001nannan3.5440710.000004-0.000001370.609279-0.0000010.0000030.000009-0.000423
('market for polyurethane, rigid foam', 'RoW', 'polyurethane, rigid foam')nannannan-0.000009nannan2.059947-0.000001-0.000001345.3955490.0000030.0000020.000011-0.000264
('market for samarium europium gadolinium concentrate, 94% rare earth oxide', 'GLO', 'samarium europium gadolinium concentrate, 94% rare earth oxide')nannannan0.000003nannan4.2262580.0000020.000001592.280436-0.0000020.0000050.000005-0.004296
('market for seal, natural rubber based', 'GLO', 'seal, natural rubber based')nannannan-0.000002nannan2.6035710.0000020.000000951.621432-0.0000110.000002-0.000000-0.000563
('market for silicon, single crystal, Czochralski process, electronics', 'RER', 'silicon, single crystal, Czochralski process, electronics')nannannan0.000002nannan7.606387-0.000004-0.000004995.840888-0.000005-0.0000030.000003-0.001373
('market for silicon, single crystal, Czochralski process, electronics', 'RoW', 'silicon, single crystal, Czochralski process, electronics')nannannan0.000002nannan3.787197-0.000004-0.000007993.901427-0.000005-0.000004-0.000000-0.000819
('market for silicon, single crystal, Czochralski process, photovoltaics', 'RER', 'silicon, single crystal, Czochralski process, photovoltaics')nannannan0.000002nannan7.579760-0.000001-0.000004169.135482-0.0000000.0000000.000001-0.000904
('market for silicon, single crystal, Czochralski process, photovoltaics', 'RoW', 'silicon, single crystal, Czochralski process, photovoltaics')nannannan-0.000000nannan3.700426-0.000002-0.000004161.365365-0.0000040.0000040.000002-0.000452
('market for soft solder, Sn97Cu3', 'RER', 'soft solder, Sn97Cu3')nannannan0.000005nannan2.8824300.0000030.000002549.2862520.0000040.0000050.000009-0.001100
('market for soft solder, Sn97Cu3', 'RoW', 'soft solder, Sn97Cu3')nannannan0.000002nannan2.745548-0.000000-0.000002547.1065010.0000010.0000010.000006-0.001072
('market for SOx retained, in hard coal flue gas desulfurisation', 'RER', 'SOx retained, in hard coal flue gas desulfurisation')nannannan0.000002nannan1.035372-0.000003-0.000004-60.956222-0.000004-0.0000000.000005-0.000087
('market for SOx retained, in hard coal flue gas desulfurisation', 'RoW', 'SOx retained, in hard coal flue gas desulfurisation')nannannan0.000002nannan0.5216250.0000040.000003-41.813584-0.0000090.0000050.000002-0.000055
('market for SOx retained, in lignite flue gas desulfurisation', 'GLO', 'SOx retained, in lignite flue gas desulfurisation')nannannan-0.000001nannan0.525842-0.000007-0.000005-58.481812-0.000004-0.0000020.000001-0.000053
('market for strontium carbonate', 'GLO', 'strontium carbonate')nannannan0.000004nannan3.721851-0.000000-0.0000011030.000328-0.0000010.0000050.000002-0.000389
('market for styrene-acrylonitrile copolymer', 'GLO', 'styrene-acrylonitrile copolymer')nannannan0.000009nannan0.341735-0.000001-0.0000001761.3532060.0000030.0000030.000009-0.000038
('market for sulfur stockpiling', 'GLO', 'sulfur stockpiling')nannannan0.000003nannan0.8305690.0000010.000001396.400716-0.0000030.000004-0.000001-0.000083
('market for synthetic rubber', 'GLO', 'synthetic rubber')nannannan-0.000001nannan7.181410-0.000004-0.000005794.516176-0.000002-0.000001-0.000001-0.001079
('market for tantalum, powder, capacitor-grade', 'GLO', 'tantalum, powder, capacitor-grade')nannannan0.000002nannan4.051394-0.000004-0.000005-59.819633-0.000001-0.000003-0.000003-0.000704
('market for tellurium, semiconductor-grade', 'GLO', 'tellurium, semiconductor-grade')nannannan0.000000nannan6.592084-0.000004-0.000003129.274665-0.0000000.0000000.000004-0.007542
('market for tube insulation, elastomere', 'GLO', 'tube insulation, elastomere')nannannan-0.000003nannan5.249738-0.000007-0.000001574.655595-0.000004-0.0000000.000008-0.001026
('market for uranium hexafluoride', 'CN', 'uranium hexafluoride')nannannan0.000003nannan3.207738-0.000002-0.00000125.7139260.0000020.0000060.000004-0.000368
('market for uranium hexafluoride', 'RoW', 'uranium hexafluoride')nannannan0.000004nannan3.0563720.000002-0.00000027.9428230.0000030.0000080.000002-0.000356
('market for uranium hexafluoride', 'US', 'uranium hexafluoride')nannannan0.000004nannan3.2594650.000001-0.00000026.079993-0.0000000.0000040.000003-0.000386
('market for uranium, enriched 3.0%, in fuel element for light water reactor', 'GLO', 'uranium, enriched 3.0%, in fuel element for light water reactor')nannannan-0.000003nannan2.550543-0.000002-0.00000526.305618-0.000003-0.000002-0.000004-0.006051
('market for uranium, enriched 3.8%, in fuel element for light water reactor', 'GLO', 'uranium, enriched 3.8%, in fuel element for light water reactor')nannannan-0.000000nannan2.514818-0.000001-0.00000626.1736700.0000020.0000010.000001-0.006269
('market for uranium, enriched 3.9%, in fuel element for light water reactor', 'GLO', 'uranium, enriched 3.9%, in fuel element for light water reactor')nannannan0.000004nannan2.5203750.000003-0.00000026.6176090.0000040.0000080.000002-0.006344
('market for uranium, enriched 4%, in fuel element for light water reactor', 'GLO', 'uranium, enriched 4%, in fuel element for light water reactor')nannannan0.000005nannan2.5156820.0000010.00000126.6077670.0000030.000005-0.000002-0.006374
('market for uranium, enriched 4.2%, in fuel element for light water reactor', 'GLO', 'uranium, enriched 4.2%, in fuel element for light water reactor')nannannan0.000004nannan2.5084880.0000030.00000326.5754280.0000020.0000060.000001-0.006402
('market for urea formaldehyde foam slab, hard', 'GLO', 'urea formaldehyde foam slab, hard')nannannan-0.000001nannan3.023595-0.000004-0.0000052263.169215-0.000008-0.0000040.000001-0.000508
('market for urea formaldehyde foam, in situ foaming', 'GLO', 'urea formaldehyde foam, in situ foaming')nannannan-0.000000nannan2.7691310.000000-0.0000012297.450806-0.0000030.0000030.000000-0.000487
('market for vegetable oil methyl ester', 'GLO', 'vegetable oil methyl ester')nannannan0.000003nannan0.2746680.0000020.000001-17.815959-0.0000000.0000030.000004-0.005722
('cottonseed oil, refined, to generic market for vegetable oil, refined', 'GLO', 'vegetable oil, refined')nannannan-79.850301nannan18.029892-58.005061-54.299591365.519636-99.497893-58.00548012.357363-47.332500
('market for viscose fibre', 'GLO', 'viscose fibre')nannannan0.000003nannan31.7744660.000000-0.000001-43.6416410.0000030.0000050.000004-0.000510
('market for water, ultrapure', 'GLO', 'water, ultrapure')nannannan0.000003nannan1.1922430.0000070.00000310.0119250.0000070.0000070.000008-0.000168
('market for wood preservative, organic, indoor use, dry', 'GLO', 'wood preservative, organic, indoor use, dry')nannannan0.000009nannan6.5077140.0000040.000001913.7051310.0000030.0000050.000006-0.000356
('market for wood preservative, organic, indoor use, occasionally wet', 'GLO', 'wood preservative, organic, indoor use, occasionally wet')nannannan0.000005nannan3.574389-0.000001-0.000004346.171664-0.000007-0.000001-0.000002-0.000126
('market for wood preservative, organic, outdoor use, no ground contact', 'GLO', 'wood preservative, organic, outdoor use, no ground contact')nannannan-0.000004nannan3.866756-0.000003-0.000003198.958787-0.0000060.0000000.000004-0.016051
('market for wood preservative, water-based, indoor use, dry', 'GLO', 'wood preservative, water-based, indoor use, dry')nannannan-0.000003nannan4.394732-0.000004-0.000006479.806605-0.000005-0.000005-0.000001-0.000479
('market for wood preservative, water-based, indoor use, occasionally wet', 'GLO', 'wood preservative, water-based, indoor use, occasionally wet')nannannan0.000000nannan5.919372-0.000004-0.00000415.545699-0.000007-0.000002-0.000001-0.000469
('market for wood preservative, water-based, outdoor use, no ground contact', 'GLO', 'wood preservative, water-based, outdoor use, no ground contact')nannannan-0.000001nannan5.660967-0.000002-0.000001-58.834904-0.0000050.0000010.000002-0.022455
('market for ethylene vinyl acetate copolymer', 'RER', 'ethylene vinyl acetate copolymer')nannannan0.000003nannan2.310586-0.000001-0.0000011433.984038-0.0000010.0000030.000004-0.000240
('market for ethylene vinyl acetate copolymer', 'RoW', 'ethylene vinyl acetate copolymer')nannannan0.000005nannan1.632174-0.000003-0.0000031367.6614380.000000-0.0000040.000004-0.000175
('market for ethylvinylacetate, foil', 'GLO', 'ethylvinylacetate, foil')nannannan0.000006nannan8.211268-0.000001-0.000001-28161.4118610.0000060.0000030.000004-0.000279
('market for fleece, polyethylene', 'GLO', 'fleece, polyethylene')nannannan0.000007nannan1.8189920.0000030.000001-376.4375180.0000030.0000040.000006-0.000092
('market for glass fibre reinforced plastic, polyamide, injection moulded', 'GLO', 'glass fibre reinforced plastic, polyamide, injection moulded')nannannan-0.000003nannan2.495965-0.000005-0.0000045319.8032190.000009-0.000000-0.000002-0.000091
('market for glass fibre reinforced plastic, polyester resin, hand lay-up', 'GLO', 'glass fibre reinforced plastic, polyester resin, hand lay-up')nannannan0.000007nannan2.5602190.0000050.000004180.4970580.0000030.0000090.000003-0.023836
('market for meta-phenylene diamine', 'GLO', 'meta-phenylene diamine')nannannan0.000001nannan1.008420-0.000001-0.00000298.789775-0.0000040.0000020.000002-0.003596
('market for nylon 6-6', 'GLO', 'nylon 6-6')nannannan0.000005nannan0.018401-0.0000010.00000263038.8780300.0000030.0000050.0000090.000001
('market for nylon 6-6, glass-filled', 'RER', 'nylon 6-6, glass-filled')nannannan-0.000001nannan0.012292-0.000000-0.00000259758.257890-0.0000030.0000020.000005-0.000003
('market for nylon 6-6, glass-filled', 'RoW', 'nylon 6-6, glass-filled')nannannan-0.000002nannan0.028591-0.000006-0.00000352765.050588-0.000000-0.0000000.000001-0.000003
('market for nylon 6', 'GLO', 'nylon 6')nannannan0.000005nannan0.026208-0.0000010.0000001258.5308590.0000010.0000030.000000-0.000002
('market for nylon 6, glass-filled', 'RER', 'nylon 6, glass-filled')nannannan0.000001nannan0.013948-0.000006-0.0000043993.106949-0.000000-0.0000020.000001-0.000006
('market for nylon 6, glass-filled', 'RoW', 'nylon 6, glass-filled')nannannan0.000001nannan0.032112-0.000005-0.0000063940.561510-0.000002-0.0000000.000003-0.000003
('market for ortho-phenylene diamine', 'GLO', 'ortho-phenylene diamine')nannannan0.000005nannan1.7581490.000002-0.000002305.7391820.0000000.0000030.000003-0.002094
('market for packaging film, low density polyethylene', 'GLO', 'packaging film, low density polyethylene')nannannan0.000006nannan7.1300240.0000040.000003-2594.9769910.0000150.0000050.000004-0.000122
('market for packaging, for fertilisers or pesticides', 'GLO', 'packaging, for fertilisers or pesticides')nannannan0.000003nannan3.444319-0.000001-0.000001457.4113690.0000020.0000010.000003-0.000156
('market for para-phenylene diamine', 'GLO', 'para-phenylene diamine')nannannan0.000008nannan2.3755540.0000040.000001648.4715250.0000040.0000050.000009-0.000799
('market for polycarbonate', 'GLO', 'polycarbonate')nannannan0.000005nannan0.0208180.0000040.000002769.3736530.0000060.0000050.0000070.000002
('market for polyethylene terephthalate, granulate, amorphous', 'GLO', 'polyethylene terephthalate, granulate, amorphous')nannannan0.000009nannan3.3016900.0000020.000001794.6950760.0000040.0000030.000004-0.000246
('market for polyethylene terephthalate, granulate, amorphous, recycled', 'CH', 'polyethylene terephthalate, granulate, amorphous, recycled')nannannan-0.000001nannan6.0338700.0000020.000001219.1049100.0000020.0000040.000006-0.006488
('market for polyethylene terephthalate, granulate, amorphous, recycled', 'Europe without Switzerland', 'polyethylene terephthalate, granulate, amorphous, recycled')nannannan-0.000003nannan5.2348590.000000-0.000003274.3311250.0000020.0000010.000001-0.000824
('market for polyethylene terephthalate, granulate, amorphous, recycled', 'RoW', 'polyethylene terephthalate, granulate, amorphous, recycled')nannannan0.000007nannan1.3085140.0000030.000002243.3779870.0000010.0000050.000005-0.000327
('market for polyethylene terephthalate, granulate, amorphous, recycled', 'US', 'polyethylene terephthalate, granulate, amorphous, recycled')nannannan0.000000nannan1.434664-0.000005-0.00000663.509373-0.000004-0.000003-0.000001-0.000422
('market for polyethylene terephthalate, granulate, bottle grade', 'GLO', 'polyethylene terephthalate, granulate, bottle grade')nannannan0.000005nannan3.7129360.0000020.000005760.7848550.0000010.0000060.000004-0.000280
('market for polyethylene terephthalate, granulate, bottle grade, recycled', 'CH', 'polyethylene terephthalate, granulate, bottle grade, recycled')nannannan0.000001nannan4.392854-0.000000-0.000002381.9897230.0000030.0000030.000005-0.002716
('market for polyethylene terephthalate, granulate, bottle grade, recycled', 'RoW', 'polyethylene terephthalate, granulate, bottle grade, recycled')nannannan0.000002nannan4.5165170.0000000.000003288.2319430.0000020.0000040.000003-0.000735
('market for polyethylene, high density, granulate', 'GLO', 'polyethylene, high density, granulate')nannannan0.000001nannan0.056968-0.000001-0.000002987.7404900.0000020.0000030.000006-0.000008
('market for polyethylene, high density, granulate, recycled', 'CH', 'polyethylene, high density, granulate, recycled')nannannan0.000004nannan5.0134500.000000-0.000000161.4436130.000006-0.0000000.000007-0.002344
('market for polyethylene, high density, granulate, recycled', 'Europe without Switzerland', 'polyethylene, high density, granulate, recycled')nannannan0.000003nannan6.533783-0.0000010.000000262.4010060.0000030.0000010.000004-0.001004
('market for polyethylene, high density, granulate, recycled', 'RoW', 'polyethylene, high density, granulate, recycled')nannannan0.000002nannan1.5191780.000003-0.000001198.198258-0.0000000.0000030.000005-0.000347
('market for polyethylene, high density, granulate, recycled', 'US', 'polyethylene, high density, granulate, recycled')nannannan-0.000002nannan1.6155830.000000-0.00000642.3538590.0000000.0000010.000004-0.000451
('market for polyethylene, linear low density, granulate', 'GLO', 'polyethylene, linear low density, granulate')nannannan0.000005nannan0.056715-0.000001-0.00000113562.7189470.0000020.0000020.000006-0.000006
('market for polyethylene, low density, granulate', 'GLO', 'polyethylene, low density, granulate')nannannan0.000002nannan0.0503950.0000030.0000021672.9963460.0000040.0000040.0000070.000000
('market for polymethyl methacrylate, beads', 'GLO', 'polymethyl methacrylate, beads')nannannan0.000005nannan0.032292-0.0000000.0000023015.3326650.0000010.0000030.000006-0.000002
('market for polymethyl methacrylate, sheet', 'GLO', 'polymethyl methacrylate, sheet')nannannan0.000003nannan0.0287430.0000030.0000023187.9527750.0000000.0000030.000004-0.000005
('market for polyphenylene sulfide', 'GLO', 'polyphenylene sulfide')nannannan-0.000001nannan3.081996-0.000004-0.0000091056.103645-0.000007-0.000006-0.000003-0.000455
('market for polypropylene, granulate', 'GLO', 'polypropylene, granulate')nannannan0.000003nannan0.0517440.0000050.0000031424.7249880.0000010.0000050.000005-0.000001
('market for polystyrene scrap, post-consumer', 'GLO', 'polystyrene scrap, post-consumer')nannannan0.000000nannan0.9322180.000000-0.000001312.2390150.0000010.0000030.000004-0.000185
('market for polystyrene, expandable', 'GLO', 'polystyrene, expandable')nannannan0.000000nannan0.045333-0.000000-0.0000017899.9713890.0000050.0000020.000004-0.000121
('market for polystyrene, general purpose', 'GLO', 'polystyrene, general purpose')nannannan0.000003nannan0.035457-0.000002-0.000006756.1315600.0000030.0000020.000006-0.000006
('market for polystyrene, high impact', 'GLO', 'polystyrene, high impact')nannannan0.000004nannan0.0388910.0000020.000003653.2524950.0000040.0000060.000006-0.000003
('market for polyvinylchloride, bulk polymerised', 'GLO', 'polyvinylchloride, bulk polymerised')nannannan0.000011nannan0.0835840.0000070.0000074459.4017810.0000080.0000110.000011-0.007913
('market for polyvinylchloride, emulsion polymerised', 'GLO', 'polyvinylchloride, emulsion polymerised')nannannan0.000002nannan0.0470370.0000010.0000015690.5126240.0000030.0000040.000009-0.004099
('market for polyvinylchloride, suspension polymerised', 'GLO', 'polyvinylchloride, suspension polymerised')nannannan0.000004nannan0.0455420.0000010.0000004354.2386670.0000010.0000040.000005-0.009000
('market for polyvinylidenchloride, granulate', 'RER', 'polyvinylidenchloride, granulate')nannannan0.000003nannan0.1047210.000003-0.0000034405.4479270.0000090.0000010.000006-0.000698
('market for polyvinylidenchloride, granulate', 'RoW', 'polyvinylidenchloride, granulate')nannannan0.000001nannan0.231118-0.000002-0.0000014364.1049140.0000020.0000020.000004-0.000652
('market for tetrafluoroethylene', 'GLO', 'tetrafluoroethylene')nannannan0.000007nannan0.1364750.0000020.000001659.6496270.0000000.0000030.000005-0.174299
('market for tetrafluoroethylene film, on glass', 'GLO', 'tetrafluoroethylene film, on glass')nannannan-0.000002nannan0.149702-0.000002-0.000002642.476682-0.000002-0.0000020.000002-0.173882
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res.style.pipe(make_pretty)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2af33ccc-7df3-48c2-8a9e-66fb0b72999a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9744ac2-d9d8-43f5-90d6-7f8f20ce78e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/test/project_path.py b/notebooks/test/project_path.py new file mode 100644 index 0000000..0b295c7 --- /dev/null +++ b/notebooks/test/project_path.py @@ -0,0 +1,16 @@ +""" +Adapted from https://stackoverflow.com/a/51028921/14485040 + +This script has to be included in the `notebooks` directory and +has to be imported (first line) in every notebook that uses +scripts/data from directories relative to the root directory of +the project. +""" + +import os +import sys + +ROOT_DIR = os.path.abspath(os.path.join("..\..")) +# `..` indicate a relative path to root directory +if ROOT_DIR not in sys.path: + sys.path.append(ROOT_DIR) diff --git a/notebooks/test/test-DataConverter-class.ipynb b/notebooks/test/test-DataConverter-class.ipynb new file mode 100644 index 0000000..8f1460f --- /dev/null +++ b/notebooks/test/test-DataConverter-class.ipynb @@ -0,0 +1,2288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d80d0fcd-ccf4-4e9d-9983-eb9307e54de1", + "metadata": { + "tags": [] + }, + "source": [ + "## tests" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b51496a8-ba02-4ba2-ab5f-f93c000b2bf6", + "metadata": {}, + "outputs": [], + "source": [ + "import aesa_pbs\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "37f5a44e-c1c8-4d3e-b463-6bdb11027991", + "metadata": {}, + "outputs": [], + "source": [ + "import brightway2 as bw\n", + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "311e7ae4-72de-4428-92cb-81f3784b7c9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.8+xlsxtoyaml.8.4'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f87ce5e0-b2d5-4158-b6af-7041a4ea8b6b", + "metadata": {}, + "outputs": [], + "source": [ + "TRIAL_XLSX_PATH = Path(ROOT_DIR + r\"/data/temp/trial.xlsx\")\n", + "TRIAL_YAML_PATH = Path(ROOT_DIR + r\"/data/temp/trial.yaml\")\n", + "OUT_XLSX_PATH = Path(ROOT_DIR + r\"/data/temp/out.xlsx\")\n", + "OUT_YAML_PATH = Path(ROOT_DIR + r\"/data/temp/out.yaml\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8a81429b-f1e0-4bb7-bfee-684731bb8b9f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Some data is missing (or invalid) in trial.yaml (see below incomplete sets):\n", + "+--------------------------------------------+-------------+--------+\n", + "| name | categories | amount |\n", + "+--------------------------------------------+-------------+--------+\n", + "| Carbon dioxide, from soil or biomass stock | air::indoor | nan |\n", + "| | nan | nan |\n", + "+--------------------------------------------+-------------+--------+\n", + "Note: These sets will be omitted.\n", + "\n", + "WARNING: Duplicated flows found in trial.yaml (see below):\n", + "+------------------------+----------------------------------------+----------+\n", + "| name | categories | amount |\n", + "+------------------------+----------------------------------------+----------+\n", + "| Carbon dioxide, fossil | air | 3.53e-13 |\n", + "| Carbon dioxide, fossil | air::low population density, long-term | 3.53e-13 |\n", + "+------------------------+----------------------------------------+----------+\n", + "Note: All duplicates will be removed.\n", + "\n" + ] + } + ], + "source": [ + "# converter = aesa_pbs.DataConverter(TRIAL_XLSX_PATH)\n", + "converter = aesa_pbs.DataConverter(TRIAL_YAML_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9f475aff-4765-403a-ae31-3aab11bc6795", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File created in C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\temp\\out.xlsx\n" + ] + } + ], + "source": [ + "converter.to_excel(OUT_XLSX_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3e8c4c6c-d058-4b89-9fa4-72ae301ac123", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Databases in 'test' project: ['biosphere3', 'ei35cutoff', 'ei38cutoff']\n" + ] + } + ], + "source": [ + "# Create a \"test\" project or activate it\n", + "\n", + "if not [proj[0] for proj in bw.projects.report() if proj[0]==\"test\"]:\n", + " bw.projects.set_current(\"default\")\n", + " bw.projects.copy_project(\"test\", switch=True)\n", + " \n", + " # delete extra dbs\n", + " del bw.databases['ei35apos']\n", + " del bw.databases['ei38apos']\n", + "else:\n", + " bw.projects.set_current(\"test\")\n", + "print(f\"Databases in '{bw.projects.current}' project: {bw.databases.list}\")\n", + " \n", + " \n", + "# Delete \"test\" project\n", + "# bw.projects.set_current(\"default\")\n", + "# bw.projects.delete_project(name=\"test\", delete_dir=True)\n", + "\n", + "# Delete database\n", + "# del bw.databases['A_technosphere_flows']" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "51a47142-beae-433a-917b-3be4af5e3d44", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "list_aesa_methods = [m for m in bw.methods if \"aesa\" in str(m).lower()]\n", + "\n", + "# If you need to delete some previously installed methods, \n", + "# first locate the methods and delete manually\n", + "locate_methods =False\n", + "# then deregister methods (delete from bw)\n", + "delete_methods = False\n", + "# 1. Find locations of the methods to delete.\n", + "# 2. Delete manually the .pickle and .npy files\n", + "# 3. Deregister methods\n", + "\n", + "if locate_methods:\n", + " for method in list_aesa_methods:\n", + " my_method = bw.Method(method)\n", + " print(my_method)\n", + " # Intermediate pickle, what gets loaded by my_method.load()\n", + " print(\" \", os.path.join(bw.projects.dir, \"intermediate\", my_method.filename + \".pickle\"))\n", + " # Processed array, used in calculations\n", + " print(\" \", my_method.filepath_processed())\n", + " print(\"\\n\")\n", + "if delete_methods: \n", + " for method in list_aesa_methods:\n", + " bw.Method(method).deregister()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "add36b17-66c7-4f51-9de5-65e656d89248", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Duplicated flows found in aesa_BiogeochemicalFlows_P.yaml (see below):\n", + "+------------+----------------------+----------+\n", + "| name | categories | amount |\n", + "+------------+----------------------+----------+\n", + "| Phosphorus | water::surface water | 8.61e-10 |\n", + "+------------+----------------------+----------+\n", + "Note: All duplicates will be removed.\n", + "\n", + "Writing activities to SQLite3 database:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'climate change', 'atmospheric CO2 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.10 seconds\n", + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'biogeochemical flows', 'nitrogen', 'directly fixated')\n", + "+------------------------------------------------------------+\n", + "| Warning |\n", + "+------------------------------------------------------------+\n", + "| The method for quantification of directly fixated nitrogen |\n", + "| requires an additional database `A_technosphere_flows`. |\n", + "| This database was not found in the current project. |\n", + "| It will be generated now. |\n", + "| |\n", + "| Next steps: |\n", + "| 1. Use `aesa_pbs.get_nitrogenous_fertilizers()` to filter |\n", + "| activities producing nitrogenous fertilizers in a |\n", + "| specific background database. |\n", + "| 2. Use `aesa_pbs.update_nitrogen_fertilizer_exchanges()` |\n", + "| to modify those activities. |\n", + "| |\n", + "| Optionally, |\n", + "| modified activities can be cleaned with |\n", + "| `aesa_pbs.remove_nitrogen_fertilizer_exchanges()`. |\n", + "+------------------------------------------------------------+\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "0% [#] 100% | ETA: 00:00:01\n", + "Total time elapsed: 00:00:00\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Writing activities to SQLite3 database:\n", + " Started: 07/25/2022 12:20:19\n", + " Finished: 07/25/2022 12:20:19\n", + " Total time elapsed: 00:00:00\n", + " CPU %: 0.00\n", + " Memory %: 1.24\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applying strategy: link_iterable_by_fields\n", + "Applied 10 strategies in 0.08 seconds\n", + "Wrote 1 LCIA methods with 1 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'change in biosphere integrity', 'functional diversity', 'CO2eq emissions')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.10 seconds\n", + "Wrote 1 LCIA methods with 188 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'change in biosphere integrity', 'functional diversity', 'total')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.09 seconds\n", + "Wrote 1 LCIA methods with 226 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'change in biosphere integrity', 'functional diversity', 'direct land use')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 38 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'climate change', 'energy imbalance at top-of-atmosphere')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.10 seconds\n", + "Wrote 1 LCIA methods with 98 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'land-system change', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.10 seconds\n", + "Wrote 1 LCIA methods with 10 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'biogeochemical flows', 'phosphorus')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.14 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'freshwater use', 'global')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.09 seconds\n", + "Wrote 1 LCIA methods with 15 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'ozone depletion', 'stratospheric O3 concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.11 seconds\n", + "Wrote 1 LCIA methods with 75 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'biogeochemical flows', 'nitrogen', 'inverse modelling, surface water')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.15 seconds\n", + "Wrote 1 LCIA methods with 2 characterization factors\n", + "\n", + "Adding ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.4', 'ocean acidification', 'carbonate ion concentration')\n", + "Applying strategy: csv_restore_tuples\n", + "Applying strategy: csv_numerize\n", + "Applying strategy: csv_drop_unknown\n", + "Applying strategy: set_biosphere_type\n", + "Applying strategy: drop_unspecified_subcategories\n", + "Applying strategy: link_iterable_by_fields\n", + "Applying strategy: drop_falsey_uncertainty_fields_but_keep_zeros\n", + "Applying strategy: convert_uncertainty_types_to_integers\n", + "Applying strategy: drop_empty_lines\n", + "Applied 9 strategies in 0.10 seconds\n", + "Wrote 1 LCIA methods with 42 characterization factors\n", + "\n" + ] + } + ], + "source": [ + "# Install AESA methods if they dont exist\n", + "if not list_aesa_methods:\n", + " aesa_pbs.add_aesa_pbs()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7b63457e-e6a6-4635-9d02-3b66b49755ae", + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'total'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'climate change',\n", + " 'energy imbalance at top-of-atmosphere'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.2', 'land-system change', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'directly fixated'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'CO2eq emissions'),\n", + " ('AESA (PBs-LCIA)', '0.8.8+xlsxtoyaml.8.2', 'freshwater use', 'global'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'change in biosphere integrity',\n", + " 'functional diversity',\n", + " 'direct land use'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'climate change',\n", + " 'atmospheric CO2 concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'biogeochemical flows',\n", + " 'nitrogen',\n", + " 'inverse modelling, surface water'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'ozone depletion',\n", + " 'stratospheric O3 concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'ocean acidification',\n", + " 'carbonate ion concentration'),\n", + " ('AESA (PBs-LCIA)',\n", + " '0.8.8+xlsxtoyaml.8.2',\n", + " 'biogeochemical flows',\n", + " 'phosphorus')]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[m for m in bw.methods if \"aesa\" in str(m).lower()]" + ] + }, + { + "cell_type": "markdown", + "id": "e03dad28-d9e1-46e5-991b-057bf23ceec5", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "### install aesa_pbs with pip" + ] + }, + { + "cell_type": "raw", + "id": "b28f75ee-54a0-4fac-ae0c-42b32cfdc3dc", + "metadata": {}, + "source": [ + "import os\n", + "os.environ[\"PROJ_LIB\"]=r\"C:\\Users\\vtulus\\VirtualEnvs\\bw2\\Library\\share\\proj\"" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "88667f52-5a67-4d25-b30a-f2c12b41a2ee", + "metadata": {}, + "outputs": [], + "source": [ + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8143c5a8-6252-4f32-a39e-a854805b2004", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture\n", + "# supress output with %%capture\n", + "# change directory\n", + "%cd {ROOT_DIR}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "81efd1bd-f938-4e4f-9de3-7468f558cc12", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip uninstall -y aesa_pbs" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d11f5b60-3327-475e-9fa4-c30897eb5d06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing c:\\users\\vtulus\\documents\\00-eth_projects\\aesamethods\n", + " Installing build dependencies: started\n", + " Installing build dependencies: finished with status 'done'\n", + " Getting requirements to build wheel: started\n", + " Getting requirements to build wheel: finished with status 'done'\n", + " Preparing metadata (pyproject.toml): started\n", + " Preparing metadata (pyproject.toml): finished with status 'done'\n", + "Building wheels for collected packages: aesa-pbs\n", + " Building wheel for aesa-pbs (pyproject.toml): started\n", + " Building wheel for aesa-pbs (pyproject.toml): finished with status 'done'\n", + " Created wheel for aesa-pbs: filename=aesa_pbs-0.8.8+xlsxtoyaml.9-py3-none-any.whl size=29805 sha256=95f892399ee05e4fab484252f82ccdd3557e80cffcb5b1426454c7ed46ec8abe\n", + " Stored in directory: C:\\Users\\vtulus\\AppData\\Local\\Temp\\pip-ephem-wheel-cache-mecnu2ry\\wheels\\10\\fa\\a5\\382ef7031366baa9086692b52163d123e54538a0a08b665688\n", + "Successfully built aesa-pbs\n", + "Installing collected packages: aesa-pbs\n", + " Attempting uninstall: aesa-pbs\n", + " Found existing installation: aesa-pbs 0.8.8+xlsxtoyaml.9\n", + " Uninstalling aesa-pbs-0.8.8+xlsxtoyaml.9:\n", + " Successfully uninstalled aesa-pbs-0.8.8+xlsxtoyaml.9\n", + "Successfully installed aesa-pbs-0.8.8+xlsxtoyaml.9\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "# %%capture\n", + "# %conda env list\n", + "# %conda list\n", + "# %dhist\n", + "# %pip install . --use-feature=in-tree-build\n", + "%pip install ." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "699c99ba-845e-4faf-ba7f-b2068f46cf45", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# %conda list" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "da0106f1-1ecc-4358-addd-fbb30c7ecb84", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.8.8+xlsxtoyaml.9'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import aesa_pbs\n", + "aesa_pbs.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "8ba75684-2998-4a14-ba5b-ac8f03b60743", + "metadata": { + "tags": [] + }, + "source": [ + "## Create yaml-s from xlsx-s" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "55868cf1-5509-4864-ba1c-0db4ae0caa06", + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import os\n", + "import pprint" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "03b96d52-279c-4219-81db-eea3d4b3140d", + "metadata": {}, + "outputs": [], + "source": [ + "EXCELS_PATH = Path(ROOT_DIR + r\"/src/aesa_pbs/data_excels\")\n", + "DATA_PATH = Path(ROOT_DIR + r\"/src/aesa_pbs/data\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "92c22181-5bfd-4993-a044-802d58416ec5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['aesa_BiogeochemicalFlows_N_directlyFixated.xlsx',\n", + " 'aesa_BiogeochemicalFlows_N_inverseModelling_surfaceWater.xlsx',\n", + " 'aesa_BiogeochemicalFlows_P.xlsx',\n", + " 'aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.xlsx',\n", + " 'aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_CO2eq_emissions.xlsx',\n", + " 'aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_land_use.xlsx',\n", + " 'aesa_ClimateChange_AtmosphericCO2Concentration.xlsx',\n", + " 'aesa_ClimateChange_EnergyImbalance.xlsx',\n", + " 'aesa_FreshwaterUse_Global.xlsx',\n", + " 'aesa_LandSystemChange_Global.xlsx',\n", + " 'aesa_OceanAcidification_CarbontateIonConcentration.xlsx',\n", + " 'aesa_OzoneDepletion_StratosphericO3Concentration.xlsx']\n" + ] + } + ], + "source": [ + "current_dir = Path(ROOT_DIR + r\"/notebooks/test\").resolve(strict=True) # abspath to current directory\n", + "path_explored_dir = Path(EXCELS_PATH)\n", + "\n", + "os.chdir(path_explored_dir) # move cd to path_explored_dir\n", + "files_list = glob.glob(\"*.{}\".format(\"xlsx\"))\n", + "# print(\"List of created scenarios:\")\n", + "pprint.pprint(files_list)\n", + "os.chdir(current_dir) # return to current directory" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "d956b6ec-ff3a-459d-aeb5-0f03d4019f9e", + "metadata": {}, + "outputs": [], + "source": [ + "for file in files_list:\n", + " convert = aesa_pbs.DataConverter(Path(str(EXCELS_PATH) + f\"/{file}\"))\n", + " convert.to_yaml(outfilepath=Path(str(DATA_PATH) + f\"/{file}\").with_suffix(\".yaml\"), verbose=False)" + ] + }, + { + "cell_type": "markdown", + "id": "6ba4c1ec-990c-483d-b0c4-b0a7abe08873", + "metadata": {}, + "source": [ + "## playground" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9af12ae5-6cf4-4b24-9436-51d24c3efd06", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import logging" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0c157aa8-bfbc-4fba-96a0-7507edfb1dd6", + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"dummy.xlsx\"\n", + "\n", + "# with good data\n", + "data_good = pd.DataFrame(\n", + " np.array(\n", + " [\n", + " (\"Carbon dioxide, fossil\", \"air\", \"tt3.53e-13\"),\n", + " (\"Ethane, chloropentafluoro-, CFC-115\", \"air\", 7.43e-09),\n", + " (\"Carbon monoxide, fossil\", \"air\", 2.74e-13),\n", + " (\n", + " \"Carbon monoxide, fossil\",\n", + " \"air::low population density, long-term\",\n", + " 2.74e-13,\n", + " ),\n", + " (\"Carbon monoxide, non-fossil\", \"air\", 2.74e-13),\n", + " (\"Methane\", \"air::urban air close to ground\", 1.59e-12),\n", + " ]\n", + " ),\n", + " columns=[\"name\", \"categories\", \"amount\"],\n", + ")\n", + "\n", + "# with duplicates\n", + "data_with_duplicates = data_good.copy(deep=True)\n", + "data_with_duplicates.iloc[1] = data_with_duplicates.iloc[2]\n", + "data_with_duplicates.iloc[5] = data_with_duplicates.iloc[4]\n", + "\n", + "# with all NaN\n", + "data_with_all_nan = pd.DataFrame(\n", + " np.empty_like(data_good), columns=[\"name\", \"categories\", \"amount\"],\n", + ")\n", + "data_with_all_nan[:] = np.nan\n", + "\n", + "# with all duplicates\n", + "data_with_all_duplicates = pd.concat([data_good.iloc[0:1,:]]*5,ignore_index=True)\n", + "\n", + "# with empty df\n", + "data_empty = pd.DataFrame(columns=[\"name\", \"categories\", \"amount\"],)\n", + "\n", + "# with more columns\n", + "data_more_columns = data_good.copy(deep=True)\n", + "data_more_columns[\"extra_column\"] = data_good.iloc[:,1]\n", + "\n", + "# with less columns\n", + "data_less_columns = data_good.copy(deep=True)\n", + "data_less_columns.drop(\"categories\", axis=1, inplace=True)\n", + "\n", + "# data_more_columns\n", + "# data_good\n", + "# data_with_duplicates\n", + "# data_with_all_nan\n", + "# data_empty\n", + "# data_less_columns\n", + "# data_with_all_duplicates\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "db567428-52ac-4449-86a8-e2868adaed3b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0Carbon dioxide, fossilair3.53e-13
1Ethane, chloropentafluoro-, CFC-115air7.43e-09
2Carbon monoxide, fossilair2.74e-13
3Carbon monoxide, fossilair::low population density, long-term2.74e-13
4Carbon monoxide, non-fossilair2.74e-13
5Methaneair::urban air close to ground1.59e-12
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Carbon dioxide, fossil \n", + "1 Ethane, chloropentafluoro-, CFC-115 \n", + "2 Carbon monoxide, fossil \n", + "3 Carbon monoxide, fossil \n", + "4 Carbon monoxide, non-fossil \n", + "5 Methane \n", + "\n", + " categories amount \n", + "0 air 3.53e-13 \n", + "1 air 7.43e-09 \n", + "2 air 2.74e-13 \n", + "3 air::low population density, long-term 2.74e-13 \n", + "4 air 2.74e-13 \n", + "5 air::urban air close to ground 1.59e-12 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_good" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "c0ec3c1e-be95-40e6-8482-3dd2d3cf059e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0Carbon dioxide, fossilairNaN
1Ethane, chloropentafluoro-, CFC-115air7.430000e-09
2Carbon monoxide, fossilair2.740000e-13
3Carbon monoxide, fossilair::low population density, long-term2.740000e-13
4Carbon monoxide, non-fossilair2.740000e-13
5Methaneair::urban air close to ground1.590000e-12
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Carbon dioxide, fossil \n", + "1 Ethane, chloropentafluoro-, CFC-115 \n", + "2 Carbon monoxide, fossil \n", + "3 Carbon monoxide, fossil \n", + "4 Carbon monoxide, non-fossil \n", + "5 Methane \n", + "\n", + " categories amount \n", + "0 air NaN \n", + "1 air 7.430000e-09 \n", + "2 air 2.740000e-13 \n", + "3 air::low population density, long-term 2.740000e-13 \n", + "4 air 2.740000e-13 \n", + "5 air::urban air close to ground 1.590000e-12 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_good[\"amount\"] = pd.to_numeric(data_good['amount'], errors='coerce')#.notnull().all()\n", + "data_good" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "0ad76bf7-ea40-41f7-98d7-7bfbf6de3c5a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0Carbon dioxide, fossilairtt3.53e-13
1Ethane, chloropentafluoro-, CFC-115air7.43e-09
2Carbon monoxide, fossilair2.74e-13
3Carbon monoxide, fossilair::low population density, long-term2.74e-13
4Carbon monoxide, non-fossilair2.74e-13
5Methaneair::urban air close to ground1.59e-12
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Carbon dioxide, fossil \n", + "1 Ethane, chloropentafluoro-, CFC-115 \n", + "2 Carbon monoxide, fossil \n", + "3 Carbon monoxide, fossil \n", + "4 Carbon monoxide, non-fossil \n", + "5 Methane \n", + "\n", + " categories amount \n", + "0 air tt3.53e-13 \n", + "1 air 7.43e-09 \n", + "2 air 2.74e-13 \n", + "3 air::low population density, long-term 2.74e-13 \n", + "4 air 2.74e-13 \n", + "5 air::urban air close to ground 1.59e-12 " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_good" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "cb325c47-7f1f-4432-82c6-368d9c00574a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_empty[data_empty.duplicated(keep=\"first\")].empty" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "555013f3-cb07-40f0-b263-6ef3050336d3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamountextra_column
0Carbon dioxide, fossilairtt3.53e-13air
1Ethane, chloropentafluoro-, CFC-115air7.43e-09air
2Carbon monoxide, fossilair2.74e-13air
3Carbon monoxide, fossilair::low population density, long-term2.74e-13air::low population density, long-term
4Carbon monoxide, non-fossilair2.74e-13air
5Methaneair::urban air close to ground1.59e-12air::urban air close to ground
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Carbon dioxide, fossil \n", + "1 Ethane, chloropentafluoro-, CFC-115 \n", + "2 Carbon monoxide, fossil \n", + "3 Carbon monoxide, fossil \n", + "4 Carbon monoxide, non-fossil \n", + "5 Methane \n", + "\n", + " categories amount \\\n", + "0 air tt3.53e-13 \n", + "1 air 7.43e-09 \n", + "2 air 2.74e-13 \n", + "3 air::low population density, long-term 2.74e-13 \n", + "4 air 2.74e-13 \n", + "5 air::urban air close to ground 1.59e-12 \n", + "\n", + " extra_column \n", + "0 air \n", + "1 air \n", + "2 air \n", + "3 air::low population density, long-term \n", + "4 air \n", + "5 air::urban air close to ground " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_less_columns" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "51729f31-2065-452c-9fe6-eda4889fb7f2", + "metadata": {}, + "outputs": [], + "source": [ + "data = data_good\n", + "# data = data_with_duplicates\n", + "# data = data_with_all_nan\n", + "# data = data_empty\n", + "# data = data_more_columns\n", + "# data = data_less_columns\n", + "# data = data_with_all_duplicates\n", + "\n", + "\n", + "logging.basicConfig(format=\"%(levelname)s: %(message)s\", level=logging.DEBUG)\n", + "\n", + "\n", + "assert {\"name\", \"categories\", \"amount\"}.issubset(\n", + " data.columns\n", + "), \"Data must contain 'name', 'categories' and 'amount' column labels.\"\n", + "data = data[[\"name\", \"categories\", \"amount\"]]\n", + "\n", + "missing = data[data.isna().any(axis=1)]\n", + "if missing.empty:\n", + " clean_data = data\n", + "else:\n", + " clean_data = data.dropna(axis=0, how=\"any\")\n", + " if not missing.isna().values.all():\n", + " message_missing = (\n", + " f\"Data is missing in {filename} (see below incomplete sets):\\n\"\n", + " )\n", + " message_missing += missing.to_markdown(\n", + " index=False, tablefmt=\"pretty\", stralign=\"left\"\n", + " )\n", + " message_missing += \"\\nNote: These sets will be omitted.\"\n", + " logging.warning(message_missing)\n", + "if clean_data.empty:\n", + " raise ValueError(f\"Data in {filename} is not valid.\")\n", + "\n", + "duplicates = clean_data[\n", + " clean_data.duplicated(subset=[\"name\", \"categories\", \"amount\"], keep=\"first\")\n", + "]\n", + "if duplicates.empty:\n", + " sanitized_data = clean_data\n", + "else:\n", + " message_duplicate = f\"Duplicated flows found in {filename} (see below):\\n\"\n", + " message_duplicate += duplicates.to_markdown(\n", + " index=False, tablefmt=\"pretty\", stralign=\"left\"\n", + " )\n", + " message_duplicate += \"\\nNote: All duplicates will be removed.\"\n", + " logging.warning(message_duplicate)\n", + " sanitized_data = clean_data.drop_duplicates(keep=\"first\", ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "327d47a9-b4fd-4060-83b5-e0fcf1c268a0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0Carbon dioxide, fossilairtt3.53e-13
1Ethane, chloropentafluoro-, CFC-115air7.43e-09
2Carbon monoxide, fossilair2.74e-13
3Carbon monoxide, fossilair::low population density, long-term2.74e-13
4Carbon monoxide, non-fossilair2.74e-13
5Methaneair::urban air close to ground1.59e-12
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Carbon dioxide, fossil \n", + "1 Ethane, chloropentafluoro-, CFC-115 \n", + "2 Carbon monoxide, fossil \n", + "3 Carbon monoxide, fossil \n", + "4 Carbon monoxide, non-fossil \n", + "5 Methane \n", + "\n", + " categories amount \n", + "0 air tt3.53e-13 \n", + "1 air 7.43e-09 \n", + "2 air 2.74e-13 \n", + "3 air::low population density, long-term 2.74e-13 \n", + "4 air 2.74e-13 \n", + "5 air::urban air close to ground 1.59e-12 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sanitized_data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2cd7b40a-fadc-4cd4-87c0-0418f217150e", + "metadata": {}, + "outputs": [], + "source": [ + "EXCEL_PATH = Path(\n", + " ROOT_DIR + r\"/data/temp\" + r\"/aesa_ClimateChange_EnergyImbalance.xlsx\"\n", + ")\n", + "# JSON_PATH = Path(\n", + "# ROOT_DIR + r\"/data/temp\" + r\"/trial.json\"\n", + "# )\n", + "YAML_PATH = Path(\n", + " ROOT_DIR + r\"/data/temp\" + r\"/trial.yaml\"\n", + ")\n", + "EXCEL_PATH_TRIAL = Path(\n", + " ROOT_DIR + r\"/data/temp\" + r\"/trial.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "79e2d78f-f69c-40ff-b932-271fd03d0f27", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'aesa_ClimateChange_EnergyImbalance.xlsx'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "EXCEL_PATH.name" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c0ada086-32e2-47b9-9829-ee55939df21f", + "metadata": {}, + "outputs": [], + "source": [ + "p = Path(ROOT_DIR + r\"/data/temp\")\n", + "p.mkdir(parents=True, exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5522cb5b-c268-49c5-8657-d03423736b88", + "metadata": {}, + "outputs": [ + { + "ename": "InvalidDirectory", + "evalue": "C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\tempos is not valid.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\VirtualEnvs\\bw2\\lib\\site-packages\\aesa_pbs\\utils.py\u001b[0m in \u001b[0;36mvalid_parent_dir\u001b[1;34m(filepath)\u001b[0m\n\u001b[0;32m 173\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 174\u001b[1;33m \u001b[1;32mwith\u001b[0m \u001b[0mtempfile\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTemporaryFile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdir\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdirname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 175\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\VirtualEnvs\\bw2\\lib\\tempfile.py\u001b[0m in \u001b[0;36mNamedTemporaryFile\u001b[1;34m(mode, buffering, encoding, newline, suffix, prefix, dir, delete, errors)\u001b[0m\n\u001b[0;32m 540\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 541\u001b[1;33m \u001b[1;33m(\u001b[0m\u001b[0mfd\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_mkstemp_inner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdir\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprefix\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msuffix\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutput_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 542\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\VirtualEnvs\\bw2\\lib\\tempfile.py\u001b[0m in \u001b[0;36m_mkstemp_inner\u001b[1;34m(dir, pre, suf, flags, output_type)\u001b[0m\n\u001b[0;32m 250\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 251\u001b[1;33m \u001b[0mfd\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_os\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfile\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0o600\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 252\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mFileExistsError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'C:\\\\Users\\\\vtulus\\\\Documents\\\\00-ETH_projects\\\\AESAmethods\\\\data\\\\tempos\\\\tmpa86g625r'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[1;31mInvalidDirectory\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_12404\\2909522598.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mconvert\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_excel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutfilepath\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34mr\"C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\tempos\\trial.xlsx\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\VirtualEnvs\\bw2\\lib\\site-packages\\aesa_pbs\\utils.py\u001b[0m in \u001b[0;36mto_excel\u001b[1;34m(self, outfilepath, verbose)\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[0moutfilepath\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDATA_EXCELS\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34mf\"/{filename}.xlsx\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 148\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 149\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mvalid_parent_dir\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutfilepath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 150\u001b[0m \u001b[0moutput_file_path\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moutfilepath\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 151\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\VirtualEnvs\\bw2\\lib\\site-packages\\aesa_pbs\\utils.py\u001b[0m in \u001b[0;36mvalid_parent_dir\u001b[1;34m(filepath)\u001b[0m\n\u001b[0;32m 176\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 177\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mEnvironmentError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 178\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mInvalidDirectory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf\"{dirname} is not valid.\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mInvalidDirectory\u001b[0m: C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\tempos is not valid." + ] + } + ], + "source": [ + "convert.to_excel(outfilepath=r\"C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\tempos\\trial.xlsx\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a42a6658-1146-4d8c-ba7c-0d1f5b053c43", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import yaml\n", + "from project_path import ROOT_DIR" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "05476cf1-9c9c-4921-a838-d1327ab47e1e", + "metadata": {}, + "outputs": [], + "source": [ + "df_ccei = pd.read_excel(EXCEL_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "adbf2d40-388d-4856-914a-b33021c83708", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['name', 'categories', 'amount'], dtype='object')" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_ccei.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "bf0b9f12-9f66-49db-9f3d-3d53da6e4471", + "metadata": {}, + "outputs": [], + "source": [ + "assert sorted(list(df_ccei.columns)) == sorted(\n", + " [\"name\", \"categories\", \"amount\"]\n", + "), \"Excel file must contain only 'name', 'categories' and 'amount' columns.\"" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e62bdf68-4eec-486d-9bd1-f7bd37941d8a", + "metadata": {}, + "outputs": [], + "source": [ + "# result = df_ccei.to_json(JSON_PATH, orient=\"table\")\n", + "# result = df_ccei.to_json(orient=\"records\", double_precision=15)\n", + "result = df_ccei.to_dict(orient=\"records\")" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "7672eca9-f6fd-4499-ace3-f2445b9c756d", + "metadata": {}, + "outputs": [], + "source": [ + "parsed = json.loads(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "b4186de6-0357-4fb4-951e-cdb543675361", + "metadata": {}, + "outputs": [], + "source": [ + "# parsed" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "2eaffcca-63b0-477f-ba38-13724a12e6ed", + "metadata": {}, + "outputs": [], + "source": [ + "class DumperBlankLine(yaml.SafeDumper):\n", + " # HACK: insert blank lines between top-level objects\n", + " # inspired by https://github.com/yaml/pyyaml/issues/127#issuecomment-525800484\n", + " def write_line_break(self, data=None):\n", + " super().write_line_break(data)\n", + "\n", + " if len(self.indents) == 1:\n", + " super().write_line_break()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "49d4a4ea-798a-499c-bcdd-490b442333e2", + "metadata": {}, + "outputs": [], + "source": [ + "with open(YAML_PATH, \"w\") as file:\n", + " # yaml.safe_dump(\n", + " yaml.dump(\n", + " result,\n", + " file,\n", + " Dumper=DumperBlankLine,\n", + " default_flow_style=False,\n", + " default_style=None,\n", + " sort_keys=False,\n", + " indent=None,\n", + " )\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "91484bcc-4683-4296-b297-f39ad1744965", + "metadata": {}, + "outputs": [], + "source": [ + "with open(YAML_PATH, \"r\") as file:\n", + " loaded = yaml.safe_load(file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6aa1be1-8bf9-4f60-a9de-05dd7ca465cb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4bcd56e8-701f-45fe-8a4f-b9fdbf36ff97", + "metadata": {}, + "outputs": [], + "source": [ + "df_loaded = pd.DataFrame(loaded, columns=[\"name\", \"categories\", \"amount\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "e8a561c5-202e-48c4-8f7b-63f98d99f450", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0Carbon dioxide, fossilair3.530000e-13
1Carbon dioxide, fossilair::low population density, long-term3.530000e-13
2Carbon dioxide, fossilair::lower stratosphere + upper troposphere3.530000e-13
3Carbon dioxide, fossilair::non-urban air or from high stacks3.530000e-13
4Carbon dioxide, fossilair::urban air close to ground3.530000e-13
............
93Sulfur hexafluorideair6.710000e-08
94Sulfur hexafluorideair::low population density, long-term6.710000e-08
95Sulfur hexafluorideair::lower stratosphere + upper troposphere6.710000e-08
96Sulfur hexafluorideair::non-urban air or from high stacks6.710000e-08
97Sulfur hexafluorideair::urban air close to ground6.710000e-08
\n", + "

98 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " name categories \\\n", + "0 Carbon dioxide, fossil air \n", + "1 Carbon dioxide, fossil air::low population density, long-term \n", + "2 Carbon dioxide, fossil air::lower stratosphere + upper troposphere \n", + "3 Carbon dioxide, fossil air::non-urban air or from high stacks \n", + "4 Carbon dioxide, fossil air::urban air close to ground \n", + ".. ... ... \n", + "93 Sulfur hexafluoride air \n", + "94 Sulfur hexafluoride air::low population density, long-term \n", + "95 Sulfur hexafluoride air::lower stratosphere + upper troposphere \n", + "96 Sulfur hexafluoride air::non-urban air or from high stacks \n", + "97 Sulfur hexafluoride air::urban air close to ground \n", + "\n", + " amount \n", + "0 3.530000e-13 \n", + "1 3.530000e-13 \n", + "2 3.530000e-13 \n", + "3 3.530000e-13 \n", + "4 3.530000e-13 \n", + ".. ... \n", + "93 6.710000e-08 \n", + "94 6.710000e-08 \n", + "95 6.710000e-08 \n", + "96 6.710000e-08 \n", + "97 6.710000e-08 \n", + "\n", + "[98 rows x 3 columns]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_loaded.drop_duplicates(subset=[\"name\", \"categories\", \"amount\"], keep=\"first\", ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "ff02ddc4-608d-482d-9e2c-071b781ee52d", + "metadata": {}, + "outputs": [], + "source": [ + "df_loaded.fillna(\"dahdah\", inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "id": "3b5851c0-b97b-4ab4-9aae-6f9849e5b736", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
0NaNairos3.530000e-13
1Carbon dioxide, fossilair::low population density, long-term3.530000e-13
2Carbon dioxide, fossilair::lower stratosphere + upper troposphere3.530000e-13
3Carbon dioxide, fossilair::non-urban air or from high stacks3.530000e-13
4Carbon dioxide, fossilair::urban air close to ground3.530000e-13
............
93Sulfur hexafluorideair6.710000e-08
94Sulfur hexafluorideair::low population density, long-term6.710000e-08
95Sulfur hexafluorideair::lower stratosphere + upper troposphere6.710000e-08
96Sulfur hexafluorideair::non-urban air or from high stacks6.710000e-08
97Sulfur hexafluorideair::urban air close to ground6.710000e-08
\n", + "

98 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " name categories \\\n", + "0 NaN airos \n", + "1 Carbon dioxide, fossil air::low population density, long-term \n", + "2 Carbon dioxide, fossil air::lower stratosphere + upper troposphere \n", + "3 Carbon dioxide, fossil air::non-urban air or from high stacks \n", + "4 Carbon dioxide, fossil air::urban air close to ground \n", + ".. ... ... \n", + "93 Sulfur hexafluoride air \n", + "94 Sulfur hexafluoride air::low population density, long-term \n", + "95 Sulfur hexafluoride air::lower stratosphere + upper troposphere \n", + "96 Sulfur hexafluoride air::non-urban air or from high stacks \n", + "97 Sulfur hexafluoride air::urban air close to ground \n", + "\n", + " amount \n", + "0 3.530000e-13 \n", + "1 3.530000e-13 \n", + "2 3.530000e-13 \n", + "3 3.530000e-13 \n", + "4 3.530000e-13 \n", + ".. ... \n", + "93 6.710000e-08 \n", + "94 6.710000e-08 \n", + "95 6.710000e-08 \n", + "96 6.710000e-08 \n", + "97 6.710000e-08 \n", + "\n", + "[98 rows x 3 columns]" + ] + }, + "execution_count": 214, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_loaded.iloc[0,0] = np.nan\n", + "df_loaded" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "id": "8ae6d127-8831-425d-b80d-bb13af180959", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 185, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_loaded.isna().values.any()" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "4c2d7aa5-dbb0-4ab7-a8f8-d5701d01751b", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "id": "0d44451b-76dc-407b-9a71-24ca71e4c685", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\vtulus\\AppData\\Local\\Temp\\ipykernel_11884\\2120660221.py:3: UserWarning: \n", + "\n", + "Some data are missing in C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\temp\\trial.yaml.\n", + "Rows with incomplete data are removed.\n", + "\n", + " warnings.warn(f\"\\n\\nSome data are missing in {YAML_PATH}.\\nRows with incomplete data are removed.\\n\")\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecategoriesamount
1Carbon dioxide, fossilair::low population density, long-term3.530000e-13
2Carbon dioxide, fossilair::lower stratosphere + upper troposphere3.530000e-13
3Carbon dioxide, fossilair::non-urban air or from high stacks3.530000e-13
4Carbon dioxide, fossilair::urban air close to ground3.530000e-13
5Carbon dioxide, from soil or biomass stockair3.530000e-13
............
93Sulfur hexafluorideair6.710000e-08
94Sulfur hexafluorideair::low population density, long-term6.710000e-08
95Sulfur hexafluorideair::lower stratosphere + upper troposphere6.710000e-08
96Sulfur hexafluorideair::non-urban air or from high stacks6.710000e-08
97Sulfur hexafluorideair::urban air close to ground6.710000e-08
\n", + "

97 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " name \\\n", + "1 Carbon dioxide, fossil \n", + "2 Carbon dioxide, fossil \n", + "3 Carbon dioxide, fossil \n", + "4 Carbon dioxide, fossil \n", + "5 Carbon dioxide, from soil or biomass stock \n", + ".. ... \n", + "93 Sulfur hexafluoride \n", + "94 Sulfur hexafluoride \n", + "95 Sulfur hexafluoride \n", + "96 Sulfur hexafluoride \n", + "97 Sulfur hexafluoride \n", + "\n", + " categories amount \n", + "1 air::low population density, long-term 3.530000e-13 \n", + "2 air::lower stratosphere + upper troposphere 3.530000e-13 \n", + "3 air::non-urban air or from high stacks 3.530000e-13 \n", + "4 air::urban air close to ground 3.530000e-13 \n", + "5 air 3.530000e-13 \n", + ".. ... ... \n", + "93 air 6.710000e-08 \n", + "94 air::low population density, long-term 6.710000e-08 \n", + "95 air::lower stratosphere + upper troposphere 6.710000e-08 \n", + "96 air::non-urban air or from high stacks 6.710000e-08 \n", + "97 air::urban air close to ground 6.710000e-08 \n", + "\n", + "[97 rows x 3 columns]" + ] + }, + "execution_count": 215, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if df_loaded.isna().values.any():\n", + " df_clean = df_loaded.dropna(axis=0, how=\"any\")\n", + " warnings.warn(f\"\\n\\nSome data are missing in {YAML_PATH}.\\nRows with incomplete data are removed.\\n\")\n", + "else:\n", + " df_clean = df_loaded\n", + "df_clean" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "id": "b612ef2c-aa03-4dab-847d-dca5f04e5700", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 210, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_clean.empty" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "86fc0005-c39c-4acb-adc7-f9c9084d5255", + "metadata": {}, + "outputs": [], + "source": [ + "with pd.ExcelWriter(EXCEL_PATH_TRIAL, mode=\"w\", engine=\"openpyxl\") as writer:\n", + " df_ccei.to_excel(writer, index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "30fefeb2-6c56-4125-891f-8905ecbcf4f9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'.xlsx'" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "EXCEL_PATH_TRIAL.suffix" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "id": "09a738a4-f096-4b3e-9e70-d6a3b2d0b422", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pathlib.WindowsPath" + ] + }, + "execution_count": 216, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(EXCEL_PATH_TRIAL)" + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "id": "320cc955-db9d-4a21-a929-c9aef2828ad8", + "metadata": {}, + "outputs": [], + "source": [ + "add = EXCEL_PATH_TRIAL.resolve()" + ] + }, + { + "cell_type": "code", + "execution_count": 235, + "id": "666dbb3f-ecb9-4846-b692-67b500e40f5c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'trial'" + ] + }, + "execution_count": 235, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add.stem" + ] + }, + { + "cell_type": "code", + "execution_count": 243, + "id": "c734955b-c731-428c-8839-1035acc257e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(WindowsPath('C:/Users/vtulus/Documents/00-ETH_projects/AESAmethods/data/temp/aesa_ClimateChange_EnergyImbalance.xlsx'),\n", + " WindowsPath('/trial.yaml'))" + ] + }, + "execution_count": 247, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Path(str(EXCEL_PATH) + f\"/{add.stem}.yaml\")" + ] + }, + { + "cell_type": "code", + "execution_count": 254, + "id": "d3d9de52-626b-42cc-831a-ee0478d8a19d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Some data are missing in C:\\Users\\vtulus\\Documents\\00-ETH_projects\\AESAmethods\\data\\temp\\trial.xlsx.\n", + "Rows with incomplete data are removed.\n", + "\n" + ] + } + ], + "source": [ + "print(\n", + " f\"\\n\\nSome data are missing in {EXCEL_PATH_TRIAL}.\"\n", + " \"\\nRows with incomplete data are removed.\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b01c6484-5b96-4ef3-ab1b-9b510d431919", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (bw2)", + "language": "python", + "name": "bw2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..65561a7 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,52 @@ +[build-system] +requires = [ + "setuptools>=58", + "wheel", +] +build-backend = "setuptools.build_meta" + +[project] +name = "aesa_pbs" +dynamic = ["version"] +authors = [ + { name = "Victor Tulus", email = "vtulus@ethz.ch" }, +] +description = "Implementation of Absolute Environmental Sustainability Assessment (AESA) methods in brightway" +readme = "README.md" +license = { file = "LICENSE" } +requires-python = ">=3.7" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: BSD License", + "Operating System :: Microsoft :: Windows", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Scientific/Engineering :: Information Analysis", +] +dependencies = [ + "bw2io >= 0.8.6", + "brightway2", + "prettytable", +] + +[project.urls] +"Homepage" = "https://github.com/vtulus/AESAmethods" + +[project.optional-dependencies] +test = [ + "pytest", + "pytest-cov", + "pre-commit", +] + +[tool.setuptools] +package-dir = { "" = "src" } + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.dynamic] +version = { attr = "aesa_pbs.version.__version__" } + +[tool.isort] +profile = "black" diff --git a/src/aesa_pbs/__init__.py b/src/aesa_pbs/__init__.py new file mode 100644 index 0000000..b08beae --- /dev/null +++ b/src/aesa_pbs/__init__.py @@ -0,0 +1,16 @@ +__all__ = [ + "add_aesa_pbs", + "get_nitrogenous_fertilizers", + "update_nitrogen_fertilizer_exchanges", + "remove_nitrogen_fertilizer_exchanges", + "DataConverter", +] + +from .aesa_pbs import add_aesa_pbs +from .data_converter import DataConverter +from .n_direct_fixation import ( + get_nitrogenous_fertilizers, + remove_nitrogen_fertilizer_exchanges, + update_nitrogen_fertilizer_exchanges, +) +from .version import __version__ diff --git a/src/aesa_pbs/aesa_pbs.py b/src/aesa_pbs/aesa_pbs.py new file mode 100644 index 0000000..f78380e --- /dev/null +++ b/src/aesa_pbs/aesa_pbs.py @@ -0,0 +1,446 @@ +import functools +import json +import shutil +import tempfile +from pathlib import Path + +import brightway2 as bw +from bw2io import ExcelLCIAImporter, strategies +from prettytable import PrettyTable + +from .biosphere import get_biosphere_database +from .data_converter import DataConverter +from .version import __version__ + +try: + import importlib.resources as importlib_resources +except ImportError: + # Python < 3.7 + import importlib_resources + + +# write_methods() does not write metadata other than "description", "unit" and "filename" +# store everything in the description using json.dumps() +# later can be retrieved with json.loads() +def add_aesa_pbs(verbose=True): + """Add AESA (PBs-LCIA) method to a bw project. + Included categories are: + - climate change + - atmospheric CO2 concentration + - energy imbalance at top-of-atmosphere + - ozone depletion + - stratospheric O3 concentration + - ocean acidification + - carbonate ion concentration + - biogeochemical flows + - phosphorus + - nitrogen + - inverse modelling, surface water + - directly fixated + - land-system change + - global + - freshwater use + - global + - change in biosphere integrity + - functional diversity + - total + - direct land use + - CO2eq emissions + + Parameters + ---------- + verbose : bool, optional + Display applied strategies, by default True + """ + get_biosphere_database() + + # In categories: + # name: (method, version, categories) + # unit: unit + # description: + # {overview: "overview text", + # authors: of the method/category, + # doi: doi of published work, + # current_version: current version + # changelog: CHANGELOG, + # implemented_by: author implemented} + # filename: excel file with categories + + categories = { + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "climate change", + "atmospheric CO2 concentration", + ), + "ppm", + json.dumps( + { + "overview": "", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_ClimateChange_AtmosphericCO2Concentration.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "climate change", + "energy imbalance at top-of-atmosphere", + ), + "Wm-2", + json.dumps( + { + "overview": "", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_ClimateChange_EnergyImbalance.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "ozone depletion", + "stratospheric O3 concentration", + ), + "Dobson unit", + json.dumps( + { + "overview": "", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_OzoneDepletion_StratosphericO3Concentration.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "ocean acidification", + "carbonate ion concentration", + ), + "omega aragonite", + json.dumps( + { + "overview": "", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_OceanAcidification_CarbontateIonConcentration.xlsx", + ), + ( + ("AESA (PBs-LCIA)", str(__version__), "biogeochemical flows", "phosphorus"), + "Tg P", + json.dumps( + { + "overview": "P flow from freshwater systems into the ocean", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_BiogeochemicalFlows_P.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "biogeochemical flows", + "nitrogen", + "inverse modelling, surface water", + ), + "Tg N", + json.dumps( + { + "overview": "industrial and intentional biological fixation of N", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_BiogeochemicalFlows_N_inverseModelling_surfaceWater.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "biogeochemical flows", + "nitrogen", + "directly fixated", + ), + "Tg N", + json.dumps( + { + "overview": "direct quantification of industrial and intentional biological fixation of N fertilizer", + "authors": MAINTAINER, + "doi": None, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_BiogeochemicalFlows_N_directlyFixated.xlsx", + ), + ( + ("AESA (PBs-LCIA)", str(__version__), "land-system change", "global"), + "% forested land", + json.dumps( + { + "overview": "Unit: area of forested land as % of original forest cover", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_LandSystemChange_Global.xlsx", + ), + ( + ("AESA (PBs-LCIA)", str(__version__), "freshwater use", "global"), + "km3", + json.dumps( + { + "overview": "Unit: Maximum amount of consumptive blue water use per year", + "authors": RYBERG_ET_AL, + "doi": DOI_RYBERG, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_FreshwaterUse_Global.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "change in biosphere integrity", + "functional diversity", + "total", + ), + "% BII loss", + json.dumps( + { + "overview": "Unit: % of Biosphere Intactness Index loss", + "authors": GALAN_ET_AL, + "doi": DOI_GALAN, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "change in biosphere integrity", + "functional diversity", + "direct land use", + ), + "% BII loss", + json.dumps( + { + "overview": "Unit: % of Biosphere Intactness Index loss", + "authors": GALAN_ET_AL, + "doi": DOI_GALAN, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_land_use.xlsx", + ), + ( + ( + "AESA (PBs-LCIA)", + str(__version__), + "change in biosphere integrity", + "functional diversity", + "CO2eq emissions", + ), + "% BII loss", + json.dumps( + { + "overview": "Unit: % of Biosphere Intactness Index loss", + "authors": GALAN_ET_AL, + "doi": DOI_GALAN, + "current_version": "v" + __version__, + "changelog": CHANGELOG, + "implemented_by": MAINTAINER, + } + ), + "aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_CO2eq_emissions.xlsx", + ), + } + + temp_dir = tempfile.mkdtemp() + try: + for cat in categories: + yaml_filename = Path(cat[-1]).with_suffix(".yaml").name + with importlib_resources.path("aesa_pbs.data", yaml_filename) as yaml_path: + generate_excel_from_yaml(filepath=str(yaml_path), outdir=temp_dir) + + for cat in categories: + print(f"Adding {cat[0]}") + excel_path = Path(temp_dir) / cat[-1] + method = ExcelLCIAImporter( + filepath=excel_path, + name=cat[0], + unit=cat[1], + description=cat[2], + filename=cat[-1], + ) + + # flows of the method for directly fixated nitrogen may not be linked + # because of the missing database `A_technosphere_flows` + if all( + map( + lambda item: item in str(cat[0]).lower(), + ["nitrogen", "directly fixated"], + ) + ): + if "A_technosphere_flows" not in bw.databases: + # throw a warning and install the missing database + warning_directly_fixated_n() + # write new database + bw.Database("A_technosphere_flows").write( + { + ("A_technosphere_flows", "n-fert"): { # (db name, code) + "name": "nitrogen fertilizer", + "unit": "kilogram", + "type": "inventory flow", + "categories": ("inventory",), + } + } + ) + # apply strategies + method.apply_strategies( + method.strategies + + [ + drop_empty_lines, + functools.partial( + strategies.link_iterable_by_fields, + other=bw.Database("A_technosphere_flows"), + kind="biosphere", + fields=("name", "categories"), + ), + ], + verbose=verbose, + ) + else: + # apply strategies + method.apply_strategies( + method.strategies + [drop_empty_lines], verbose=verbose + ) + + # confirm that everything is correctly linked + assert ( + len(list(method.unlinked)) == 0 + ), f"{cat[0]} method contains unlinked flows. Method could not be installed." + + # write method + method.write_methods(overwrite=True, verbose=verbose) + if verbose: + print("") + finally: + shutil.rmtree(temp_dir) + + +# def get_changelog(): +# """Get changelog information from CHANGELOG.md + +# Returns +# ------- +# str +# Changelog information +# """ +# with open(CHANGELOG, "r") as f: +# return f.read() + + +# refs +RYBERG_ET_AL = "Ryberg, M. W.; Owsianiak, M.; Richardson, K.; Hauschild, M. Z." +GALAN_ET_AL = "Galán-Martín, Á.; Tulus, V.; Díaz, I.; Pozo, C.; Pérez-Ramírez, J.; Guillén-Gosálbez, G." +DOI_RYBERG = "https://doi.org/10.1016/j.ecolind.2017.12.065" +DOI_GALAN = "https://doi.org/10.1016/j.oneear.2021.04.001" +MAINTAINER = "Tulus, V." +# CHANGELOG = get_changelog() +CHANGELOG = "Find changelog here: https://github.com/vtulus/AESAmethods/blob/master/CHANGELOG.md" + + +def drop_empty_lines(data): + """Strategy for removing empty lines in excel. + + Returns modified data + """ + for method in data: + method["exchanges"] = [obj for obj in method["exchanges"] if obj["name"]] + return data + + +# TODO: substitute the print with logging? +def warning_directly_fixated_n() -> None: + """Printing a warning regarding a missing database.""" + message = PrettyTable(["Warning"]) + message.add_row( + [ + "The method for quantification of directly fixated nitrogen\n" + "requires an additional database `A_technosphere_flows`.\n" + "This database was not found in the current project.\n" + "It will be generated now.\n" + # "No further actions needed." + "\nNext steps:\n" + "1. Use `aesa_pbs.get_nitrogenous_fertilizers()` to filter\n" + " activities producing nitrogenous fertilizers in a\n" + " specific background database.\n" + "2. Use `aesa_pbs.update_nitrogen_fertilizer_exchanges()`\n" + " to modify those activities.\n\n" + "Optionally, \n" + "modified activities can be cleaned with\n" + " `aesa_pbs.remove_nitrogen_fertilizer_exchanges()`." + ] + ) + # align text to the left + message.align = "l" + print(message) + + +def generate_excel_from_yaml(filepath: str, outdir: str) -> None: + """Generate xlsx file from yaml file. + + Parameters + ---------- + filepath : str + Absolute path to a file for conversion + outdir : str + Absolute path to the output directory + """ + convert = DataConverter(filepath) + output_filepath = Path(outdir) / (Path(filepath).stem + ".xlsx") + convert.to_excel(outfilepath=output_filepath, verbose=False) diff --git a/src/aesa_pbs/biosphere.py b/src/aesa_pbs/biosphere.py new file mode 100644 index 0000000..8678b4f --- /dev/null +++ b/src/aesa_pbs/biosphere.py @@ -0,0 +1,7 @@ +import bw2data as bd + + +def get_biosphere_database(): + ERROR = "AESA methods work with ecoinvent biosphere flows only. Install base ecoinvent data." + assert "biosphere3" in bd.databases, ERROR + return list(bd.Database("biosphere3")) diff --git a/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_directlyFixated.yaml b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_directlyFixated.yaml new file mode 100644 index 0000000..0fcc306 --- /dev/null +++ b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_directlyFixated.yaml @@ -0,0 +1,3 @@ +- name: nitrogen fertilizer + categories: inventory + amount: 1.0e-09 diff --git a/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_inverseModelling_surfaceWater.yaml b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_inverseModelling_surfaceWater.yaml new file mode 100644 index 0000000..b8263be --- /dev/null +++ b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_N_inverseModelling_surfaceWater.yaml @@ -0,0 +1,7 @@ +- name: Nitrate + categories: water::surface water + amount: 5.51e-09 + +- name: Nitrogen + categories: water::surface water + amount: 2.44e-08 diff --git a/src/aesa_pbs/data/aesa_BiogeochemicalFlows_P.yaml b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_P.yaml new file mode 100644 index 0000000..7a86bf2 --- /dev/null +++ b/src/aesa_pbs/data/aesa_BiogeochemicalFlows_P.yaml @@ -0,0 +1,7 @@ +- name: Phosphate + categories: water::surface water + amount: 2.81e-10 + +- name: Phosphorus + categories: water::surface water + amount: 8.61e-10 diff --git a/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.yaml b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.yaml new file mode 100644 index 0000000..2fd21d7 --- /dev/null +++ b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist.yaml @@ -0,0 +1,903 @@ +- name: Occupation, annual crop + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, greenhouse + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, annual crop, irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, non-irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, non-irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, annual crop, non-irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, arable land, unspecified use + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, construction site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, dump site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, forest, extensive + categories: natural resource::land + amount: 2.307692307692307e-13 + +- name: Occupation, forest, intensive + categories: natural resource::land + amount: 6.153846153846154e-13 + +- name: Occupation, forest, secondary (non-use) + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, forest, unspecified + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, heterogeneous, agricultural + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, industrial area + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, mineral extraction site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, pasture, man made + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, pasture, man made, extensive + categories: natural resource::land + amount: 2.307692307692307e-13 + +- name: Occupation, pasture, man made, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, permanent crop, irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, non-irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, non-irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, permanent crop, non-irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, river, artificial + categories: natural resource::land + amount: 7.692307692307692e-13 + +- name: Occupation, lake, artificial + categories: natural resource::land + amount: 7.692307692307692e-13 + +- name: Occupation, shrub land, sclerophyllous + categories: natural resource::land + amount: 0.0 + +- name: Occupation, traffic area, rail network + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, traffic area, rail/road embankment + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, traffic area, road network + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, continuously built + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, discontinuously built + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, green area + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban/industrial fallow (non-use) + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Chloroform + categories: air + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::low population density, long-term + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::lower stratosphere + upper troposphere + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::non-urban air or from high stacks + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::urban air close to ground + amount: 4.153846153846154e-12 + +- name: Hydrocarbons, chlorinated + categories: air + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::low population density, long-term + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::lower stratosphere + upper troposphere + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::non-urban air or from high stacks + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::urban air close to ground + amount: 2.866153846153846e-12 + +- name: carbon dioxide, fossil + categories: air + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::low population density, long-term + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::non-urban air or from high stacks + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::urban air close to ground + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::low population density, long-term + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::urban air close to ground + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::indoor + amount: 2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::agricultural + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::forestry + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::industrial + amount: -2.076923076923077e-13 + +- name: dinitrogen monoxide + categories: air + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::low population density, long-term + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::lower stratosphere + upper troposphere + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::non-urban air or from high stacks + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::urban air close to ground + amount: 6.18923076923077e-11 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::low population density, long-term + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::lower stratosphere + upper troposphere + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::non-urban air or from high stacks + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::urban air close to ground + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::low population density, long-term + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::lower stratosphere + upper troposphere + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::non-urban air or from high stacks + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::urban air close to ground + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::low population density, long-term + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::lower stratosphere + upper troposphere + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::non-urban air or from high stacks + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::urban air close to ground + amount: 1.367861538461538e-09 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::low population density, long-term + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::lower stratosphere + upper troposphere + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::non-urban air or from high stacks + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::urban air close to ground + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::low population density, long-term + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::lower stratosphere + upper troposphere + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::non-urban air or from high stacks + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::urban air close to ground + amount: 3.468461538461538e-11 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::low population density, long-term + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::lower stratosphere + upper troposphere + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::non-urban air or from high stacks + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::urban air close to ground + amount: 1.996961538461538e-09 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::low population density, long-term + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::lower stratosphere + upper troposphere + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::non-urban air or from high stacks + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::urban air close to ground + amount: 4.870384615384616e-10 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::low population density, long-term + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::lower stratosphere + upper troposphere + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::non-urban air or from high stacks + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::urban air close to ground + amount: 1.993846153846154e-11 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::low population density, long-term + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::lower stratosphere + upper troposphere + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::non-urban air or from high stacks + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::urban air close to ground + amount: 1.318846153846154e-10 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::low population density, long-term + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::lower stratosphere + upper troposphere + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::non-urban air or from high stacks + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::urban air close to ground + amount: 1.768707692307692e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::low population density, long-term + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::lower stratosphere + upper troposphere + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::non-urban air or from high stacks + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::urban air close to ground + amount: 2.562923076923077e-09 + +- name: ethane, pentafluoro-, hfc-125 + categories: air + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::low population density, long-term + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::lower stratosphere + upper troposphere + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::non-urban air or from high stacks + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::urban air close to ground + amount: 7.665923076923077e-10 + +- name: methane + categories: air::urban air close to ground + amount: 7.476923076923077e-12 + +- name: methane, bromo-, halon 1001 + categories: air + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::low population density, long-term + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::lower stratosphere + upper troposphere + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::non-urban air or from high stacks + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::urban air close to ground + amount: 6.230769230769231e-13 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::low population density, long-term + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::lower stratosphere + upper troposphere + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::non-urban air or from high stacks + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::urban air close to ground + amount: 4.29923076923077e-10 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::low population density, long-term + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::lower stratosphere + upper troposphere + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::non-urban air or from high stacks + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::urban air close to ground + amount: 1.48583076923077e-09 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::low population density, long-term + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::lower stratosphere + upper troposphere + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::non-urban air or from high stacks + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::urban air close to ground + amount: 4.374e-10 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::low population density, long-term + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::lower stratosphere + upper troposphere + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::non-urban air or from high stacks + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::urban air close to ground + amount: 3.209053846153847e-09 + +- name: methane, dichloro-, hcc-30 + categories: air + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::low population density, long-term + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::lower stratosphere + upper troposphere + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::non-urban air or from high stacks + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::urban air close to ground + amount: 2.284615384615385e-12 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::low population density, long-term + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::lower stratosphere + upper troposphere + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::non-urban air or from high stacks + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::urban air close to ground + amount: 2.398223076923077e-09 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::low population density, long-term + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::lower stratosphere + upper troposphere + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::non-urban air or from high stacks + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::urban air close to ground + amount: 3.717692307692308e-11 + +- name: methane, difluoro-, hfc-32 + categories: air + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::low population density, long-term + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::lower stratosphere + upper troposphere + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::non-urban air or from high stacks + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::urban air close to ground + amount: 1.696846153846154e-10 + +- name: methane, fossil + categories: air + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::low population density, long-term + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::non-urban air or from high stacks + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::urban air close to ground + amount: 7.476923076923077e-12 + +- name: methane, from soil or biomass stock + categories: air + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::low population density, long-term + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::urban air close to ground + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::indoor + amount: 7.061538461538462e-12 + +- name: methane, monochloro-, r-40 + categories: air + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::low population density, long-term + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::lower stratosphere + upper troposphere + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::non-urban air or from high stacks + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::urban air close to ground + amount: 3.115384615384616e-12 + +- name: methane, non-fossil + categories: air + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::low population density, long-term + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::non-urban air or from high stacks + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::urban air close to ground + amount: 7.061538461538462e-12 + +- name: methane, tetrachloro-, r-10 + categories: air + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::low population density, long-term + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::lower stratosphere + upper troposphere + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::non-urban air or from high stacks + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::urban air close to ground + amount: 4.193307692307692e-10 + +- name: methane, tetrafluoro-, r-14 + categories: air + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::low population density, long-term + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::lower stratosphere + upper troposphere + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::non-urban air or from high stacks + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::urban air close to ground + amount: 1.526330769230769e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::low population density, long-term + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::lower stratosphere + upper troposphere + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::non-urban air or from high stacks + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::urban air close to ground + amount: 1.111569230769231e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::low population density, long-term + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::lower stratosphere + upper troposphere + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::non-urban air or from high stacks + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::urban air close to ground + amount: 2.877784615384616e-09 + +- name: nitrogen fluoride + categories: air + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::low population density, long-term + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::lower stratosphere + upper troposphere + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::non-urban air or from high stacks + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::urban air close to ground + amount: 3.714576923076923e-09 + +- name: perfluoropentane + categories: air + amount: 1.969753846153846e-09 + +- name: sulfur hexafluoride + categories: air + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::low population density, long-term + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::lower stratosphere + upper troposphere + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::non-urban air or from high stacks + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::urban air close to ground + amount: 5.418069230769231e-09 diff --git a/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_CO2eq_emissions.yaml b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_CO2eq_emissions.yaml new file mode 100644 index 0000000..798393e --- /dev/null +++ b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_CO2eq_emissions.yaml @@ -0,0 +1,751 @@ +- name: Chloroform + categories: air + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::low population density, long-term + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::lower stratosphere + upper troposphere + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::non-urban air or from high stacks + amount: 4.153846153846154e-12 + +- name: Chloroform + categories: air::urban air close to ground + amount: 4.153846153846154e-12 + +- name: Hydrocarbons, chlorinated + categories: air + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::low population density, long-term + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::lower stratosphere + upper troposphere + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::non-urban air or from high stacks + amount: 2.866153846153846e-12 + +- name: Hydrocarbons, chlorinated + categories: air::urban air close to ground + amount: 2.866153846153846e-12 + +- name: carbon dioxide, fossil + categories: air + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::low population density, long-term + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::non-urban air or from high stacks + amount: 2.076923076923077e-13 + +- name: carbon dioxide, fossil + categories: air::urban air close to ground + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::low population density, long-term + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::urban air close to ground + amount: 2.076923076923077e-13 + +- name: carbon dioxide, from soil or biomass stock + categories: air::indoor + amount: 2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::agricultural + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::forestry + amount: -2.076923076923077e-13 + +- name: carbon dioxide, to soil or biomass stock + categories: soil::industrial + amount: -2.076923076923077e-13 + +- name: dinitrogen monoxide + categories: air + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::low population density, long-term + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::lower stratosphere + upper troposphere + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::non-urban air or from high stacks + amount: 6.18923076923077e-11 + +- name: dinitrogen monoxide + categories: air::urban air close to ground + amount: 6.18923076923077e-11 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::low population density, long-term + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::lower stratosphere + upper troposphere + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::non-urban air or from high stacks + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1,2-tetrafluoro-, hfc-134a + categories: air::urban air close to ground + amount: 3.217153846153846e-10 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::low population density, long-term + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::lower stratosphere + upper troposphere + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::non-urban air or from high stacks + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,1-trifluoro-, hfc-143a + categories: air::urban air close to ground + amount: 1.143969230769231e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::low population density, long-term + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::lower stratosphere + upper troposphere + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::non-urban air or from high stacks + amount: 1.367861538461538e-09 + +- name: ethane, 1,1,2-trichloro-1,2,2-trifluoro-, cfc-113 + categories: air::urban air close to ground + amount: 1.367861538461538e-09 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::low population density, long-term + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::lower stratosphere + upper troposphere + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::non-urban air or from high stacks + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-dichloro-1-fluoro-, hcfc-141b + categories: air::urban air close to ground + amount: 1.948153846153846e-10 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::low population density, long-term + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::lower stratosphere + upper troposphere + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::non-urban air or from high stacks + amount: 3.468461538461538e-11 + +- name: ethane, 1,1-difluoro-, hfc-152a + categories: air::urban air close to ground + amount: 3.468461538461538e-11 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::low population density, long-term + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::lower stratosphere + upper troposphere + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::non-urban air or from high stacks + amount: 1.996961538461538e-09 + +- name: ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, cfc-114 + categories: air::urban air close to ground + amount: 1.996961538461538e-09 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::low population density, long-term + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::lower stratosphere + upper troposphere + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::non-urban air or from high stacks + amount: 4.870384615384616e-10 + +- name: ethane, 1-chloro-1,1-difluoro-, hcfc-142b + categories: air::urban air close to ground + amount: 4.870384615384616e-10 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::low population density, long-term + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::lower stratosphere + upper troposphere + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::non-urban air or from high stacks + amount: 1.993846153846154e-11 + +- name: ethane, 2,2-dichloro-1,1,1-trifluoro-, hcfc-123 + categories: air::urban air close to ground + amount: 1.993846153846154e-11 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::low population density, long-term + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::lower stratosphere + upper troposphere + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::non-urban air or from high stacks + amount: 1.318846153846154e-10 + +- name: ethane, 2-chloro-1,1,1,2-tetrafluoro-, hcfc-124 + categories: air::urban air close to ground + amount: 1.318846153846154e-10 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::low population density, long-term + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::lower stratosphere + upper troposphere + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::non-urban air or from high stacks + amount: 1.768707692307692e-09 + +- name: ethane, chloropentafluoro-, cfc-115 + categories: air::urban air close to ground + amount: 1.768707692307692e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::low population density, long-term + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::lower stratosphere + upper troposphere + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::non-urban air or from high stacks + amount: 2.562923076923077e-09 + +- name: ethane, hexafluoro-, hfc-116 + categories: air::urban air close to ground + amount: 2.562923076923077e-09 + +- name: ethane, pentafluoro-, hfc-125 + categories: air + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::low population density, long-term + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::lower stratosphere + upper troposphere + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::non-urban air or from high stacks + amount: 7.665923076923077e-10 + +- name: ethane, pentafluoro-, hfc-125 + categories: air::urban air close to ground + amount: 7.665923076923077e-10 + +- name: methane + categories: air::urban air close to ground + amount: 7.476923076923077e-12 + +- name: methane, bromo-, halon 1001 + categories: air + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::low population density, long-term + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::lower stratosphere + upper troposphere + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::non-urban air or from high stacks + amount: 6.230769230769231e-13 + +- name: methane, bromo-, halon 1001 + categories: air::urban air close to ground + amount: 6.230769230769231e-13 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::low population density, long-term + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::lower stratosphere + upper troposphere + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::non-urban air or from high stacks + amount: 4.29923076923077e-10 + +- name: methane, bromochlorodifluoro-, halon 1211 + categories: air::urban air close to ground + amount: 4.29923076923077e-10 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::low population density, long-term + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::lower stratosphere + upper troposphere + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::non-urban air or from high stacks + amount: 1.48583076923077e-09 + +- name: methane, bromotrifluoro-, halon 1301 + categories: air::urban air close to ground + amount: 1.48583076923077e-09 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::low population density, long-term + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::lower stratosphere + upper troposphere + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::non-urban air or from high stacks + amount: 4.374e-10 + +- name: methane, chlorodifluoro-, hcfc-22 + categories: air::urban air close to ground + amount: 4.374e-10 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::low population density, long-term + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::lower stratosphere + upper troposphere + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::non-urban air or from high stacks + amount: 3.209053846153847e-09 + +- name: methane, chlorotrifluoro-, cfc-13 + categories: air::urban air close to ground + amount: 3.209053846153847e-09 + +- name: methane, dichloro-, hcc-30 + categories: air + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::low population density, long-term + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::lower stratosphere + upper troposphere + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::non-urban air or from high stacks + amount: 2.284615384615385e-12 + +- name: methane, dichloro-, hcc-30 + categories: air::urban air close to ground + amount: 2.284615384615385e-12 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::low population density, long-term + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::lower stratosphere + upper troposphere + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::non-urban air or from high stacks + amount: 2.398223076923077e-09 + +- name: methane, dichlorodifluoro-, cfc-12 + categories: air::urban air close to ground + amount: 2.398223076923077e-09 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::low population density, long-term + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::lower stratosphere + upper troposphere + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::non-urban air or from high stacks + amount: 3.717692307692308e-11 + +- name: methane, dichlorofluoro-, hcfc-21 + categories: air::urban air close to ground + amount: 3.717692307692308e-11 + +- name: methane, difluoro-, hfc-32 + categories: air + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::low population density, long-term + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::lower stratosphere + upper troposphere + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::non-urban air or from high stacks + amount: 1.696846153846154e-10 + +- name: methane, difluoro-, hfc-32 + categories: air::urban air close to ground + amount: 1.696846153846154e-10 + +- name: methane, fossil + categories: air + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::low population density, long-term + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::non-urban air or from high stacks + amount: 7.476923076923077e-12 + +- name: methane, fossil + categories: air::urban air close to ground + amount: 7.476923076923077e-12 + +- name: methane, from soil or biomass stock + categories: air + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::low population density, long-term + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::urban air close to ground + amount: 7.061538461538462e-12 + +- name: methane, from soil or biomass stock + categories: air::indoor + amount: 7.061538461538462e-12 + +- name: methane, monochloro-, r-40 + categories: air + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::low population density, long-term + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::lower stratosphere + upper troposphere + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::non-urban air or from high stacks + amount: 3.115384615384616e-12 + +- name: methane, monochloro-, r-40 + categories: air::urban air close to ground + amount: 3.115384615384616e-12 + +- name: methane, non-fossil + categories: air + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::low population density, long-term + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::non-urban air or from high stacks + amount: 7.061538461538462e-12 + +- name: methane, non-fossil + categories: air::urban air close to ground + amount: 7.061538461538462e-12 + +- name: methane, tetrachloro-, r-10 + categories: air + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::low population density, long-term + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::lower stratosphere + upper troposphere + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::non-urban air or from high stacks + amount: 4.193307692307692e-10 + +- name: methane, tetrachloro-, r-10 + categories: air::urban air close to ground + amount: 4.193307692307692e-10 + +- name: methane, tetrafluoro-, r-14 + categories: air + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::low population density, long-term + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::lower stratosphere + upper troposphere + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::non-urban air or from high stacks + amount: 1.526330769230769e-09 + +- name: methane, tetrafluoro-, r-14 + categories: air::urban air close to ground + amount: 1.526330769230769e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::low population density, long-term + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::lower stratosphere + upper troposphere + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::non-urban air or from high stacks + amount: 1.111569230769231e-09 + +- name: methane, trichlorofluoro-, cfc-11 + categories: air::urban air close to ground + amount: 1.111569230769231e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::low population density, long-term + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::lower stratosphere + upper troposphere + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::non-urban air or from high stacks + amount: 2.877784615384616e-09 + +- name: methane, trifluoro-, hfc-23 + categories: air::urban air close to ground + amount: 2.877784615384616e-09 + +- name: nitrogen fluoride + categories: air + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::low population density, long-term + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::lower stratosphere + upper troposphere + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::non-urban air or from high stacks + amount: 3.714576923076923e-09 + +- name: nitrogen fluoride + categories: air::urban air close to ground + amount: 3.714576923076923e-09 + +- name: perfluoropentane + categories: air + amount: 1.969753846153846e-09 + +- name: sulfur hexafluoride + categories: air + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::low population density, long-term + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::lower stratosphere + upper troposphere + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::non-urban air or from high stacks + amount: 5.418069230769231e-09 + +- name: sulfur hexafluoride + categories: air::urban air close to ground + amount: 5.418069230769231e-09 diff --git a/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_land_use.yaml b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_land_use.yaml new file mode 100644 index 0000000..600e047 --- /dev/null +++ b/src/aesa_pbs/data/aesa_ChangeBiosphereIntegrity_FunctionalDiversity_Hierarchist_land_use.yaml @@ -0,0 +1,151 @@ +- name: Occupation, annual crop + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, greenhouse + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, annual crop, irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, non-irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, annual crop, non-irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, annual crop, non-irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, arable land, unspecified use + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, construction site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, dump site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, forest, extensive + categories: natural resource::land + amount: 2.307692307692307e-13 + +- name: Occupation, forest, intensive + categories: natural resource::land + amount: 6.153846153846154e-13 + +- name: Occupation, forest, secondary (non-use) + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, forest, unspecified + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, heterogeneous, agricultural + categories: natural resource::land + amount: 3.846153846153846e-13 + +- name: Occupation, industrial area + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, mineral extraction site + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, pasture, man made + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, pasture, man made, extensive + categories: natural resource::land + amount: 2.307692307692307e-13 + +- name: Occupation, pasture, man made, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, permanent crop, irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, non-irrigated + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, permanent crop, non-irrigated, extensive + categories: natural resource::land + amount: 5.384615384615384e-13 + +- name: Occupation, permanent crop, non-irrigated, intensive + categories: natural resource::land + amount: 6.923076923076923e-13 + +- name: Occupation, river, artificial + categories: natural resource::land + amount: 7.692307692307692e-13 + +- name: Occupation, lake, artificial + categories: natural resource::land + amount: 7.692307692307692e-13 + +- name: Occupation, shrub land, sclerophyllous + categories: natural resource::land + amount: 0.0 + +- name: Occupation, traffic area, rail network + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, traffic area, rail/road embankment + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, traffic area, road network + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, continuously built + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, discontinuously built + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban, green area + categories: natural resource::land + amount: 7.307692307692307e-13 + +- name: Occupation, urban/industrial fallow (non-use) + categories: natural resource::land + amount: 7.307692307692307e-13 diff --git a/src/aesa_pbs/data/aesa_ClimateChange_AtmosphericCO2Concentration.yaml b/src/aesa_pbs/data/aesa_ClimateChange_AtmosphericCO2Concentration.yaml new file mode 100644 index 0000000..b4c5275 --- /dev/null +++ b/src/aesa_pbs/data/aesa_ClimateChange_AtmosphericCO2Concentration.yaml @@ -0,0 +1,167 @@ +- name: Carbon dioxide, fossil + categories: air + amount: 2.69e-11 + +- name: Carbon dioxide, fossil + categories: air::low population density, long-term + amount: 2.69e-11 + +- name: Carbon dioxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.69e-11 + +- name: Carbon dioxide, fossil + categories: air::non-urban air or from high stacks + amount: 2.69e-11 + +- name: Carbon dioxide, fossil + categories: air::urban air close to ground + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::indoor + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::low population density, long-term + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 2.69e-11 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::urban air close to ground + amount: 2.69e-11 + +- name: Carbon dioxide, non-fossil + categories: air + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::low population density, long-term + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::urban air close to ground + amount: 0.0 + +- name: Carbon monoxide, fossil + categories: air + amount: 4.23e-11 + +- name: Carbon monoxide, fossil + categories: air::low population density, long-term + amount: 4.23e-11 + +- name: Carbon monoxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 4.23e-11 + +- name: Carbon monoxide, fossil + categories: air::non-urban air or from high stacks + amount: 4.23e-11 + +- name: Carbon monoxide, fossil + categories: air::urban air close to ground + amount: 4.23e-11 + +- name: Carbon monoxide, non-fossil + categories: air + amount: 4.23e-11 + +- name: Carbon monoxide, non-fossil + categories: air::low population density, long-term + amount: 4.23e-11 + +- name: Carbon monoxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 4.23e-11 + +- name: Carbon monoxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 4.23e-11 + +- name: Carbon monoxide, non-fossil + categories: air::urban air close to ground + amount: 4.23e-11 + +- name: Methane + categories: air::urban air close to ground + amount: 7.4e-11 + +- name: Methane, fossil + categories: air + amount: 7.4e-11 + +- name: Methane, fossil + categories: air::low population density, long-term + amount: 7.4e-11 + +- name: Methane, fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.4e-11 + +- name: Methane, fossil + categories: air::non-urban air or from high stacks + amount: 7.4e-11 + +- name: Methane, fossil + categories: air::urban air close to ground + amount: 7.4e-11 + +- name: Methane, non-fossil + categories: air + amount: 7.4e-11 + +- name: Methane, non-fossil + categories: air::low population density, long-term + amount: 7.4e-11 + +- name: Methane, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 7.4e-11 + +- name: Methane, non-fossil + categories: air::non-urban air or from high stacks + amount: 7.4e-11 + +- name: Methane, non-fossil + categories: air::urban air close to ground + amount: 7.4e-11 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air + amount: 8.07e-11 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::low population density, long-term + amount: 8.07e-11 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::lower stratosphere + upper troposphere + amount: 8.07e-11 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::non-urban air or from high stacks + amount: 8.07e-11 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::urban air close to ground + amount: 8.07e-11 diff --git a/src/aesa_pbs/data/aesa_ClimateChange_EnergyImbalance.yaml b/src/aesa_pbs/data/aesa_ClimateChange_EnergyImbalance.yaml new file mode 100644 index 0000000..1e3f141 --- /dev/null +++ b/src/aesa_pbs/data/aesa_ClimateChange_EnergyImbalance.yaml @@ -0,0 +1,391 @@ +- name: Carbon dioxide, fossil + categories: air + amount: 3.53e-13 + +- name: Carbon dioxide, fossil + categories: air::low population density, long-term + amount: 3.53e-13 + +- name: Carbon dioxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 3.53e-13 + +- name: Carbon dioxide, fossil + categories: air::non-urban air or from high stacks + amount: 3.53e-13 + +- name: Carbon dioxide, fossil + categories: air::urban air close to ground + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::indoor + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::low population density, long-term + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 3.53e-13 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::urban air close to ground + amount: 3.53e-13 + +- name: Carbon dioxide, in air + categories: natural resource::in air + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::low population density, long-term + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::urban air close to ground + amount: 0.0 + +- name: Carbon monoxide, fossil + categories: air + amount: 2.74e-13 + +- name: Carbon monoxide, fossil + categories: air::low population density, long-term + amount: 2.74e-13 + +- name: Carbon monoxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.74e-13 + +- name: Carbon monoxide, fossil + categories: air::non-urban air or from high stacks + amount: 2.74e-13 + +- name: Carbon monoxide, fossil + categories: air::urban air close to ground + amount: 2.74e-13 + +- name: Carbon monoxide, non-fossil + categories: air + amount: 2.74e-13 + +- name: Carbon monoxide, non-fossil + categories: air::low population density, long-term + amount: 2.74e-13 + +- name: Carbon monoxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.74e-13 + +- name: Carbon monoxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 2.74e-13 + +- name: Carbon monoxide, non-fossil + categories: air::urban air close to ground + amount: 2.74e-13 + +- name: Dinitrogen monoxide + categories: air + amount: 4.64e-11 + +- name: Dinitrogen monoxide + categories: air::low population density, long-term + amount: 4.64e-11 + +- name: Dinitrogen monoxide + categories: air::lower stratosphere + upper troposphere + amount: 4.64e-11 + +- name: Dinitrogen monoxide + categories: air::non-urban air or from high stacks + amount: 4.64e-11 + +- name: Dinitrogen monoxide + categories: air::urban air close to ground + amount: 4.64e-11 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air + amount: 7.65e-10 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::low population density, long-term + amount: 7.65e-10 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::lower stratosphere + upper troposphere + amount: 7.65e-10 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::non-urban air or from high stacks + amount: 7.65e-10 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::urban air close to ground + amount: 7.65e-10 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air + amount: 1.94e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::low population density, long-term + amount: 1.94e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::lower stratosphere + upper troposphere + amount: 1.94e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::non-urban air or from high stacks + amount: 1.94e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::urban air close to ground + amount: 1.94e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air + amount: 7.43e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::low population density, long-term + amount: 7.43e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::lower stratosphere + upper troposphere + amount: 7.43e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::non-urban air or from high stacks + amount: 7.43e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::urban air close to ground + amount: 7.43e-09 + +- name: Methane + categories: air::urban air close to ground + amount: 1.59e-12 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air + amount: 1.63e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::low population density, long-term + amount: 1.63e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::lower stratosphere + upper troposphere + amount: 1.63e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::non-urban air or from high stacks + amount: 1.63e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::urban air close to ground + amount: 1.63e-10 + +- name: Methane, chlorotrifluoro-, CFC-13 + categories: air + amount: 8.61e-10 + +- name: Methane, chlorotrifluoro-, CFC-13 + categories: air::low population density, long-term + amount: 8.61e-10 + +- name: Methane, chlorotrifluoro-, CFC-13 + categories: air::lower stratosphere + upper troposphere + amount: 8.61e-10 + +- name: Methane, chlorotrifluoro-, CFC-13 + categories: air::non-urban air or from high stacks + amount: 8.61e-10 + +- name: Methane, chlorotrifluoro-, CFC-13 + categories: air::urban air close to ground + amount: 8.61e-10 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air + amount: 1.49e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::low population density, long-term + amount: 1.49e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::lower stratosphere + upper troposphere + amount: 1.49e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::non-urban air or from high stacks + amount: 1.49e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::urban air close to ground + amount: 1.49e-09 + +- name: Methane, dichlorofluoro-, HCFC-21 + categories: air + amount: 1.39e-11 + +- name: Methane, dichlorofluoro-, HCFC-21 + categories: air::low population density, long-term + amount: 1.39e-11 + +- name: Methane, dichlorofluoro-, HCFC-21 + categories: air::lower stratosphere + upper troposphere + amount: 1.39e-11 + +- name: Methane, dichlorofluoro-, HCFC-21 + categories: air::non-urban air or from high stacks + amount: 1.39e-11 + +- name: Methane, dichlorofluoro-, HCFC-21 + categories: air::urban air close to ground + amount: 1.39e-11 + +- name: Methane, fossil + categories: air + amount: 1.59e-12 + +- name: Methane, fossil + categories: air::low population density, long-term + amount: 1.59e-12 + +- name: Methane, fossil + categories: air::lower stratosphere + upper troposphere + amount: 1.59e-12 + +- name: Methane, fossil + categories: air::non-urban air or from high stacks + amount: 1.59e-12 + +- name: Methane, fossil + categories: air::urban air close to ground + amount: 1.59e-12 + +- name: Methane, non-fossil + categories: air + amount: 1.59e-12 + +- name: Methane, non-fossil + categories: air::low population density, long-term + amount: 1.59e-12 + +- name: Methane, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 1.59e-12 + +- name: Methane, non-fossil + categories: air::non-urban air or from high stacks + amount: 1.59e-12 + +- name: Methane, non-fossil + categories: air::urban air close to ground + amount: 1.59e-12 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air + amount: 4.79e-10 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::low population density, long-term + amount: 4.79e-10 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::lower stratosphere + upper troposphere + amount: 4.79e-10 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::non-urban air or from high stacks + amount: 4.79e-10 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::urban air close to ground + amount: 4.79e-10 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air + amount: 1.06e-12 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::low population density, long-term + amount: 1.06e-12 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::lower stratosphere + upper troposphere + amount: 1.06e-12 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::non-urban air or from high stacks + amount: 1.06e-12 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::urban air close to ground + amount: 1.06e-12 + +- name: Nitrogen fluoride + categories: air + amount: 7.92e-09 + +- name: Nitrogen fluoride + categories: air::low population density, long-term + amount: 7.92e-09 + +- name: Nitrogen fluoride + categories: air::lower stratosphere + upper troposphere + amount: 7.92e-09 + +- name: Nitrogen fluoride + categories: air::non-urban air or from high stacks + amount: 7.92e-09 + +- name: Nitrogen fluoride + categories: air::urban air close to ground + amount: 7.92e-09 + +- name: Sulfur hexafluoride + categories: air + amount: 6.71e-08 + +- name: Sulfur hexafluoride + categories: air::low population density, long-term + amount: 6.71e-08 + +- name: Sulfur hexafluoride + categories: air::lower stratosphere + upper troposphere + amount: 6.71e-08 + +- name: Sulfur hexafluoride + categories: air::non-urban air or from high stacks + amount: 6.71e-08 + +- name: Sulfur hexafluoride + categories: air::urban air close to ground + amount: 6.71e-08 diff --git a/src/aesa_pbs/data/aesa_FreshwaterUse_Global.yaml b/src/aesa_pbs/data/aesa_FreshwaterUse_Global.yaml new file mode 100644 index 0000000..f38c9b8 --- /dev/null +++ b/src/aesa_pbs/data/aesa_FreshwaterUse_Global.yaml @@ -0,0 +1,59 @@ +- name: Water + categories: water::ground- + amount: -1.0e-09 + +- name: Water + categories: water::surface water + amount: -1.0e-09 + +- name: Water, cooling, unspecified natural origin + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water, lake + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water, river + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water, salt, ocean + categories: natural resource::in water + amount: 0.0 + +- name: Water, salt, sole + categories: natural resource::in water + amount: 0.0 + +- name: Water, turbine use, unspecified natural origin + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water, unspecified natural origin + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water, unspecified natural origin + categories: natural resource::fossil well + amount: 1.0e-09 + +- name: Water, unspecified natural origin + categories: natural resource::in ground + amount: 1.0e-09 + +- name: Water, well, in ground + categories: natural resource::in water + amount: 1.0e-09 + +- name: Water + categories: water + amount: -1.0e-09 + +- name: Water + categories: water::fossil well + amount: -1.0e-09 + +- name: Water + categories: water::ground-, long-term + amount: -1.0e-09 diff --git a/src/aesa_pbs/data/aesa_LandSystemChange_Global.yaml b/src/aesa_pbs/data/aesa_LandSystemChange_Global.yaml new file mode 100644 index 0000000..37f1065 --- /dev/null +++ b/src/aesa_pbs/data/aesa_LandSystemChange_Global.yaml @@ -0,0 +1,39 @@ +- name: Transformation, from forest, extensive + categories: natural resource::land + amount: 1.56e-12 + +- name: Transformation, from forest, intensive + categories: natural resource::land + amount: 1.56e-12 + +- name: Transformation, from forest, primary (non-use) + categories: natural resource::land + amount: 1.56e-12 + +- name: Transformation, from forest, secondary (non-use) + categories: natural resource::land + amount: 1.56e-12 + +- name: Transformation, from forest, unspecified + categories: natural resource::land + amount: 1.56e-12 + +- name: Transformation, to forest, extensive + categories: natural resource::land + amount: -1.56e-12 + +- name: Transformation, to forest, intensive + categories: natural resource::land + amount: -1.56e-12 + +- name: Transformation, to forest, primary (non-use) + categories: natural resource::land + amount: -1.56e-12 + +- name: Transformation, to forest, secondary (non-use) + categories: natural resource::land + amount: -1.56e-12 + +- name: Transformation, to forest, unspecified + categories: natural resource::land + amount: -1.56e-12 diff --git a/src/aesa_pbs/data/aesa_OceanAcidification_CarbontateIonConcentration.yaml b/src/aesa_pbs/data/aesa_OceanAcidification_CarbontateIonConcentration.yaml new file mode 100644 index 0000000..6efa4b2 --- /dev/null +++ b/src/aesa_pbs/data/aesa_OceanAcidification_CarbontateIonConcentration.yaml @@ -0,0 +1,167 @@ +- name: Carbon dioxide, fossil + categories: air + amount: 8.22e-14 + +- name: Carbon dioxide, fossil + categories: air::low population density, long-term + amount: 8.22e-14 + +- name: Carbon dioxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 8.22e-14 + +- name: Carbon dioxide, fossil + categories: air::non-urban air or from high stacks + amount: 8.22e-14 + +- name: Carbon dioxide, fossil + categories: air::urban air close to ground + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::indoor + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::low population density, long-term + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::lower stratosphere + upper troposphere + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::non-urban air or from high stacks + amount: 8.22e-14 + +- name: Carbon dioxide, from soil or biomass stock + categories: air::urban air close to ground + amount: 8.22e-14 + +- name: Carbon dioxide, non-fossil + categories: air + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::low population density, long-term + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 0.0 + +- name: Carbon dioxide, non-fossil + categories: air::urban air close to ground + amount: 0.0 + +- name: Carbon monoxide, fossil + categories: air + amount: 1.29e-13 + +- name: Carbon monoxide, fossil + categories: air::low population density, long-term + amount: 1.29e-13 + +- name: Carbon monoxide, fossil + categories: air::lower stratosphere + upper troposphere + amount: 1.29e-13 + +- name: Carbon monoxide, fossil + categories: air::non-urban air or from high stacks + amount: 1.29e-13 + +- name: Carbon monoxide, fossil + categories: air::urban air close to ground + amount: 1.29e-13 + +- name: Carbon monoxide, non-fossil + categories: air + amount: 1.29e-13 + +- name: Carbon monoxide, non-fossil + categories: air::low population density, long-term + amount: 1.29e-13 + +- name: Carbon monoxide, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 1.29e-13 + +- name: Carbon monoxide, non-fossil + categories: air::non-urban air or from high stacks + amount: 1.29e-13 + +- name: Carbon monoxide, non-fossil + categories: air::urban air close to ground + amount: 1.29e-13 + +- name: Methane + categories: air::urban air close to ground + amount: 2.26e-13 + +- name: Methane, fossil + categories: air + amount: 2.26e-13 + +- name: Methane, fossil + categories: air::low population density, long-term + amount: 2.26e-13 + +- name: Methane, fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.26e-13 + +- name: Methane, fossil + categories: air::non-urban air or from high stacks + amount: 2.26e-13 + +- name: Methane, fossil + categories: air::urban air close to ground + amount: 2.26e-13 + +- name: Methane, non-fossil + categories: air + amount: 2.26e-13 + +- name: Methane, non-fossil + categories: air::low population density, long-term + amount: 2.26e-13 + +- name: Methane, non-fossil + categories: air::lower stratosphere + upper troposphere + amount: 2.26e-13 + +- name: Methane, non-fossil + categories: air::non-urban air or from high stacks + amount: 2.26e-13 + +- name: Methane, non-fossil + categories: air::urban air close to ground + amount: 2.26e-13 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air + amount: 2.47e-13 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::low population density, long-term + amount: 2.47e-13 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::lower stratosphere + upper troposphere + amount: 2.47e-13 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::non-urban air or from high stacks + amount: 2.47e-13 + +- name: NMVOC, non-methane volatile organic compounds, unspecified origin + categories: air::urban air close to ground + amount: 2.47e-13 diff --git a/src/aesa_pbs/data/aesa_OzoneDepletion_StratosphericO3Concentration.yaml b/src/aesa_pbs/data/aesa_OzoneDepletion_StratosphericO3Concentration.yaml new file mode 100644 index 0000000..6e7329c --- /dev/null +++ b/src/aesa_pbs/data/aesa_OzoneDepletion_StratosphericO3Concentration.yaml @@ -0,0 +1,299 @@ +- name: Dinitrogen monoxide + categories: air + amount: 1.41e-10 + +- name: Dinitrogen monoxide + categories: air::low population density, long-term + amount: 1.41e-10 + +- name: Dinitrogen monoxide + categories: air::lower stratosphere + upper troposphere + amount: 1.41e-10 + +- name: Dinitrogen monoxide + categories: air::non-urban air or from high stacks + amount: 1.41e-10 + +- name: Dinitrogen monoxide + categories: air::urban air close to ground + amount: 1.41e-10 + +- name: Ethane, 1,1,1-trichloro-, HCFC-140 + categories: air + amount: 1.32e-09 + +- name: Ethane, 1,1,1-trichloro-, HCFC-140 + categories: air::low population density, long-term + amount: 1.32e-09 + +- name: Ethane, 1,1,1-trichloro-, HCFC-140 + categories: air::lower stratosphere + upper troposphere + amount: 1.32e-09 + +- name: Ethane, 1,1,1-trichloro-, HCFC-140 + categories: air::non-urban air or from high stacks + amount: 1.32e-09 + +- name: Ethane, 1,1,1-trichloro-, HCFC-140 + categories: air::urban air close to ground + amount: 1.32e-09 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air + amount: 4.91e-09 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::low population density, long-term + amount: 4.91e-09 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::lower stratosphere + upper troposphere + amount: 4.91e-09 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::non-urban air or from high stacks + amount: 4.91e-09 + +- name: Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 + categories: air::urban air close to ground + amount: 4.91e-09 + +- name: Ethane, 1,1-dichloro-1-fluoro-, HCFC-141b + categories: air + amount: 1.07e-09 + +- name: Ethane, 1,1-dichloro-1-fluoro-, HCFC-141b + categories: air::low population density, long-term + amount: 1.07e-09 + +- name: Ethane, 1,1-dichloro-1-fluoro-, HCFC-141b + categories: air::lower stratosphere + upper troposphere + amount: 1.07e-09 + +- name: Ethane, 1,1-dichloro-1-fluoro-, HCFC-141b + categories: air::non-urban air or from high stacks + amount: 1.07e-09 + +- name: Ethane, 1,1-dichloro-1-fluoro-, HCFC-141b + categories: air::urban air close to ground + amount: 1.07e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air + amount: 3.64e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::low population density, long-term + amount: 3.64e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::lower stratosphere + upper troposphere + amount: 3.64e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::non-urban air or from high stacks + amount: 3.64e-09 + +- name: Ethane, 1,2-dichloro-1,1,2,2-tetrafluoro-, CFC-114 + categories: air::urban air close to ground + amount: 3.64e-09 + +- name: Ethane, 1-chloro-1,1-difluoro-, HCFC-142b + categories: air + amount: 6.76e-10 + +- name: Ethane, 1-chloro-1,1-difluoro-, HCFC-142b + categories: air::low population density, long-term + amount: 6.76e-10 + +- name: Ethane, 1-chloro-1,1-difluoro-, HCFC-142b + categories: air::lower stratosphere + upper troposphere + amount: 6.76e-10 + +- name: Ethane, 1-chloro-1,1-difluoro-, HCFC-142b + categories: air::non-urban air or from high stacks + amount: 6.76e-10 + +- name: Ethane, 1-chloro-1,1-difluoro-, HCFC-142b + categories: air::urban air close to ground + amount: 6.76e-10 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air + amount: 3.99e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::low population density, long-term + amount: 3.99e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::lower stratosphere + upper troposphere + amount: 3.99e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::non-urban air or from high stacks + amount: 3.99e-09 + +- name: Ethane, chloropentafluoro-, CFC-115 + categories: air::urban air close to ground + amount: 3.99e-09 + +- name: Methane, bromo-, Halon 1001 + categories: air + amount: 7.46e-09 + +- name: Methane, bromo-, Halon 1001 + categories: air::low population density, long-term + amount: 7.46e-09 + +- name: Methane, bromo-, Halon 1001 + categories: air::lower stratosphere + upper troposphere + amount: 7.46e-09 + +- name: Methane, bromo-, Halon 1001 + categories: air::non-urban air or from high stacks + amount: 7.46e-09 + +- name: Methane, bromo-, Halon 1001 + categories: air::urban air close to ground + amount: 7.46e-09 + +- name: Methane, bromochlorodifluoro-, Halon 1211 + categories: air + amount: 5.16e-08 + +- name: Methane, bromochlorodifluoro-, Halon 1211 + categories: air::low population density, long-term + amount: 5.16e-08 + +- name: Methane, bromochlorodifluoro-, Halon 1211 + categories: air::lower stratosphere + upper troposphere + amount: 5.16e-08 + +- name: Methane, bromochlorodifluoro-, Halon 1211 + categories: air::non-urban air or from high stacks + amount: 5.16e-08 + +- name: Methane, bromochlorodifluoro-, Halon 1211 + categories: air::urban air close to ground + amount: 5.16e-08 + +- name: Methane, bromotrifluoro-, Halon 1301 + categories: air + amount: 1.15e-07 + +- name: Methane, bromotrifluoro-, Halon 1301 + categories: air::low population density, long-term + amount: 1.15e-07 + +- name: Methane, bromotrifluoro-, Halon 1301 + categories: air::lower stratosphere + upper troposphere + amount: 1.15e-07 + +- name: Methane, bromotrifluoro-, Halon 1301 + categories: air::non-urban air or from high stacks + amount: 1.15e-07 + +- name: Methane, bromotrifluoro-, Halon 1301 + categories: air::urban air close to ground + amount: 1.15e-07 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air + amount: 4.83e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::low population density, long-term + amount: 4.83e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::lower stratosphere + upper troposphere + amount: 4.83e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::non-urban air or from high stacks + amount: 4.83e-10 + +- name: Methane, chlorodifluoro-, HCFC-22 + categories: air::urban air close to ground + amount: 4.83e-10 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air + amount: 7.34e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::low population density, long-term + amount: 7.34e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::lower stratosphere + upper troposphere + amount: 7.34e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::non-urban air or from high stacks + amount: 7.34e-09 + +- name: Methane, dichlorodifluoro-, CFC-12 + categories: air::urban air close to ground + amount: 7.34e-09 + +- name: Methane, monochloro-, R-40 + categories: air + amount: 4.03e-10 + +- name: Methane, monochloro-, R-40 + categories: air::low population density, long-term + amount: 4.03e-10 + +- name: Methane, monochloro-, R-40 + categories: air::lower stratosphere + upper troposphere + amount: 4.03e-10 + +- name: Methane, monochloro-, R-40 + categories: air::non-urban air or from high stacks + amount: 4.03e-10 + +- name: Methane, monochloro-, R-40 + categories: air::urban air close to ground + amount: 4.03e-10 + +- name: Methane, tetrachloro-, R-10 + categories: air + amount: 5.74e-09 + +- name: Methane, tetrachloro-, R-10 + categories: air::low population density, long-term + amount: 5.74e-09 + +- name: Methane, tetrachloro-, R-10 + categories: air::lower stratosphere + upper troposphere + amount: 5.74e-09 + +- name: Methane, tetrachloro-, R-10 + categories: air::non-urban air or from high stacks + amount: 5.74e-09 + +- name: Methane, tetrachloro-, R-10 + categories: air::urban air close to ground + amount: 5.74e-09 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air + amount: 7.85e-09 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::low population density, long-term + amount: 7.85e-09 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::lower stratosphere + upper troposphere + amount: 7.85e-09 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::non-urban air or from high stacks + amount: 7.85e-09 + +- name: Methane, trichlorofluoro-, CFC-11 + categories: air::urban air close to ground + amount: 7.85e-09 diff --git a/src/aesa_pbs/data_converter.py b/src/aesa_pbs/data_converter.py new file mode 100644 index 0000000..eee6d2d --- /dev/null +++ b/src/aesa_pbs/data_converter.py @@ -0,0 +1,263 @@ +import logging +from pathlib import Path + +import pandas as pd +import yaml + +logging.basicConfig(format="%(levelname)s: %(message)s") # , level=logging.WARNING) + + +class DumperBlankLine(yaml.SafeDumper): + """HACK: insert blank lines between top-level objects. + + inspired by https://github.com/yaml/pyyaml/issues/127#issuecomment-525800484 + """ + + def write_line_break(self, data=None): + super().write_line_break(data) + + if len(self.indents) == 1: + super().write_line_break() + + +class DataConverter: + """Class to convert data from/to `*.xlsx` or `*.yaml` formats. + + Class reads characterization factors (CFs) data from + an xlsx or yaml file into a `pandas.DataFrame` and + contains methods to write it to an xlsx or yaml file. + + Parameters + ---------- + filepath : str + Absolute path to a file for conversion + """ + + def __init__(self, filepath: str) -> None: + """Initialize an instance of a DataConverter""" + if file_exists(filepath): + self.filepath = Path(filepath) + self.file_suffix = self.filepath.suffix + + if self.file_suffix == ".xlsx": + self.data = self._from_excel() + elif self.file_suffix == ".yaml": + self.data = self._from_yaml() + + def _from_excel(self) -> pd.DataFrame: + """Read an xlsx file with 'name', 'categories' and 'amount' columns. + + Returns + ------- + pd.DataFrame + Data from excel file + """ + data = pd.read_excel(self.filepath) + return _sanitize(data, self.filepath.name) + + def _from_yaml(self) -> pd.DataFrame: + """Read an yaml file with 'name', 'categories' and 'amount' keys. + + Returns + ------- + pd.DataFrame + Data from yaml file + """ + with open(self.filepath, "r") as file: + loaded = yaml.safe_load(file) + data = pd.DataFrame(loaded, columns=["name", "categories", "amount"]) + return _sanitize(data, self.filepath.name) + + def to_yaml(self, outfilepath: str = None, verbose=True) -> None: + """Write data to yaml file. + + Parameters + ---------- + outfilepath : str, optional + Absolute file path. If None is provided, uses input file name and default directory. + verbose : bool, optional + Print completion message, by default True + """ + data_dict = self.data.to_dict(orient="records") + if not outfilepath: + filename = self.filepath.stem + dir_path = self.filepath.resolve().parent + outfilepath = str(dir_path) + f"/{filename}.yaml" + _validate_extension(outfilepath, ".yaml") + + make_dir(Path(outfilepath).resolve().parent) # make directories if missing + output_file_path = Path(outfilepath) + + with open(output_file_path, "w") as file: + yaml.dump( + data_dict, + file, + Dumper=DumperBlankLine, + default_flow_style=False, + default_style=None, + sort_keys=False, + indent=None, + ) + if verbose: + print(f"File created in {output_file_path}") + + def to_excel(self, outfilepath: str = None, verbose=True) -> None: + """Write data to xlsx file. + + Parameters + ---------- + outfilepath : str, optional + Absolute file path. If None is provided, uses input file name and default directory. + verbose : bool, optional + Print completion message, by default True + """ + if not outfilepath: + filename = self.filepath.stem + dir_path = self.filepath.resolve().parent + outfilepath = str(dir_path) + f"/excels/{filename}.xlsx" + _validate_extension(outfilepath, ".xlsx") + + make_dir(Path(outfilepath).resolve().parent) # make directories if missing + output_file_path = Path(outfilepath) + + with pd.ExcelWriter( # pylint: disable=abstract-class-instantiated + output_file_path, mode="w", engine="openpyxl" + ) as writer: + self.data.to_excel(writer, index=False) + if verbose: + print(f"File created in {output_file_path}") + + +def _validate_extension(filepath: str, extension: str) -> None: + """Validate if filepath extension is correct. + + Parameters + ---------- + filepath : str + Absolute file path. + extension : str + Desired extension of the file. + """ + assert ( + Path(filepath).suffix == extension + ), f"Filepath extension ('{Path(filepath).suffix}') is not valid. Must be '{extension}'." + + +def _sanitize(data: pd.DataFrame, filename: str) -> pd.DataFrame: + """Check for missing values and duplicated rows in the data. + + Uses `remove_missing()` and `remove_duplicates()`. + + Parameters + ---------- + data : pd.DataFrame + Data to sanitize + filename : str + Name of the file from where the data is retrieved + + Returns + ------- + pd.DataFrame + Sanitized data without missing values, nor duplicates + """ + assert {"name", "categories", "amount"}.issubset( + data.columns + ), "Data must contain 'name', 'categories' and 'amount' column labels." + data = data[["name", "categories", "amount"]] # the extra columns are dropped + + # "amount" column should have only numeric values, + # to_numeric() converts non-numeric values to NaN + data["amount"] = pd.to_numeric(data["amount"], errors="coerce") + sanitized_data = _remove_missing(data, filename) + sanitized_data = _remove_duplicates(sanitized_data, filename) + return sanitized_data + + +def _remove_missing(data: pd.DataFrame, filename: str) -> pd.DataFrame: + """Remove rows containing NaN values. + + Parameters + ---------- + data : pd.DataFrame + Data to check for missing values + filename : str + Name of the file from where the data is retrieved + + Returns + ------- + pd.DataFrame + Clean data without missing values + + Raises + ------ + ValueError + If the resulting DataFrame is empty + """ + missing_data = data[data.isna().any(axis=1)] + if missing_data.empty: + clean_data = data + else: + clean_data = data.dropna(axis=0, how="any") + if not missing_data.isna().values.all(): + message_missing = ( + f"Some data is missing (or invalid) in {filename} " + "(see below incomplete sets):\n" + ) + message_missing += missing_data.to_markdown( + index=False, tablefmt="pretty", stralign="left" + ) + message_missing += "\nNote: These sets will be omitted.\n" + logging.warning(message_missing) + if clean_data.empty: + raise ValueError(f"Data in {filename} is not valid.") + return clean_data + + +def _remove_duplicates(data: pd.DataFrame, filename: str) -> pd.DataFrame: + """Remove duplicated rows. + + Parameters + ---------- + data : pd.DataFrame + Data to check for duplicated rows. + filename : str + Name of the file from where the data is retrieved + + Returns + ------- + pd.DataFrame + Clean data without duplicates + + Raises + ------ + ValueError + If the resulting DataFrame is empty + """ + duplicates = data[ + data.duplicated(subset=["name", "categories", "amount"], keep="first") + ] + if duplicates.empty: + clean_data = data + else: + message_duplicate = f"Duplicated flows found in {filename} (see below):\n" + message_duplicate += duplicates.to_markdown( + index=False, tablefmt="pretty", stralign="left" + ) + message_duplicate += "\nNote: All duplicates will be removed.\n" + logging.warning(message_duplicate) + clean_data = data.drop_duplicates(keep="first", ignore_index=True) + if clean_data.empty: + raise ValueError(f"Data in {filename} is not valid.") + return clean_data + + +def file_exists(filepath: str) -> bool: + "Check if file exists in passed filepath." + if not Path(filepath).is_file(): + raise FileNotFoundError(f"{filepath} does not exist.") + return True + + +def make_dir(dirpath: str) -> None: + "Make missing directory(ies)." + Path(dirpath).mkdir(parents=True, exist_ok=True) diff --git a/src/aesa_pbs/n_direct_fixation.py b/src/aesa_pbs/n_direct_fixation.py new file mode 100644 index 0000000..2c8378c --- /dev/null +++ b/src/aesa_pbs/n_direct_fixation.py @@ -0,0 +1,116 @@ +import brightway2 as bw + + +def get_nitrogenous_fertilizers(db_name: str) -> list: + """Get list of nitrogenous fertilizers + + Get all activities classified according to CPC as + "Class 3461: Mineral of chemical fertilizers, nitrogenous", + except "market"-type activities + + Parameters + ---------- + db_name : str + Name of the database to search for the activities + + Returns + ------- + list + List of activities producing nitrogenous fertilizers + """ + list_to_return = [] + for act in bw.Database(db_name): + for classification in act["classifications"]: + if "cpc" in classification[0].lower() and classification[1].startswith( + "3461" + ): + if "market" not in act["name"]: + list_to_return.append(act) + return list_to_return + + +def update_nitrogen_fertilizer_exchanges(activities: list, show_updated=True) -> None: + """Create exchanges for 'nitrogen fertilizer' in `activities` if they don't exist already. + + Does not return anything, but modified `activities` inplace. + + Parameters + ---------- + activities : list + List of activities producing nitrogenous fertilizers. + May be retrieved automatically with `get_nitrogenous_fertilizers()` + show_updated : bool, optional + Whether to show the set of updated activities, by default True + """ + flow = [flow for flow in bw.Database("A_technosphere_flows")][ + 0 + ] # select the only flow in the `A_technosphere_flows` db + + def is_exchange(exc): + return bw.get_activity(exc["input"])[ + "name" + ] == "nitrogen fertilizer" and bw.get_activity(exc["input"])["categories"] == ( + "inventory", + ) + + print("Updating activities that produce nitrogen fertilizer...") + updated_act = set() + for act in activities: + if not list(filter(is_exchange, [exc for exc in act.biosphere()])): + act.new_exchange( + **{ + "name": bw.get_activity(flow)["name"], + "input": ( + bw.get_activity(flow)["database"], + bw.get_activity(flow)["code"], + ), + "type": "biosphere", + "amount": 1, + "unit": bw.get_activity(flow)["unit"], + } + ).save() + updated_act.add(act) + if show_updated: + print(f"__ 1 new exchange has been added to {act}.") + else: + if show_updated: + print(f"xx {act} already contains the necessary exchanges.") + print(f"Updated {len(updated_act)} out of {len(activities)}.") + + +def remove_nitrogen_fertilizer_exchanges(activities: list, show_cleaned=True) -> None: + """Delete exchanges for 'nitrogen fertilizer' from `activities`. + + Does not return anything, but modifies `activities` inplace. + + Parameters + ---------- + activities : list + List of activities producing nitrogenous fertilizers (to be cleaned). + May be retrieved automatically with `get_nitrogenous_fertilizers()` + show_cleaned : bool, optional + Whether to show the set of cleaned activities, by default True + """ + + def is_exchange(exc): + return bw.get_activity(exc["input"])[ + "name" + ] == "nitrogen fertilizer" and bw.get_activity(exc["input"])["categories"] == ( + "inventory", + ) + + print( + "Cleaning 'nitrogen fertilizer' exchanges from the activities that produce nitrogen fertilizer..." + ) + cleaned_act = set() + for act in activities: + for exc in act.biosphere(): + if is_exchange(exc): + exc.delete() + cleaned_act.add(act) + if show_cleaned: + print( + f"These {len(cleaned_act)} activities have been cleaned: \n{list(cleaned_act)}." + ) + else: + print(f"{len(cleaned_act)} activities have been cleaned.") diff --git a/src/aesa_pbs/utils/__init__.py b/src/aesa_pbs/utils/__init__.py new file mode 100644 index 0000000..7fa5898 --- /dev/null +++ b/src/aesa_pbs/utils/__init__.py @@ -0,0 +1,3 @@ +__all__ = ["progressbar", "solve_lca"] + +from .utils import progressbar, solve_lca diff --git a/src/aesa_pbs/utils/utils.py b/src/aesa_pbs/utils/utils.py new file mode 100644 index 0000000..b4ca7e3 --- /dev/null +++ b/src/aesa_pbs/utils/utils.py @@ -0,0 +1,137 @@ +import sys +from datetime import datetime + +import brightway2 as bw +import pandas as pd + + +def solve_lca(activities: list, methods: list) -> pd.DataFrame: + """Perform LCA calculation given a list of activities and LCIA methods. + + Parameters + ---------- + activities : list + List of Brightway activities + methods : list + List of Brightway LCIA methods + + Returns + ------- + pd.DataFrame + LCA results for all activities with all methods + """ + + results = [] + for act in activities: + lca = bw.LCA({act: 1}) + lca.lci() + for method in methods: + lca.switch_method(method) + lca.lcia() + results.append( + ( + act["name"], + act["location"], + " - ".join( + [method[2], method[3]] + ), # method[0] - method name, method[1] - method version + lca.score, + bw.methods.get(method).get("unit"), + ) + ) + to_return = pd.DataFrame( + results, columns=["Name", "Location", "Method", "Score", "Unit"] + ) + to_return = pd.pivot_table( + to_return, + index=["Name", "Location"], + columns=["Method", "Unit"], + values="Score", + ) + return to_return + + +def progressbar(itobj: list, **kwargs): + """Generate a progress bar. + Progress bar adapted from https://stackoverflow.com/a/34482761/14485040 + + Parameters + ---------- + itobj : list-like + Iterable object + + **kwargs + -------- + total : int, default len(itobj) + Size of the iterable object + prefix : str, default "" + String preceding the progress bar + size : int, default 30 + Number of icons conforming the progress bar + unit : str, default "" + String following the progress bar, intended to be used for units + icon_done : str, default "🟩" + str-like symbol to be used as "done"-icon + icon_todo : str, default "🔳" + str-like symbol to be used as "to do"-icon + + Example + ------- + lst = [5, 3, 4] + for i in progressbar(itobj=lst, total=len(lst), prefix="Progress: ", size=5, unit="datapoint"): + # do_something + """ + start_time = datetime.now() + file = sys.stdout + + try: + iter(itobj) # check if provided `itobj` is iterable + except TypeError as err: + raise TypeError from err + + # if "total" in kwargs: + # total = kwargs["total"] + # else: + # total = len(itobj) + # refactor the above to: + try: + len_itobj = len(itobj) + except TypeError: + len_itobj = int(5) # placeholder + total = kwargs.get("total", len_itobj) + # similarly for the rest + prefix = kwargs.get("prefix", "") + size = kwargs.get("size", 30) + unit = kwargs.get("unit", "") + icon_done = kwargs.get("icon_done", "🟩") + icon_todo = kwargs.get("icon_todo", "🔳") + + def show(j): + icons_to_show = int(size * j / total) + # some ASCII symbol or emoji alternatives + + # |, *, #, %, ▒. ▓, █, ■, ♢, ⚃ ⚄ ⚅ + # 🦾, 👍, 🔴, 🟡 🟢 🔵 🟣 ⚫️ ⚪️, 🔸 🔹 🔶 🔷 🔳 🔲 ▪️ ▫️ ◾️ ◽️ ◼️ ◻️ 🟥 🟧 🟨 🟩 🟦 🟪 ⬛️ ⬜️, ▶️ + + file.write( + "%s[%s%s] %i/%i %s\r" + % ( + prefix, + icon_done * icons_to_show, + icon_todo * (size - icons_to_show), + j, + total, + unit, + ) + ) + file.flush() + + show(0) + for i, item in enumerate(itobj): + yield item + show(i + 1) + file.write("\n") + file.flush() + + end_time = datetime.now() + print("Duration: {}".format(end_time - start_time)) diff --git a/src/aesa_pbs/version.py b/src/aesa_pbs/version.py new file mode 100644 index 0000000..3e2f46a --- /dev/null +++ b/src/aesa_pbs/version.py @@ -0,0 +1 @@ +__version__ = "0.9.0" diff --git a/tests/test_aesa_pbs.py b/tests/test_aesa_pbs.py new file mode 100644 index 0000000..af88762 --- /dev/null +++ b/tests/test_aesa_pbs.py @@ -0,0 +1,11 @@ +import unittest.mock as mock + +from aesa_pbs import add_aesa_pbs + + +@mock.patch("aesa_pbs.aesa_pbs.ExcelLCIAImporter") +@mock.patch("aesa_pbs.aesa_pbs.get_biosphere_database") +def test_add_aesa_pbs(mock_get_biosphere, mock_excel_importer): + add_aesa_pbs(verbose=False) + assert mock_get_biosphere.called + assert mock_excel_importer.call_count > 0