diff --git a/dev/Untitled1.ipynb b/dev/Untitled1.ipynb index ae32f577..c7ddfd8e 100644 --- a/dev/Untitled1.ipynb +++ b/dev/Untitled1.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "id": "5018b7ee-0169-49d7-9455-2f1aea562e9e", "metadata": {}, "outputs": [], @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "0ca27c06-948c-4584-bebe-d505cb72d4f9", "metadata": {}, "outputs": [], @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "id": "e408d76b-8288-4661-9089-f8c3f6191743", "metadata": {}, "outputs": [ @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "id": "bee86950-ac96-49e0-8a9c-43920ae26096", "metadata": {}, "outputs": [ @@ -51,7 +51,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "premise v.(2, 1, 1, 'dev7')\n", + "premise v.(2, 1, 1, 'dev6')\n", "+------------------------------------------------------------------+\n", "| Warning |\n", "+------------------------------------------------------------------+\n", @@ -87,6 +87,507 @@ "NewDatabase(..., quiet=True)\n", "- Extracting source database\n", "- Extracting inventories\n", + "Cannot find cached inventories. Will create them now for next time...\n", + "Importing default inventories...\n", + "\n", + "Extracted 1 worksheets in 0.09 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 4 worksheets in 0.17 seconds\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 7 worksheets in 0.03 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.03 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.03 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.03 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 2 worksheets in 0.02 seconds\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.32 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "The following datasets to import already exist in the source database. They will not be imported\n", + "+--------------------------------+--------------------------------+----------+-------------+\n", + "| Name | Reference product | Location | File |\n", + "+--------------------------------+--------------------------------+----------+-------------+\n", + "| fluorspar production, 97% puri | fluorspar, 97% purity | GLO | lci-PV.xlsx |\n", + "| metallization paste production | metallization paste, back side | RER | lci-PV.xlsx |\n", + "| metallization paste production | metallization paste, back side | RER | lci-PV.xlsx |\n", + "| metallization paste production | metallization paste, front sid | RER | lci-PV.xlsx |\n", + "| photovoltaic module production | photovoltaic module, building- | RER | lci-PV.xlsx |\n", + "| photovoltaic module production | photovoltaic module, building- | RER | lci-PV.xlsx |\n", + "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", + "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", + "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", + "| photovoltaic panel factory con | photovoltaic panel factory | GLO | lci-PV.xlsx |\n", + "| polyvinylfluoride production | polyvinylfluoride | US | lci-PV.xlsx |\n", + "| polyvinylfluoride production, | polyvinylfluoride, dispersion | US | lci-PV.xlsx |\n", + "| polyvinylfluoride, film produc | polyvinylfluoride, film | US | lci-PV.xlsx |\n", + "| silicon production, metallurgi | silicon, metallurgical grade | NO | lci-PV.xlsx |\n", + "| vinyl fluoride production | vinyl fluoride | US | lci-PV.xlsx |\n", + "| wafer factory construction | wafer factory | DE | lci-PV.xlsx |\n", + "+--------------------------------+--------------------------------+----------+-------------+\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.04 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "The following datasets to import already exist in the source database. They will not be imported\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| Name | Reference product | Location | File |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| carbon dioxide, captured at ce | carbon dioxide, captured and r | RER | lci-synfuels-from-methanol-fro |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "The following datasets to import already exist in the source database. They will not be imported\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| Name | Reference product | Location | File |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| hydrogen production, coal gasi | hydrogen, gaseous, low pressur | RoW | lci-hydrogen-coal-gasification |\n", + "| methanol production, coal gasi | methanol | RoW | lci-hydrogen-coal-gasification |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "The following datasets to import already exist in the source database. They will not be imported\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| Name | Reference product | Location | File |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| hydrogen production, steam met | hydrogen, gaseous, low pressur | RER | lci-hydrogen-smr-atr-natgas.xl |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "The following datasets to import already exist in the source database. They will not be imported\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| Name | Reference product | Location | File |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "| methanol production facility, | methanol production facility, | RER | lci-synfuels-from-methanol-fro |\n", + "+--------------------------------+--------------------------------+----------+--------------------------------+\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 5 worksheets in 0.14 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.03 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.07 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.04 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.01 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 19 worksheets in 0.30 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.21 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.16 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 1.57 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.03 seconds\n", + "Migrating to 3.8 first\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Applying strategy: migrate_datasets\n", + "Applying strategy: migrate_exchanges\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Extracted 1 worksheets in 0.02 seconds\n", + "Data cached. It is advised to restart your workflow at this point.\n", + "This allows premise to use the cached data instead, which results in\n", + "a faster workflow.\n", "- Fetching IAM data\n", "Done!\n" ] @@ -108,6 +609,7 @@ " source_version=\"3.10\", # <-- version of ecoinvent. Can be \"3.5\", \"3.6\", \"3.7\" or \"3.8\". Must be a string.\n", " key=\"tUePmX_S5B8ieZkkM7WUU2CnO8SmShwmAeWK9x2rTFo=\",\n", " biosphere_name=\"ecoinvent-3.10-biosphere\",\n", + " keep_imports_uncertainty=True\n", " #external_scenarios=[FE2050,]\n", " #use_multiprocessing=True,\n", " #system_model=\"consequential\"\n", @@ -117,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "0c80994c-cbac-4143-81ee-1de1531a6f95", "metadata": {}, "outputs": [ @@ -127,207 +629,10 @@ "text": [ "Processing scenarios: 0%| | 0/1 [00:00100kW',\n", - " 'heat production, natural gas, at boiler fan '\n", - " 'burner low-NOx non-modulating <100kW',\n", - " 'heat production, natural gas, at boiler fan '\n", - " 'burner non-modulating <100kW',\n", - " 'heat production, natural gas, at boiler '\n", - " 'modulating <100kW',\n", - " 'heat production, natural gas, at boiler '\n", - " 'modulating >100kW',\n", - " 'heat production, natural gas, at diffusion '\n", - " 'absorption heat pump 4kW, future',\n", - " 'heat production, natural gas, at industrial '\n", - " 'furnace >100kW',\n", - " 'heat production, natural gas, at industrial '\n", - " 'furnace low-NOx >100kW'},\n", - " 'heat, from natural gas (market)': {'market for heat, central or small-scale, '\n", - " 'natural gas',\n", - " 'market for heat, district or industrial, '\n", - " 'natural gas'},\n", - " 'heat, from steam': {'steam production, as energy carrier, in chemical '\n", - " 'industry'},\n", - " 'heat, from steam (market)': {'market for heat, from steam, in chemical '\n", - " 'industry'},\n", - " 'heat, from wood chips': {'heat production, hardwood chips from forest, at '\n", - " 'furnace 1000kW',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 1000kW, state-of-the-art 2014',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 300kW',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 300kW, state-of-the-art 2014',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 5000kW',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 5000kW, state-of-the-art 2014',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 50kW',\n", - " 'heat production, hardwood chips from forest, at '\n", - " 'furnace 50kW, state-of-the-art 2014',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 1000kW',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 1000kW, state-of-the-art 2014',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 300kW',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 300kW, state-of-the-art 2014',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 5000kW',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 5000kW, state-of-the-art 2014',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 50kW',\n", - " 'heat production, softwood chips from forest, at '\n", - " 'furnace 50kW, state-of-the-art 2014'}}\n", - "heat, from diesel diesel, burned in diesel-electric generating set, 18.5kW\n", - "heat, from diesel diesel, burned in fishing vessel\n", - "heat, from diesel diesel, burned in agricultural machinery\n", - "heat, from diesel diesel, burned in diesel-electric generating set, 10MW\n", - "heat, from diesel diesel, burned in building machine\n", - "heat, from diesel diesel, burned in diesel-electric generating set, 10MW, for oil and gas extraction\n", - "heat, from diesel (market) market for diesel, burned in fishing vessel\n", - "heat, from diesel (market) market for diesel, burned in diesel-electric generating set, 18.5kW\n", - "heat, from diesel (market) market for diesel, burned in diesel-electric generating set, 10MW, for oil and gas extraction\n", - "heat, from diesel (market) market for diesel, burned in building machine\n", - "heat, from diesel (market) market for diesel, burned in diesel-electric generating set, 10MW\n", - "heat, from diesel (market) market for diesel, burned in agricultural machinery\n", - "heat, from steam steam production, as energy carrier, in chemical industry\n", - "heat, from steam (market) market for heat, from steam, in chemical industry\n", - "heat, from natural gas heat and power co-generation, natural gas, combined cycle power plant, 400MW electrical\n", - "heat, from natural gas heat production, natural gas, at boiler modulating <100kW\n", - "heat, from natural gas heat production, natural gas, at boiler condensing modulating >100kW\n", - "heat, from natural gas heat and power co-generation, natural gas, conventional power plant, 100MW electrical\n", - "heat, from natural gas heat production, natural gas, at boiler atmospheric non-modulating <100kW\n", - "heat, from natural gas heat production, natural gas, at industrial furnace low-NOx >100kW\n", - "heat, from natural gas heat and power co-generation, natural gas, 160kW electrical, lambda=1\n", - "heat, from natural gas heat production, natural gas, at boiler fan burner non-modulating <100kW\n", - "heat, from natural gas heat production, natural gas, at boiler condensing modulating <100kW\n", - "heat, from natural gas heat production, natural gas, at boiler atmospheric low-NOx non-modulating <100kW\n", - "heat, from natural gas heat production, natural gas, at industrial furnace >100kW\n", - "heat, from natural gas heat production, natural gas, at boiler modulating >100kW\n", - "heat, from natural gas heat and power co-generation, natural gas, 50kW electrical, lean burn\n", - "heat, from natural gas heat and power co-generation, natural gas, 200kW electrical, lean burn\n", - "heat, from natural gas heat production, natural gas, at diffusion absorption heat pump 4kW, future\n", - "heat, from natural gas heat and power co-generation, natural gas, 160kW electrical, Jakobsberg\n", - "heat, from natural gas heat production, natural gas, at boiler fan burner low-NOx non-modulating <100kW\n", - "heat, from natural gas heat and power co-generation, natural gas, mini-plant 2KW electrical\n", - "heat, from natural gas heat and power co-generation, natural gas, 1MW electrical, lean burn\n", - "heat, from natural gas heat production, natural gas, at boiler atm. low-NOx condensing non-modulating <100kW\n", - "heat, from natural gas heat and power co-generation, natural gas, 500kW electrical, lean burn\n", - "heat, from natural gas (market) market for heat, central or small-scale, natural gas\n", - "heat, from natural gas (market) market for heat, district or industrial, natural gas\n", - "heat, from light fuel oil heat production, light fuel oil, at boiler 10kW condensing, non-modulating\n", - "heat, from light fuel oil heat production, light fuel oil, at boiler 100kW, non-modulating\n", - "heat, from light fuel oil heat production, light fuel oil, at boiler 10kW, non-modulating\n", - "heat, from light fuel oil heat production, light fuel oil, at industrial furnace 1MW\n", - "heat, from light fuel oil heat production, light fuel oil, at boiler 100kW condensing, non-modulating\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 1000kW\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 300kW\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 5000kW\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 50kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 300kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 50kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 5000kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 5000kW\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 50kW\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 300kW\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 300kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 50kW\n", - "heat, from wood chips heat production, hardwood chips from forest, at furnace 1000kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 1000kW\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 1000kW, state-of-the-art 2014\n", - "heat, from wood chips heat production, softwood chips from forest, at furnace 5000kW, state-of-the-art 2014\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Processing scenarios: 100%|█████████████| 1/1 [00:11<00:00, 11.54s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done!\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ - "ndb.update(\"heat\")" + "ndb.update()" ] }, { @@ -433,11 +738,11 @@ "evalue": "'database filepath'", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[12], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpremise\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_database\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m scenario \u001b[38;5;129;01min\u001b[39;00m ndb\u001b[38;5;241m.\u001b[39mscenarios:\n\u001b[0;32m----> 3\u001b[0m scenario \u001b[38;5;241m=\u001b[39m \u001b[43mload_database\u001b[49m\u001b[43m(\u001b[49m\u001b[43mscenario\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GitHub/premise/premise/utils.py:388\u001b[0m, in \u001b[0;36mload_database\u001b[0;34m(scenario)\u001b[0m\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m scenario\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdatabase\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m scenario\n\u001b[0;32m--> 388\u001b[0m filepath \u001b[38;5;241m=\u001b[39m \u001b[43mscenario\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdatabase filepath\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 390\u001b[0m \u001b[38;5;66;03m# load pickle\u001b[39;00m\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(filepath, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m f:\n", - "\u001b[0;31mKeyError\u001b[0m: 'database filepath'" + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[12], line 3\u001B[0m\n\u001B[1;32m 1\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mpremise\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mutils\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m load_database\n\u001B[1;32m 2\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m scenario \u001B[38;5;129;01min\u001B[39;00m ndb\u001B[38;5;241m.\u001B[39mscenarios:\n\u001B[0;32m----> 3\u001B[0m scenario \u001B[38;5;241m=\u001B[39m \u001B[43mload_database\u001B[49m\u001B[43m(\u001B[49m\u001B[43mscenario\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/GitHub/premise/premise/utils.py:388\u001B[0m, in \u001B[0;36mload_database\u001B[0;34m(scenario)\u001B[0m\n\u001B[1;32m 385\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m scenario\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mdatabase\u001B[39m\u001B[38;5;124m\"\u001B[39m) \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 386\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m scenario\n\u001B[0;32m--> 388\u001B[0m filepath \u001B[38;5;241m=\u001B[39m \u001B[43mscenario\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mdatabase filepath\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[1;32m 390\u001B[0m \u001B[38;5;66;03m# load pickle\u001B[39;00m\n\u001B[1;32m 391\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mopen\u001B[39m(filepath, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mrb\u001B[39m\u001B[38;5;124m\"\u001B[39m) \u001B[38;5;28;01mas\u001B[39;00m f:\n", + "\u001B[0;31mKeyError\u001B[0m: 'database filepath'" ] } ], @@ -1578,13 +1883,13 @@ "evalue": "", "output_type": "error", "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_20348/44398783.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"1\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"name\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mj\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[0;32m 19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0me\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexchanges\u001b[0m\u001b[1;33m(\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 21\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\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[0;32m 22\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\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[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\bw2data\\backends\\peewee\\proxies.py\u001b[0m in \u001b[0;36m__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__iter__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\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[1;32m---> 76\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_queryset\u001b[0m\u001b[1;33m(\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 77\u001b[0m \u001b[1;32myield\u001b[0m \u001b[0mExchange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001b[0m in \u001b[0;36mnext\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 4376\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrow_cache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4377\u001b[0m \u001b[1;32melif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpopulated\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4378\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miterate\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 4379\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrow_cache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4380\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001b[0m in \u001b[0;36miterate\u001b[1;34m(self, cache)\u001b[0m\n\u001b[0;32m 4286\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4287\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0miterate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcache\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[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4288\u001b[1;33m \u001b[0mrow\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfetchone\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 4289\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mrow\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4290\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpopulated\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m~\\AppData\\Local\\Temp/ipykernel_20348/44398783.py\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 18\u001B[0m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"1\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m\"name\"\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mi\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mj\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mtype\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mj\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mfloat\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mj\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[0;32m 19\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 20\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0me\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mdataset\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mexchanges\u001B[0m\u001B[1;33m(\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 21\u001B[0m \u001B[1;32mfor\u001B[0m \u001B[0mk\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mv\u001B[0m \u001B[1;32min\u001B[0m \u001B[0me\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mitems\u001B[0m\u001B[1;33m(\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[0;32m 22\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0misinstance\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mv\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mnp\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfloat64\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[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\bw2data\\backends\\peewee\\proxies.py\u001B[0m in \u001B[0;36m__iter__\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 74\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 75\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0m__iter__\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\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[1;32m---> 76\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_get_queryset\u001B[0m\u001B[1;33m(\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 77\u001B[0m \u001B[1;32myield\u001B[0m \u001B[0mExchange\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mobj\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 78\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001B[0m in \u001B[0;36mnext\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 4376\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrow_cache\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4377\u001B[0m \u001B[1;32melif\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpopulated\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 4378\u001B[1;33m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0miterate\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 4379\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrow_cache\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4380\u001B[0m \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001B[0m in \u001B[0;36miterate\u001B[1;34m(self, cache)\u001B[0m\n\u001B[0;32m 4286\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4287\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0miterate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mcache\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[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 4288\u001B[1;33m \u001B[0mrow\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfetchone\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 4289\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mrow\u001B[0m \u001B[1;32mis\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4290\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpopulated\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;31mKeyboardInterrupt\u001B[0m: " ] } ], @@ -3236,7 +3541,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/docs/transform.rst b/docs/transform.rst index b0dda8ac..d9776442 100644 --- a/docs/transform.rst +++ b/docs/transform.rst @@ -123,7 +123,7 @@ These datasets provide 1 kWh of battery capacity, and the technology shares are adjusted over time with values found under https://github.com/polca/premise/blob/master/premise/data/battery/scenario.csv. -.. _Degen: https://doi.org/10.1016/j.joule.2023.01.001 +.. _Degen: https://www.nature.com/articles/s41560-023-01355-z Stationary batteries diff --git a/premise/clean_datasets.py b/premise/clean_datasets.py index d6b1dc46..7536e08f 100644 --- a/premise/clean_datasets.py +++ b/premise/clean_datasets.py @@ -40,11 +40,10 @@ def remove_uncertainty(database): for dataset in database: for exchange in dataset["exchanges"]: - if not exchange.get("preserve uncertainty", False): - exchange["uncertainty type"] = 0 - exchange["loc"] = exchange["amount"] - for key in uncertainty_keys: - exchange[key] = nan_value + exchange["uncertainty type"] = 0 + exchange["loc"] = exchange["amount"] + for key in uncertainty_keys: + exchange[key] = nan_value return database diff --git a/premise/data/additional_inventories/lci-battery-capacity.xlsx b/premise/data/additional_inventories/lci-battery-capacity.xlsx index 52b7d047..8d7afd27 100644 Binary files a/premise/data/additional_inventories/lci-battery-capacity.xlsx and b/premise/data/additional_inventories/lci-battery-capacity.xlsx differ diff --git a/premise/data/additional_inventories/lci-hydrogen-turbine.xlsx b/premise/data/additional_inventories/lci-hydrogen-turbine.xlsx index 800d5c9f..9c60371f 100755 Binary files a/premise/data/additional_inventories/lci-hydrogen-turbine.xlsx and b/premise/data/additional_inventories/lci-hydrogen-turbine.xlsx differ diff --git a/premise/data/fuels/hydrogen_efficiency_parameters.yml b/premise/data/fuels/hydrogen_efficiency_parameters.yml index 7a1f3590..98924b53 100644 --- a/premise/data/fuels/hydrogen_efficiency_parameters.yml +++ b/premise/data/fuels/hydrogen_efficiency_parameters.yml @@ -3,7 +3,7 @@ from electrolysis: var: hydrogen, from electrolysis feedstock name: electricity, low voltage feedstock unit: kilowatt hour - floor value: 48.0 + floor value: 48.9 from SMR of biogas, with CCS: name: hydrogen production, steam methane reforming, from biomethane, with CCS var: hydrogen, from biogas, with CCS diff --git a/premise/external.py b/premise/external.py index 87391dc5..2d7a1fa4 100644 --- a/premise/external.py +++ b/premise/external.py @@ -3,6 +3,7 @@ """ import logging +import math import uuid from collections import defaultdict from functools import lru_cache @@ -1461,6 +1462,21 @@ def relink_to_new_datasets( if isinstance(new_loc, str): new_loc = [(new_loc, 1.0)] + def redefine_loc(e): + if e.get("uncertainty type") in [0, 3, 4]: + return e["amount"] * ratio * share + + elif e.get("uncertainty type") == 5: + return e.get("loc", 0) * ( + e["amount"] * ratio * share / e["amount"] + ) + + elif e.get("uncertainty type") == 2: + return math.log(e["amount"] * ratio * share) + + else: + return None + if len(new_loc) > 0: for loc, share in new_loc: # add new exchange @@ -1472,6 +1488,23 @@ def relink_to_new_datasets( "location": loc, "name": new_name, "product": new_ref, + "uncertainty type": exc.get("uncertainty type", 0), + "loc": redefine_loc(exc), + "scale": ( + exc.get("scale", 0) if "scale" in exc else None + ), + "minimum": ( + exc.get("minimum", 0) + * (exc["amount"] * ratio * share / exc["amount"]) + if "minimum" in exc + else None + ), + "maximum": ( + exc.get("maximum", 0) + * (exc["amount"] * ratio * share / exc["amount"]) + if "maximum" in exc + else None + ), } ) diff --git a/premise/inventory_imports.py b/premise/inventory_imports.py index 94ea7a07..eb1bd37d 100644 --- a/premise/inventory_imports.py +++ b/premise/inventory_imports.py @@ -277,6 +277,18 @@ def check_uncertainty_data(data, filename): ] ) + if exc["uncertainty type"] == 2: + if exc["amount"] < 0: + if exc.get("negative") is not True: + rows.append( + [ + dataset["name"][:30], + exc["name"][:30], + exc["uncertainty type"], + "'negative' should be TRUE", + ] + ) + # if distribution is triangular, make sure that `minimum` # and `maximum` are not equal and are comprising the `loc` if exc["uncertainty type"] == 5: diff --git a/premise/transformation.py b/premise/transformation.py index c71443c0..a403be2e 100644 --- a/premise/transformation.py +++ b/premise/transformation.py @@ -7,6 +7,7 @@ import copy import logging.config +import math import uuid from collections import defaultdict from collections.abc import ValuesView @@ -46,6 +47,73 @@ logger = logging.getLogger("module") +def redefine_uncertainty_params(old_exc, new_exc): + """ + Returns "loc", "scale", "minimum" and "maximum" and "negative" values for a given exchange. + """ + + try: + if old_exc.get("uncertainty type") in [ + 0, + 1, + ]: + return ( + new_exc["amount"], + None, + None, + None, + True if new_exc["amount"] < 0 else False, + ) + + elif old_exc.get("uncertainty type") == 2: + return ( + ( + math.log(new_exc["amount"] * -1) + if new_exc["amount"] < 0 + else math.log(new_exc["amount"]) + ), + old_exc.get("scale"), + None, + None, + True if new_exc["amount"] < 0 else False, + ) + + elif old_exc.get("uncertainty type") == 3: + return ( + new_exc["amount"], + old_exc.get("scale"), + None, + None, + True if new_exc["amount"] < 0 else False, + ) + + elif old_exc.get("uncertainty type") == 4: + return ( + None, + None, + old_exc.get("minimum", 0) * (new_exc["amount"] / old_exc["amount"]), + old_exc.get("maximum") * (new_exc["amount"] / old_exc["amount"]), + True if new_exc["amount"] < 0 else False, + ) + + elif old_exc.get("uncertainty type") == 5: + return ( + new_exc["amount"], + None, + old_exc.get("minimum", 0) * (new_exc["amount"] / old_exc["amount"]), + old_exc.get("maximum") * (new_exc["amount"] / old_exc["amount"]), + True if new_exc["amount"] < 0 else False, + ) + + else: + return None, None, None, None, None + except: + print("ERROR") + print(old_exc) + print(new_exc) + return None, None, None, None, None + + def get_suppliers_of_a_region( database: List[dict], locations: List[str], @@ -1066,26 +1134,11 @@ def relink_datasets(self, excludes_datasets=None, alt_names=None): (exc["name"], exc.get("product"), exc["unit"]) ] = { "uncertainty type": exc.get("uncertainty type", 0), - "loc": ( - exc.get("loc", 0) / exc["amount"] - if exc.get("loc", None) is not None - else None - ), - "scale": ( - exc.get("scale", 0) / exc["amount"] - if exc.get("scale", None) is not None - else None - ), - "minimum": ( - exc.get("minimum", 0) / exc["amount"] - if exc.get("minimum", None) is not None - else None - ), - "maximum": ( - exc.get("maximum", 0) / exc["amount"] - if exc.get("maximum", None) is not None - else None - ), + "amount": exc["amount"], + "loc": exc.get("loc"), + "scale": exc.get("scale"), + "minimum": exc.get("minimum", 0), + "maximum": exc.get("maximum", 0), } # make a dictionary with the names and amounts @@ -1124,10 +1177,24 @@ def relink_datasets(self, excludes_datasets=None, alt_names=None): exc["uncertainty type"] = old_uncertainty[key][ "uncertainty type" ] - for k, v in old_uncertainty[key].items(): - if k != "uncertainty type": - if v is not None: - exc[k] = v * exc["amount"] + loc, scale, minimum, maximum, negative = ( + redefine_uncertainty_params(old_uncertainty[key], exc) + ) + + if loc: + exc["loc"] = loc + + if scale: + exc["scale"] = scale + + if minimum: + exc["minimum"] = minimum + + if maximum: + exc["maximum"] = maximum + + if negative: + exc["negative"] = negative # Update act["exchanges"] by removing the exchanges to relink act["exchanges"] = [e for e in act["exchanges"] if e not in excs_to_relink] @@ -1609,25 +1676,26 @@ def process_cached_exchange( if isinstance(exchanges, tuple): exchanges = [exchanges] - new_exchanges.extend( - [ - { - "name": i[0], - "product": i[1], - "unit": i[3], - "location": i[2], - "type": "technosphere", - "amount": exchange["amount"] * i[-1], - "uncertainty type": exchange.get("uncertainty type", 0), - "loc": exchange.get("loc", 0) * i[-1], - "scale": exchange.get("scale", 0) * i[-1], - "negative": exchange.get("negative", False), - "minimum": exchange.get("minimum", 0) * i[-1], - "maximum": exchange.get("maximum", 0) * i[-1], - } - for i in exchanges - ] - ) + _ = lambda x: 0 if x is None else x + + for i, e in enumerate(exchanges): + + new_exc = { + "name": e[0], + "product": e[1], + "unit": exchange["unit"], + "location": e[2], + "type": "technosphere", + "amount": exchange["amount"] * e[-1], + "uncertainty type": exchange.get("uncertainty type", 0), + } + + for key in ["loc", "scale", "negative", "minimum", "maximum"]: + if key in exchange: + if isinstance(exchange[key], float): + new_exc[key] = exchange[key] + + new_exchanges.append(new_exc) def process_uncached_exchange( self, @@ -1676,22 +1744,22 @@ def process_uncached_exchange( print( f"No possible datasets found for {key} in {dataset['name']} {dataset['location']}" ) - return [ - { - "name": exchange["name"], - "product": exchange["product"], - "unit": exchange["unit"], - "location": dataset["location"], - "type": "technosphere", - "amount": exchange["amount"], - "uncertainty type": exchange.get("uncertainty type", 0), - "loc": exchange.get("loc", None), - "scale": exchange.get("scale", None), - "negative": exchange.get("negative", False), - "minimum": exchange.get("minimum", None), - "maximum": exchange.get("maximum", None), - } - ] + + exc = { + "name": exchange["name"], + "product": exchange["product"], + "unit": exchange["unit"], + "location": dataset["location"], + "type": "technosphere", + "amount": exchange["amount"], + "uncertainty type": exchange.get("uncertainty type", 0), + } + + for key in ["loc", "scale", "negative", "minimum", "maximum"]: + if key in exchange: + exc[key] = exchange[key] + + return [exc] if len(possible_datasets) == 1: self.handle_single_possible_dataset( @@ -1728,7 +1796,8 @@ def handle_single_possible_dataset( def new_exchange(self, exchange, location, amount_multiplier): # Create a new exchange dictionary with the modified location and amount - return { + + exc = { "name": exchange["name"], "product": exchange["product"], "unit": exchange["unit"], @@ -1736,13 +1805,14 @@ def new_exchange(self, exchange, location, amount_multiplier): "type": "technosphere", "amount": exchange["amount"] * amount_multiplier, "uncertainty type": exchange.get("uncertainty type", 0), - "loc": exchange.get("loc", None), - "scale": exchange.get("scale", None), - "negative": exchange.get("negative", False), - "minimum": exchange.get("minimum", None), - "maximum": exchange.get("maximum", None), } + for key in ["loc", "scale", "negative", "minimum", "maximum"]: + if key in exchange: + exc[key] = exchange[key] + + return exc + def handle_multiple_possible_datasets( self, exchange: dict, @@ -1992,28 +2062,15 @@ def relink_technosphere_exchanges( if exc.get("uncertainty type", 0) != 0: old_uncertainty[(exc["name"], exc.get("product"), exc["unit"])] = { "uncertainty type": exc.get("uncertainty type", 0), - "loc": ( - exc.get("loc", 0) / exc["amount"] - if exc.get("loc", None) is not None - else None - ), - "scale": ( - exc.get("scale", 0) / exc["amount"] - if exc.get("scale", None) is not None - else None - ), - "minimum": ( - exc.get("minimum", 0) / exc["amount"] - if exc.get("minimum", None) is not None - else None - ), - "maximum": ( - exc.get("maximum", 0) / exc["amount"] - if exc.get("maximum", None) is not None - else None - ), + "amount": exc["amount"], } + for key in ["loc", "scale", "negative", "minimum", "maximum"]: + if key in exc: + old_uncertainty[ + (exc["name"], exc.get("product"), exc["unit"]) + ][key] = exc[key] + new_exchanges = self.find_candidates( dataset, exclusive=exclusive, @@ -2064,10 +2121,24 @@ def relink_technosphere_exchanges( key = (exc["name"], exc["product"], exc["unit"]) if key in old_uncertainty: exc["uncertainty type"] = old_uncertainty[key]["uncertainty type"] - for k, v in old_uncertainty[key].items(): - if k != "uncertainty type": - if v is not None: - exc[k] = v * exc["amount"] + loc, scale, minimum, maximum, negative = ( + redefine_uncertainty_params(old_uncertainty[key], exc) + ) + + if loc: + exc["loc"] = loc + + if scale: + exc["scale"] = scale + + if negative: + exc["negative"] = negative + + if minimum: + exc["minimum"] = minimum + + if maximum: + exc["maximum"] = maximum dataset["exchanges"] = [ exc for exc in dataset["exchanges"] if exc["type"] != "technosphere" diff --git a/premise/utils.py b/premise/utils.py index 62c5de95..1c7f7147 100644 --- a/premise/utils.py +++ b/premise/utils.py @@ -51,6 +51,7 @@ def rescale_exchanges( for exc in technosphere(ds, *(technosphere_filters or [])): rescale_exchange(exc, value, remove_uncertainty) + for exc in biosphere(ds, *(biosphere_filters or [])): rescale_exchange(exc, value, remove_uncertainty) diff --git a/premise/validation.py b/premise/validation.py index 18fea43c..147d4096 100644 --- a/premise/validation.py +++ b/premise/validation.py @@ -214,6 +214,15 @@ def check_uncertainty(self): ) self.log_issue(ds, "incomplete uncertainty data", message) + if exc.get("uncertainty type", 0) == 2 and "loc" not in exc: + exc["loc"] = math.log(exc["amount"]) + + if exc.get("uncertainty type", 0) == 3 and "loc" not in exc: + exc["loc"] = exc["amount"] + + if exc.get("uncertainty type", 0) == 5 and "loc" not in exc: + exc["loc"] = exc["amount"] + def check_datasets_integrity(self): # Verify no unintended loss of datasets original_activities = [