From b579729fd74ef40642579e1f9642e169d69c9e38 Mon Sep 17 00:00:00 2001 From: romainsacchi Date: Tue, 26 Sep 2023 15:51:15 +0200 Subject: [PATCH] Align with master branch --- conda/meta.yaml | 6 +- premise/__init__.py | 2 +- .../lci-home-batteries.xlsx | Bin 0 -> 15976 bytes .../lci-hydrogen-electrolysis.xlsx | Bin 66743 -> 66729 bytes .../additional_inventories/migration_map.csv | 3 +- premise/data_collection.py | 66 +++-------- premise/ecoinvent_modification.py | 51 +++------ premise/export.py | 90 ++++++++------- premise/inventory_imports.py | 101 ++-------------- premise/marginal_mixes.py | 108 ++++-------------- premise/transformation.py | 89 +++++---------- premise/utils.py | 47 -------- requirements.txt | 6 +- setup.py | 6 +- 14 files changed, 156 insertions(+), 419 deletions(-) create mode 100644 premise/data/additional_inventories/lci-home-batteries.xlsx diff --git a/conda/meta.yaml b/conda/meta.yaml index df7b4bac..072a4bda 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -19,10 +19,10 @@ requirements: - setuptools run: - numpy - - pandas==1.5.3 + - pandas - bw2io==0.8.7 - - bw2data==3.6.6 - - wurst==0.3.3 + - bw2data + - wurst - xarray - prettytable - pycountry diff --git a/premise/__init__.py b/premise/__init__.py index fc4159ce..8b7a3b1d 100644 --- a/premise/__init__.py +++ b/premise/__init__.py @@ -1,5 +1,5 @@ __all__ = ("NewDatabase", "clear_cache", "get_regions_definition") -__version__ = (1, 6, 6) +__version__ = (1, 7, 0) from pathlib import Path diff --git a/premise/data/additional_inventories/lci-home-batteries.xlsx b/premise/data/additional_inventories/lci-home-batteries.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f675f003ec10bed01f139e5812b2fbe6ea7faa4a GIT binary patch literal 15976 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 U2R8nwO@#$?eR!Kh?mvG0KlE4S7XSbN literal 0 HcmV?d00001 diff --git a/premise/data/additional_inventories/lci-hydrogen-electrolysis.xlsx b/premise/data/additional_inventories/lci-hydrogen-electrolysis.xlsx index 79d8ca76b77d2faa5a60df7c566b964119788385..ec74cf185881513856edd3c13018e0ccb2999d48 100644 GIT binary patch delta 57578 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ʃ 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∨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 delta 57585 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 k>ILLI!rOZUDs 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 ZQERK?0Y3x?bQ`$;!~uaSK|oZ{{{UM!)z|<4 diff --git a/premise/data/additional_inventories/migration_map.csv b/premise/data/additional_inventories/migration_map.csv index a8e35b1c..8c4b6764 100644 --- a/premise/data/additional_inventories/migration_map.csv +++ b/premise/data/additional_inventories/migration_map.csv @@ -615,4 +615,5 @@ from;to;name_from;ref_prod_from;location_from;name_to;ref_prod_to;location_to 35;39;transmission network construction, electricity, high voltage;transmission network, long-distance;CH;transmission network construction, electricity, high voltage;transmission network, electricity, high voltage;CH 36;39;transmission network construction, electricity, high voltage;transmission network, long-distance;CH;transmission network construction, electricity, high voltage;transmission network, electricity, high voltage;CH 37;39;transmission network construction, electricity, high voltage;transmission network, long-distance;CH;transmission network construction, electricity, high voltage;transmission network, electricity, high voltage;CH -38;39;transmission network construction, electricity, high voltage;transmission network, long-distance;CH;transmission network construction, electricity, high voltage;transmission network, electricity, high voltage;CH \ No newline at end of file +38;39;transmission network construction, electricity, high voltage;transmission network, long-distance;CH;transmission network construction, electricity, high voltage;transmission network, electricity, high voltage;CH +39;38;market for battery cell, Li-ion, LFP;battery cell, Li-ion, LFP;GLO;market for battery cell, Li-ion;battery cell, Li-ion;GLO \ No newline at end of file diff --git a/premise/data_collection.py b/premise/data_collection.py index 9a5279be..dcd0af0f 100644 --- a/premise/data_collection.py +++ b/premise/data_collection.py @@ -146,11 +146,7 @@ def get_gains_EU_data() -> xr.DataArray: ) gains_emi_EU["sector"] = gains_emi_EU["Sector"] + gains_emi_EU["Activity"] gains_emi_EU.drop( - [ - "Sector", - "Activity", - ], - axis=1, + ["Sector", "Activity",], axis=1, ) gains_emi_EU = gains_emi_EU[~gains_emi_EU["value"].isna()] @@ -229,9 +225,7 @@ def fix_efficiencies(data: xr.DataArray, min_year: int) -> xr.DataArray: # we correct it to 1, as we do not accept # that efficiency degrades over time data.loc[dict(year=[y for y in data.year.values if y > 2020])] = np.clip( - data.loc[dict(year=[y for y in data.year.values if y > 2020])], - 1, - None, + data.loc[dict(year=[y for y in data.year.values if y > 2020])], 1, None, ) # Inversely, if we are looking at a year prior to 2020 @@ -239,9 +233,7 @@ def fix_efficiencies(data: xr.DataArray, min_year: int) -> xr.DataArray: # we correct it to 1, as we do not accept # that efficiency in the past was higher than now data.loc[dict(year=[y for y in data.year.values if y < 2020])] = np.clip( - data.loc[dict(year=[y for y in data.year.values if y < 2020])], - None, - 1, + data.loc[dict(year=[y for y in data.year.values if y < 2020])], None, 1, ) # ensure that efficiency can not decrease over time @@ -398,9 +390,7 @@ def __init__( new_vars = flatten(new_vars) data = self.__get_iam_data( - key=key, - filedir=filepath_iam_files, - variables=new_vars, + key=key, filedir=filepath_iam_files, variables=new_vars, ) self.regions = data.region.values.tolist() @@ -412,9 +402,7 @@ def __init__( ) self.electricity_markets = self.__fetch_market_data( - data=data, - input_vars=electricity_prod_vars, - system_model=self.system_model, + data=data, input_vars=electricity_prod_vars, system_model=self.system_model, ) self.petrol_markets = self.__fetch_market_data( @@ -439,12 +427,7 @@ def __init__( input_vars={ k: v for k, v in fuel_prod_vars.items() - if any( - x in k - for x in [ - "diesel", - ] - ) + if any(x in k for x in ["diesel",]) }, system_model=self.system_model, ) @@ -471,12 +454,7 @@ def __init__( input_vars={ k: v for k, v in fuel_prod_vars.items() - if any( - x in k - for x in [ - "hydrogen", - ] - ) + if any(x in k for x in ["hydrogen",]) }, system_model=self.system_model, ) @@ -533,12 +511,7 @@ def __init__( efficiency_labels={ k: v for k, v in fuel_eff_vars.items() - if any( - x in k - for x in [ - "diesel", - ] - ) + if any(x in k for x in ["diesel",]) }, ) self.gas_efficiencies = self.get_iam_efficiencies( @@ -554,12 +527,7 @@ def __init__( efficiency_labels={ k: v for k, v in fuel_eff_vars.items() - if any( - x in k - for x in [ - "hydrogen", - ] - ) + if any(x in k for x in ["hydrogen",]) }, ) @@ -1121,7 +1089,10 @@ def get_external_data(self, datapackages): .to_xarray() ) - array.coords["year"] = [int(y) for y in array.coords["year"]] + # convert to float64 + array = array.astype(np.float64) + # convert year dim to int64 + array.coords["year"] = array.coords["year"].astype(np.int64) data[i]["production volume"] = array regions = subset["region"].unique().tolist() @@ -1163,7 +1134,10 @@ def get_external_data(self, datapackages): .mean() .to_xarray() ) - array.coords["year"] = [int(y) for y in array.coords["year"]] + # convert to float64 + array = array.astype(np.float64) + # convert year dim to int64 + array.coords["year"] = array.coords["year"].astype(np.int64) ref_years = {} @@ -1256,11 +1230,7 @@ def fetch_external_data_coal_power_plants(self): df = df.drop(columns=["fuel input"]) array = ( df.melt( - id_vars=[ - "country", - "CHP", - "fuel", - ], + id_vars=["country", "CHP", "fuel",], var_name="variable", value_name="value", ) diff --git a/premise/ecoinvent_modification.py b/premise/ecoinvent_modification.py index 092322cc..28fca55d 100644 --- a/premise/ecoinvent_modification.py +++ b/premise/ecoinvent_modification.py @@ -136,6 +136,7 @@ FILEPATH_WAVE = INVENTORY_DIR / "lci-wave_energy.xlsx" FILEPATH_FUEL_CELL = INVENTORY_DIR / "lci-fuel_cell.xlsx" FILEPATH_CSP = INVENTORY_DIR / "lci-concentrating-solar-power.xlsx" +FILEPATH_HOME_STORAGE_BATTERIES = INVENTORY_DIR / "lci-home-batteries.xlsx" config = load_constants() @@ -340,6 +341,10 @@ def check_scenarios(scenario: dict, key: bytes) -> dict: scenario["filepath"] = check_filepath(filepath) else: scenario["filepath"] = DATA_DIR / "iam_output_files" + if key is None: + raise ValueError( + "You need to provide the encryption key to decrypt the IAM output files provided by `premise`." + ) scenario["model"] = check_model_name(scenario["model"]) scenario["pathway"] = check_pathway_name( @@ -709,6 +714,7 @@ def __import_inventories(self, keep_uncertainty_data: bool = False) -> List[dict (FILEPATH_COBALT, "3.8"), (FILEPATH_GRAPHITE, "3.8"), (FILEPATH_BATTERIES, "3.8"), + (FILEPATH_HOME_STORAGE_BATTERIES, "3.9"), (FILEPATH_PHOTOVOLTAICS, "3.7"), (FILEPATH_HYDROGEN_INVENTORIES, "3.9"), (FILEPATH_HYDROGEN_SOLAR_INVENTORIES, "3.9"), @@ -726,18 +732,12 @@ def __import_inventories(self, keep_uncertainty_data: bool = False) -> List[dict (FILEPATH_SYNGAS_FROM_COAL_INVENTORIES, "3.7"), (FILEPATH_BIOFUEL_INVENTORIES, "3.7"), (FILEPATH_SYNFUEL_INVENTORIES, "3.7"), - ( - FILEPATH_SYNFUEL_FROM_FT_FROM_WOOD_GASIFICATION_INVENTORIES, - "3.7", - ), + (FILEPATH_SYNFUEL_FROM_FT_FROM_WOOD_GASIFICATION_INVENTORIES, "3.7",), ( FILEPATH_SYNFUEL_FROM_FT_FROM_WOOD_GASIFICATION_WITH_CCS_INVENTORIES, "3.7", ), - ( - FILEPATH_SYNFUEL_FROM_FT_FROM_COAL_GASIFICATION_INVENTORIES, - "3.7", - ), + (FILEPATH_SYNFUEL_FROM_FT_FROM_COAL_GASIFICATION_INVENTORIES, "3.7",), ( FILEPATH_SYNFUEL_FROM_FT_FROM_COAL_GASIFICATION_WITH_CCS_INVENTORIES, "3.7", @@ -856,12 +856,7 @@ def update_dac(self) -> None: # use multiprocessing to speed up the process with ProcessPool(processes=multiprocessing.cpu_count()) as pool: args = [ - ( - scenario, - self.version, - self.system_model, - self.modified_datasets, - ) + (scenario, self.version, self.system_model, self.modified_datasets,) for scenario in self.scenarios ] results = pool.starmap(_update_dac, args) @@ -882,12 +877,7 @@ def update_fuels(self) -> None: # use multiprocessing to speed up the process with ProcessPool(processes=multiprocessing.cpu_count()) as pool: args = [ - ( - scenario, - self.version, - self.system_model, - self.modified_datasets, - ) + (scenario, self.version, self.system_model, self.modified_datasets,) for scenario in self.scenarios ] results = pool.starmap(_update_fuels, args) @@ -908,12 +898,7 @@ def update_cement(self) -> None: # use multiprocessing to speed up the process with ProcessPool(processes=multiprocessing.cpu_count()) as pool: args = [ - ( - scenario, - self.version, - self.system_model, - self.modified_datasets, - ) + (scenario, self.version, self.system_model, self.modified_datasets,) for scenario in self.scenarios ] results = pool.starmap(_update_cement, args) @@ -934,12 +919,7 @@ def update_steel(self) -> None: # use multiprocessing to speed up the process with ProcessPool(processes=multiprocessing.cpu_count()) as pool: args = [ - ( - scenario, - self.version, - self.system_model, - self.modified_datasets, - ) + (scenario, self.version, self.system_model, self.modified_datasets,) for scenario in self.scenarios ] results = pool.starmap(_update_steel, args) @@ -1220,9 +1200,7 @@ def write_superstructure_db_to_brightway( ) write_brightway2_database( - data=self.database, - name=name, - reset_codes=True, + data=self.database, name=name, reset_codes=True, ) # generate scenario report @@ -1290,8 +1268,7 @@ def write_db_to_brightway(self, name: [str, List[str]] = None): for scen, scenario in enumerate(self.scenarios): write_brightway2_database( - scenario["database"], - name[scen], + scenario["database"], name[scen], ) # generate scenario report self.generate_scenario_report() diff --git a/premise/export.py b/premise/export.py index 8c178107..7f7b0ba0 100644 --- a/premise/export.py +++ b/premise/export.py @@ -310,12 +310,7 @@ def create_codes_and_names_of_tech_matrix(database: List[dict]): :rtype: dict """ return { - ( - i["name"], - i["reference product"], - i["unit"], - i["location"], - ): i["code"] + (i["name"], i["reference product"], i["unit"], i["location"],): i["code"] for i in database } @@ -337,10 +332,7 @@ def biosphere_flows_dictionary(version): csv_dict = {} with open(fp, encoding="utf-8") as file: - input_dict = csv.reader( - file, - delimiter=get_delimiter(filepath=fp), - ) + input_dict = csv.reader(file, delimiter=get_delimiter(filepath=fp),) for row in input_dict: csv_dict[(row[0], row[1], row[2], row[3])] = row[-1] @@ -542,9 +534,7 @@ def build_datapackage(df, inventories, list_scenarios, ei_version, name): "version": ei_version, "type": "source", }, - { - "name": "biosphere3", - }, + {"name": "biosphere3",}, ] package.descriptor["scenarios"] = [ { @@ -937,7 +927,6 @@ def prepare_db_for_export( base.database = check_amount_format(base.database) # we relink "dead" exchanges - # print("- relinking exchanges...") base.relink_datasets( excludes_datasets=["cobalt industry", "market group for electricity"], alt_names=[ @@ -950,11 +939,53 @@ def prepare_db_for_export( ], ) - # print("Done!") + for ds in base.database: + if "parameters" in ds: + if not isinstance(ds["parameters"], list): + if isinstance(ds["parameters"], dict): + ds["parameters"] = [ + {"name": k, "amount": v} for k, v in ds["parameters"].items() + ] + else: + ds["parameters"] = [ds["parameters"]] + else: + ds["parameters"] = [ + {"name": k, "amount": v} + for o in ds["parameters"] + for k, v in o.items() + ] + + for key, value in list(ds.items()): + if not value: + del ds[key] + + ds["exchanges"] = [clean_up(exc) for exc in ds["exchanges"]] return base.database, base.cache +def clean_up(exc): + """Remove keys from ``exc`` that are not in the schema.""" + + FORBIDDEN_FIELDS_TECH = [ + "categories", + ] + + FORBIDDEN_FIELDS_BIO = ["location", "product"] + + for field in list(exc.keys()): + if exc[field] is None or exc[field] == "None": + del exc[field] + continue + + if exc["type"] == "biosphere" and field in FORBIDDEN_FIELDS_BIO: + del exc[field] + if exc["type"] == "technosphere" and field in FORBIDDEN_FIELDS_TECH: + del exc[field] + + return exc + + def _prepare_database( scenario, scenario_cache, version, system_model, modified_datasets ): @@ -991,10 +1022,7 @@ class Export: """ def __init__( - self, - scenario: dict = None, - filepath: Path = None, - version: str = None, + self, scenario: dict = None, filepath: Path = None, version: str = None, ): self.db = scenario["database"] self.model = scenario["model"] @@ -1103,11 +1131,7 @@ def export_db_to_matrices(self): # Export A matrix with open(self.filepath / "A_matrix.csv", "w", encoding="utf-8") as file: - writer = csv.writer( - file, - delimiter=";", - lineterminator="\n", - ) + writer = csv.writer(file, delimiter=";", lineterminator="\n",) writer.writerow(["index of activity", "index of product", "value"]) rows = self.create_A_matrix_coordinates() for row in rows: @@ -1115,11 +1139,7 @@ def export_db_to_matrices(self): # Export A index with open(self.filepath / "A_matrix_index.csv", "w", encoding="utf-8") as file: - writer = csv.writer( - file, - delimiter=";", - lineterminator="\n", - ) + writer = csv.writer(file, delimiter=";", lineterminator="\n",) index_A = create_index_of_A_matrix(self.db) for d in index_A: data = list(d) + [index_A[d]] @@ -1129,11 +1149,7 @@ def export_db_to_matrices(self): # Export B matrix with open(self.filepath / "B_matrix.csv", "w", encoding="utf-8") as file: - writer = csv.writer( - file, - delimiter=";", - lineterminator="\n", - ) + writer = csv.writer(file, delimiter=";", lineterminator="\n",) writer.writerow(["index of activity", "index of biosphere flow", "value"]) rows = self.create_B_matrix_coordinates() for row in rows: @@ -1141,11 +1157,7 @@ def export_db_to_matrices(self): # Export B index with open(self.filepath / "B_matrix_index.csv", "w", encoding="utf-8") as file: - writer = csv.writer( - file, - delimiter=";", - lineterminator="\n", - ) + writer = csv.writer(file, delimiter=";", lineterminator="\n",) for d in index_B: data = list(d) + [index_B[d]] writer.writerow(data) diff --git a/premise/inventory_imports.py b/premise/inventory_imports.py index 83a18253..66b1cff2 100644 --- a/premise/inventory_imports.py +++ b/premise/inventory_imports.py @@ -60,10 +60,7 @@ def get_biosphere_code(version) -> dict: csv_dict = {} with open(fp, encoding="utf-8") as file: - input_dict = csv.reader( - file, - delimiter=get_delimiter(filepath=fp), - ) + input_dict = csv.reader(file, delimiter=get_delimiter(filepath=fp),) for row in input_dict: csv_dict[(row[0], row[1], row[2], row[3])] = row[4] @@ -90,8 +87,7 @@ def generate_migration_maps(origin: str, destination: str) -> Dict[str, list]: with open(FILEPATH_MIGRATION_MAP, "r", encoding="utf-8") as read_obj: csv_reader = csv.reader( - read_obj, - delimiter=get_delimiter(filepath=FILEPATH_MIGRATION_MAP), + read_obj, delimiter=get_delimiter(filepath=FILEPATH_MIGRATION_MAP), ) next(csv_reader) for row in csv_reader: @@ -511,15 +507,7 @@ def correct_product_field(self, exc: tuple) -> [str, None]: return candidate["reference product"] self.list_unlinked.append( - ( - exc[0], - exc[-1], - exc[1], - None, - exc[2], - "technosphere", - self.path.name, - ) + (exc[0], exc[-1], exc[1], None, exc[2], "technosphere", self.path.name,) ) return None @@ -692,10 +680,8 @@ def prepare_inventory(self) -> None: ) if self.system_model == "consequential": - self.import_db.data = ( - check_for_datasets_compliance_with_consequential_database( - self.import_db.data, self.consequential_blacklist - ) + self.import_db.data = check_for_datasets_compliance_with_consequential_database( + self.import_db.data, self.consequential_blacklist ) self.import_db.data = remove_categories(self.import_db.data) @@ -827,16 +813,6 @@ def load_inventory(self, path): "Incorrect filetype for inventories." "Should be either .xlsx or .csv" ) - def remove_missing_fields(self): - """ - Remove any field that does not have information. - """ - - for dataset in self.import_db.data: - for key, value in list(dataset.items()): - if not value: - del dataset[key] - def prepare_inventory(self): if str(self.version_in) != self.version_out: # if version_out is 3.9, migrate towards 3.8 first, then 3.9 @@ -855,72 +831,15 @@ def prepare_inventory(self): ) if self.system_model == "consequential": - self.import_db.data = ( - check_for_datasets_compliance_with_consequential_database( - self.import_db.data, self.consequential_blacklist - ) + self.import_db.data = check_for_datasets_compliance_with_consequential_database( + self.import_db.data, self.consequential_blacklist ) - list_missing_prod = self.search_missing_exchanges( - label="type", value="production" - ) - - if len(list_missing_prod) > 0: - print("The following datasets are missing a `production` exchange.") - print("You should fix those before proceeding further.\n") - table = PrettyTable( - ["Name", "Reference product", "Location", "Unit", "File"] - ) - for dataset in list_missing_prod: - table.add_row( - [ - dataset.get("name", "XXXX"), - dataset.get("referece product", "XXXX"), - dataset.get("location", "XXXX"), - dataset.get("unit", "XXXX"), - self.path.name, - ] - ) - - print(table) - - sys.exit() - self.import_db.data = remove_categories(self.import_db.data) - self.add_biosphere_links(delete_missing=True) - list_missing_ref = self.search_missing_field(field="name") - list_missing_ref.extend(self.search_missing_field(field="reference product")) - list_missing_ref.extend(self.search_missing_field(field="location")) - list_missing_ref.extend(self.search_missing_field(field="unit")) - - if len(list_missing_ref) > 0: - print( - "The following datasets are missing an important field " - "(`name`, `reference product`, `location` or `unit`).\n" - ) - - print("You should fix those before proceeding further.\n") - table = PrettyTable( - ["Name", "Reference product", "Location", "Unit", "File"] - ) - for dataset in list_missing_ref: - table.add_row( - [ - dataset.get("name", "XXXX"), - dataset.get("referece product", "XXXX"), - dataset.get("location", "XXXX"), - dataset.get("unit", "XXXX"), - self.path.name, - ] - ) - - print(table) - - if len(list_missing_prod) > 0 or len(list_missing_ref) > 0: - sys.exit() - - self.remove_missing_fields() + self.lower_case_technosphere_exchanges() + self.add_biosphere_links() self.add_product_field_to_exchanges() + # Check for duplicates self.check_for_already_existing_datasets() self.import_db.data = check_for_duplicate_datasets(self.import_db.data) diff --git a/premise/marginal_mixes.py b/premise/marginal_mixes.py index d9213352..72a87281 100644 --- a/premise/marginal_mixes.py +++ b/premise/marginal_mixes.py @@ -161,9 +161,7 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr weighted_slope_start: float = args.get("weighted slope start", 0.75) weighted_slope_end: float = args.get("weighted slope end", 1.0) - market_shares = xr.zeros_like( - data.interp(year=[year]), - ) + market_shares = xr.zeros_like(data.interp(year=[year]),) # Since there can be different start and end values, # we interpolate the entire data of the IAM instead @@ -197,6 +195,10 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr region=region, year=year ).sum(dim="variables") + # if shares contains only NaNs, we give its elements the value 1 + if shares.isnull().all(): + shares = xr.ones_like(shares) + time_parameters = { (False, False, False, False): { "start": year, @@ -328,31 +330,18 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr # if the capital replacement rate is not used, if isinstance(start, np.ndarray): data_start = ( - data_full.sel( - region=region, - year=start, - ) + data_full.sel(region=region, year=start,) * np.identity(start.shape[0]) ).sum(dim="variables") else: - data_start = data_full.sel( - region=region, - year=start, - ) + data_start = data_full.sel(region=region, year=start,) if isinstance(end, np.ndarray): data_end = ( - data_full.sel( - region=region, - year=end, - ) - * np.identity(end.shape[0]) + data_full.sel(region=region, year=end,) * np.identity(end.shape[0]) ).sum(dim="variables") else: - data_end = data_full.sel( - region=region, - year=end, - ) + data_end = data_full.sel(region=region, year=end,) market_shares.loc[dict(region=region)] = ( (data_end.values - data_start.values) / (end - start) @@ -409,28 +398,18 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr if measurement == 2: if isinstance(end, np.ndarray): data_end = ( - data_full.sel( - region=region, - year=end, - ) - * np.identity(end.shape[0]) + data_full.sel(region=region, year=end,) * np.identity(end.shape[0]) ).sum(dim="variables") new_end = np.zeros_like(data_full.sel(region=region)) new_end[:, :] = end[:, None] end = new_end else: - data_end = data_full.sel( - region=region, - year=end, - ) + data_end = data_full.sel(region=region, year=end,) if isinstance(start, np.ndarray): data_start = ( - data_full.sel( - region=region, - year=start, - ) + data_full.sel(region=region, year=start,) * np.identity(start.shape[0]) ).sum(dim="variables") @@ -438,10 +417,7 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr new_start[:, :] = start[:, None] start = new_start else: - data_start = data_full.sel( - region=region, - year=start, - ) + data_start = data_full.sel(region=region, year=start,) mask_end = data_full.sel(region=region).year.values[None, :] <= end mask_start = data_full.sel(region=region).year.values[None, :] >= start @@ -493,33 +469,20 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr if measurement == 3: if isinstance(end, np.ndarray): data_end = ( - data_full.sel( - region=region, - year=end, - ) - * np.identity(end.shape[0]) + data_full.sel(region=region, year=end,) * np.identity(end.shape[0]) ).sum(dim="variables") else: - data_end = data_full.sel( - region=region, - year=end, - ) + data_end = data_full.sel(region=region, year=end,) if isinstance(start, np.ndarray): data_start = ( - data_full.sel( - region=region, - year=start, - ) + data_full.sel(region=region, year=start,) * np.identity(start.shape[0]) ).sum(dim="variables") else: - data_start = data_full.sel( - region=region, - year=start, - ) + data_start = data_full.sel(region=region, year=start,) slope = (data_end.values - data_start.values) / (end - start) @@ -528,32 +491,24 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr if isinstance(short_slope_start, np.ndarray): data_short_slope_start = ( - data_full.sel( - region=region, - year=short_slope_start, - ) + data_full.sel(region=region, year=short_slope_start,) * np.identity(short_slope_start.shape[0]) ).sum(dim="variables") else: data_short_slope_start = data_full.sel( - region=region, - year=short_slope_start, + region=region, year=short_slope_start, ) if isinstance(short_slope_end, np.ndarray): data_short_slope_end = ( - data_full.sel( - region=region, - year=short_slope_end, - ) + data_full.sel(region=region, year=short_slope_end,) * np.identity(short_slope_end.shape[0]) ).sum(dim="variables") else: data_short_slope_end = data_full.sel( - region=region, - year=short_slope_end, + region=region, year=short_slope_end, ) short_slope = ( @@ -651,31 +606,18 @@ def consequential_method(data: xr.DataArray, year: int, args: dict) -> xr.DataAr if isinstance(start, np.ndarray): data_start = ( - data_full.sel( - region=region, - year=start, - ) + data_full.sel(region=region, year=start,) * np.identity(start.shape[0]) ).sum(dim="variables") else: - data_start = data_full.sel( - region=region, - year=start, - ) + data_start = data_full.sel(region=region, year=start,) if isinstance(end, np.ndarray): data_end = ( - data_full.sel( - region=region, - year=end, - ) - * np.identity(end.shape[0]) + data_full.sel(region=region, year=end,) * np.identity(end.shape[0]) ).sum(dim="variables") else: - data_end = data_full.sel( - region=region, - year=end, - ) + data_end = data_full.sel(region=region, year=end,) market_shares.loc[dict(region=region)] = ( (data_end.values - data_start.values) / (end - start) diff --git a/premise/transformation.py b/premise/transformation.py index 0ca0e279..dca178e2 100644 --- a/premise/transformation.py +++ b/premise/transformation.py @@ -6,7 +6,6 @@ """ import logging.config -import sys import uuid from collections import defaultdict from copy import deepcopy @@ -76,10 +75,7 @@ def get_suppliers_of_a_region( if exclude: filters.append(ws.doesnt_contain_any("name", exclude)) - return ws.get_many( - database, - *filters, - ) + return ws.get_many(database, *filters,) def get_shares_from_production_volume( @@ -110,12 +106,7 @@ def get_shares_from_production_volume( production_volume = max(float(exc.get("production volume", 1e-9)), 1e-9) dict_act[ - ( - act["name"], - act["location"], - act["reference product"], - act["unit"], - ) + (act["name"], act["location"], act["reference product"], act["unit"],) ] = production_volume total_production_volume += production_volume @@ -214,10 +205,13 @@ def allocate_inputs(exc, lst): if lst[0]["name"] != exc["name"]: exc["name"] = lst[0]["name"] - return [ - new_exchange(exc, obj["location"], factor / total) - for obj, factor in zip(lst, pvs) - ], [p / total for p in pvs] + return ( + [ + new_exchange(exc, obj["location"], factor / total) + for obj, factor in zip(lst, pvs) + ], + [p / total for p in pvs], + ) def filter_out_results( @@ -647,12 +641,7 @@ def fetch_proxies( self.modified_datasets[(self.model, self.scenario, self.year)][ "emptied" ].append( - ( - ds["name"], - ds["reference product"], - ds["location"], - ds["unit"], - ) + (ds["name"], ds["reference product"], ds["location"], ds["unit"],) ) # empty original datasets @@ -708,7 +697,9 @@ def empty_original_datasets( self.database, ws.equals("name", name), ws.contains("reference product", ref_prod), - ws.doesnt_contain_any("location", regions), + ws.exclude( + ws.either(*[ws.equals("location", loc) for loc in self.regions]) + ), ) for existing_ds in existing_datasets: @@ -822,8 +813,7 @@ def relink_datasets( # loop through the database # ignore datasets which name contains `name` for act in ws.get_many( - self.database, - ws.doesnt_contain_any("name", excludes_datasets), + self.database, ws.doesnt_contain_any("name", excludes_datasets), ): # and find exchanges of datasets to relink excs_to_relink = [ @@ -888,15 +878,11 @@ def relink_datasets( names_to_look_for, alternative_locations ): if ( - name_to_look_for, - exc[1], - alt_loc, - exc[-1], - ) in self.modified_datasets[ - (self.model, self.scenario, self.year) - ][ - "created" - ]: + (name_to_look_for, exc[1], alt_loc, exc[-1],) + in self.modified_datasets[ + (self.model, self.scenario, self.year) + ]["created"] + ): entry = [(name_to_look_for, exc[1], alt_loc, exc[-1], 1.0)] self.add_new_entry_to_cache( @@ -997,10 +983,7 @@ def get_carbon_capture_rate(self, loc: str, sector: str) -> float: if sector in self.iam_data.carbon_capture_rate.variables.values: rate = ( - self.iam_data.carbon_capture_rate.sel( - variables=sector, - region=loc, - ) + self.iam_data.carbon_capture_rate.sel(variables=sector, region=loc,) .interp(year=self.year) .values ) @@ -1063,17 +1046,13 @@ def create_ccs_dataset( # this corresponds to the share of biogenic CO2 # in the fossil + biogenic CO2 emissions of the plant - for exc in ws.biosphere( - ccs, - ws.equals("name", "Carbon dioxide, in air"), - ): + for exc in ws.biosphere(ccs, ws.equals("name", "Carbon dioxide, in air"),): exc["amount"] = bio_co2_stored if bio_co2_leaked > 0: # then the biogenic CO2 leaked during the capture process for exc in ws.biosphere( - ccs, - ws.equals("name", "Carbon dioxide, non-fossil"), + ccs, ws.equals("name", "Carbon dioxide, non-fossil"), ): exc["amount"] = bio_co2_leaked @@ -1112,10 +1091,7 @@ def create_ccs_dataset( self.database.append(ccs) def find_iam_efficiency_change( - self, - data: xr.DataArray, - variable: Union[str, list], - location: str, + self, data: xr.DataArray, variable: Union[str, list], location: str, ) -> float: """ Return the relative change in efficiency for `variable` in `location` @@ -1147,11 +1123,7 @@ def write_log(self, dataset, status="created"): ) def add_new_entry_to_cache( - self, - location: str, - exchange: dict, - allocated: List[dict], - shares: List[float], + self, location: str, exchange: dict, allocated: List[dict], shares: List[float], ) -> None: """ Add an entry to the cache. @@ -1185,11 +1157,7 @@ def add_new_entry_to_cache( self.cache[location][self.model][exc_key] = entry def relink_technosphere_exchanges( - self, - dataset, - exclusive=True, - biggest_first=False, - contained=True, + self, dataset, exclusive=True, biggest_first=False, contained=True, ) -> dict: """Find new technosphere providers based on the location of the dataset. Designed to be used when the dataset's location changes, or when new datasets are added. @@ -1445,12 +1413,7 @@ def relink_technosphere_exchanges( new_exchanges.append(exc) # add to cache self.add_new_entry_to_cache( - dataset["location"], - exc, - [exc], - [ - 1.0, - ], + dataset["location"], exc, [exc], [1.0,], ) # make unique list of exchanges from new_exchanges diff --git a/premise/utils.py b/premise/utils.py index 8ef0c145..56bb9115 100644 --- a/premise/utils.py +++ b/premise/utils.py @@ -281,28 +281,6 @@ def write_database(self): super().write_database() -def clean_up(exc): - """Remove keys from ``exc`` that are not in the schema.""" - - FORBIDDEN_FIELDS_TECH = [ - "categories", - ] - - FORBIDDEN_FIELDS_BIO = ["location", "product"] - - for field in list(exc.keys()): - if exc[field] is None or exc[field] == "None": - del exc[field] - continue - - if exc["type"] == "biosphere" and field in FORBIDDEN_FIELDS_BIO: - del exc[field] - if exc["type"] == "technosphere" and field in FORBIDDEN_FIELDS_TECH: - del exc[field] - - return exc - - def reset_all_codes(data): """ Re-generate all codes in each dataset of a database @@ -322,36 +300,11 @@ def reset_all_codes(data): def write_brightway2_database(data, name, reset_codes=False): # Restore parameters to Brightway2 format # which allows for uncertainty and comments - - for ds in data: - if "parameters" in ds: - if not isinstance(ds["parameters"], list): - if isinstance(ds["parameters"], dict): - ds["parameters"] = [ - {"name": k, "amount": v} for k, v in ds["parameters"].items() - ] - else: - ds["parameters"] = [ds["parameters"]] - else: - ds["parameters"] = [ - {"name": k, "amount": v} - for o in ds["parameters"] - for k, v in o.items() - ] - - for key, value in list(ds.items()): - if not value: - del ds[key] - - ds["exchanges"] = [clean_up(exc) for exc in ds["exchanges"]] - change_db_name(data, name) - if reset_codes: reset_all_codes(data) link_internal(data) check_internal_linking(data) - check_duplicate_codes(data) PremiseImporter(name, data).write_database() diff --git a/requirements.txt b/requirements.txt index 5ada41c7..c2100521 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ numpy -pandas==1.5.3 +pandas bw2io==0.8.7 -bw2data==3.6.6 -wurst==0.3.3 +bw2data +wurst xarray prettytable pycountry diff --git a/setup.py b/setup.py index 8924fbcc..762a7da8 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def package_files(directory): setup( name="premise", - version="1.6.6", + version="1.7.0", python_requires=">=3.9,<3.11", packages=packages, author="Romain Sacchi , Alois Dirnaichner , Chris Mutel " @@ -42,9 +42,9 @@ def package_files(directory): include_package_data=True, install_requires=[ "numpy", - "wurst==0.3.3", + "wurst", "bw2io==0.8.7", - "pandas==1.5.3", + "pandas", "bw2data", "xarray", "prettytable",