diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk index 133ceb6e..194e186d 100644 --- a/rules/build_electricity.smk +++ b/rules/build_electricity.smk @@ -273,6 +273,14 @@ rule add_electricity: nuts3_shapes=RESOURCES + "nuts3_shapes.geojson", output: RESOURCES + "networks/elec.nc", + params: + costs=snakemake.config["costs"] + electricity=snakemake.config["electricity"] + renewable=snakemake.config["renewable"] + conventional=snakemake.config.get("conventional", {}) + countries=snakemake.config["countries"] + scaling_factor=snakemake.config["load"]["scaling_factor"] + length_factor=snakemake.config["lines"]["length_factor"] log: LOGS + "add_electricity.log", benchmark: diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 1d32bce1..bed5ee6b 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -686,15 +686,15 @@ def estimate_renewable_capacities(n, config): ) -def add_nice_carrier_names(n, config): +def add_nice_carrier_names(n, plotting): carrier_i = n.carriers.index nice_names = ( - pd.Series(config["plotting"]["nice_names"]) + pd.Series(plotting["nice_names"]) .reindex(carrier_i) .fillna(carrier_i.to_series().str.title()) ) n.carriers["nice_name"] = nice_names - colors = pd.Series(config["plotting"]["tech_colors"]).reindex(carrier_i) + colors = pd.Series(plotting["tech_colors"]).reindex(carrier_i) if colors.isna().any(): missing_i = list(colors.index[colors.isna()]) logger.warning(f"tech_colors for carriers {missing_i} not defined in config.") @@ -713,23 +713,23 @@ if __name__ == "__main__": costs = load_costs( snakemake.input.tech_costs, - snakemake.config["costs"], - snakemake.config["electricity"], + snakemake.param["costs"], + snakemake.param["electricity"], Nyears, ) ppl = load_powerplants(snakemake.input.powerplants) - if "renewable_carriers" in snakemake.config["electricity"]: - renewable_carriers = set(snakemake.config["electricity"]["renewable_carriers"]) + if "renewable_carriers" in snakemake.param["electricity"]: + renewable_carriers = set(snakemake.param["electricity"]["renewable_carriers"]) else: logger.warning( "Missing key `renewable_carriers` under config entry `electricity`. " "In future versions, this will raise an error. " "Falling back to carriers listed under `renewable`." ) - renewable_carriers = snakemake.config["renewable"] + renewable_carriers = snakemake.param["renewable"] - extendable_carriers = snakemake.config["electricity"]["extendable_carriers"] + extendable_carriers = snakemake.param["electricity"]["extendable_carriers"] if not (set(renewable_carriers) & set(extendable_carriers["Generator"])): logger.warning( "No renewables found in config entry `extendable_carriers`. " @@ -737,18 +737,18 @@ if __name__ == "__main__": "Falling back to all renewables." ) - conventional_carriers = snakemake.config["electricity"]["conventional_carriers"] + conventional_carriers = snakemake.param["electricity"]["conventional_carriers"] attach_load( n, snakemake.input.regions, snakemake.input.load, snakemake.input.nuts3_shapes, - snakemake.config["countries"], - snakemake.config["load"]["scaling_factor"], + snakemake.param["countries"], + snakemake.param["load"]["scaling_factor"], ) - update_transmission_costs(n, costs, snakemake.config["lines"]["length_factor"]) + update_transmission_costs(n, costs, snakemake.param["lines"]["length_factor"]) conventional_inputs = { k: v for k, v in snakemake.input.items() if k.startswith("conventional_") @@ -759,7 +759,7 @@ if __name__ == "__main__": ppl, conventional_carriers, extendable_carriers, - snakemake.config.get("conventional", {}), + snakemake.param.get("conventional", {}), conventional_inputs, ) @@ -769,11 +769,11 @@ if __name__ == "__main__": snakemake.input, renewable_carriers, extendable_carriers, - snakemake.config["lines"]["length_factor"], + snakemake.param["lines"]["length_factor"], ) if "hydro" in renewable_carriers: - conf = snakemake.config["renewable"]["hydro"] + conf = snakemake.param["renewable"]["hydro"] attach_hydro( n, costs, @@ -784,7 +784,7 @@ if __name__ == "__main__": **conf, ) - if "estimate_renewable_capacities" not in snakemake.config["electricity"]: + if "estimate_renewable_capacities" not in snakemake.param["electricity"]: logger.warning( "Missing key `estimate_renewable_capacities` under config entry `electricity`. " "In future versions, this will raise an error. " @@ -792,18 +792,18 @@ if __name__ == "__main__": ) if ( "estimate_renewable_capacities_from_capacity_stats" - in snakemake.config["electricity"] + in snakemake.param["electricity"] ): estimate_renewable_caps = { "enable": True, - **snakemake.config["electricity"][ + **snakemake.param["electricity"][ "estimate_renewable_capacities_from_capacity_stats" ], } else: estimate_renewable_caps = {"enable": False} else: - estimate_renewable_caps = snakemake.config["electricity"][ + estimate_renewable_caps = snakemake.param["electricity"][ "estimate_renewable_capacities" ] if "enable" not in estimate_renewable_caps: @@ -819,21 +819,21 @@ if __name__ == "__main__": "Falling back to whether `renewable_capacities_from_opsd` is non-empty." ) from_opsd = bool( - snakemake.config["electricity"].get("renewable_capacities_from_opsd", False) + snakemake.param["electricity"].get("renewable_capacities_from_opsd", False) ) estimate_renewable_caps["from_opsd"] = from_opsd if estimate_renewable_caps["enable"]: if estimate_renewable_caps["from_opsd"]: - tech_map = snakemake.config["electricity"]["estimate_renewable_capacities"][ + tech_map = snakemake.param["electricity"]["estimate_renewable_capacities"][ "technology_mapping" ] attach_OPSD_renewables(n, tech_map) - estimate_renewable_capacities(n, snakemake.config) + estimate_renewable_capacities(n, snakemake.param) update_p_nom_max(n) - add_nice_carrier_names(n, snakemake.config) + add_nice_carrier_names(n, snakemake.param["plotting"]) - n.meta = snakemake.config + n.meta = snakemake.param n.export_to_netcdf(snakemake.output[0])