From 249cfab4292f11e2efdaa70e6ca104d297a48570 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Mon, 4 Mar 2024 18:24:01 +0100 Subject: [PATCH] remove remaining {weather_year} wildcard usages --- scripts/add_electricity.py | 9 +-------- scripts/build_artificial_load_data.py | 9 +-------- scripts/build_clustered_population_layouts.py | 6 +----- scripts/build_cutout.py | 4 ---- scripts/build_daily_heat_demand.py | 11 ++--------- scripts/build_electricity_demand.py | 9 +-------- scripts/build_hourly_heat_demand.py | 9 +-------- scripts/build_hydro_profile.py | 12 ++++++------ scripts/build_population_layouts.py | 6 +----- scripts/build_population_weighted_energy_totals.py | 10 +++++++--- scripts/build_renewable_profiles.py | 9 +-------- scripts/build_solar_thermal_profiles.py | 13 ++----------- scripts/build_temperature_profiles.py | 13 ++----------- scripts/build_transport_demand.py | 8 +------- 14 files changed, 27 insertions(+), 101 deletions(-) diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 91fc04ea..c0076293 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -805,14 +805,7 @@ if __name__ == "__main__": n = pypsa.Network(snakemake.input.base_network) - weather_year = snakemake.wildcards.weather_year - if weather_year: - snapshots = dict( - start=weather_year, end=str(int(weather_year) + 1), inclusive="left" - ) - else: - snapshots = snakemake.config["snapshots"] - n.set_snapshots(pd.date_range(freq="h", **snapshots)) + n.set_snapshots(pd.date_range(freq="h", **snakemake.params.snapshots)) Nyears = n.snapshot_weightings.objective.sum() / 8760.0 diff --git a/scripts/build_artificial_load_data.py b/scripts/build_artificial_load_data.py index 51c07291..a12ac917 100755 --- a/scripts/build_artificial_load_data.py +++ b/scripts/build_artificial_load_data.py @@ -20,14 +20,7 @@ if __name__ == "__main__": configure_logging(snakemake) - weather_year = snakemake.wildcards.weather_year - if weather_year: - snapshots = dict( - start=weather_year, end=str(int(weather_year) + 1), inclusive="left" - ) - else: - snapshots = snakemake.config["snapshots"] - snapshots = pd.date_range(freq="h", **snapshots) + snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) fixed_year = snakemake.config["load"].get("fixed_year", False) years = ( diff --git a/scripts/build_clustered_population_layouts.py b/scripts/build_clustered_population_layouts.py index 21ff02be..2d9c6acb 100644 --- a/scripts/build_clustered_population_layouts.py +++ b/scripts/build_clustered_population_layouts.py @@ -25,11 +25,7 @@ if __name__ == "__main__": set_scenario_config(snakemake) - cutout_name = snakemake.input.cutout - year = snakemake.wildcards.weather_year - if year: - cutout_name = cutout_name.format(weather_year=year) - cutout = atlite.Cutout(cutout_name) + cutout = atlite.Cutout(snakemake.input.cutout) clustered_regions = ( gpd.read_file(snakemake.input.regions_onshore).set_index("name").buffer(0) diff --git a/scripts/build_cutout.py b/scripts/build_cutout.py index 039f645c..80ddae34 100644 --- a/scripts/build_cutout.py +++ b/scripts/build_cutout.py @@ -109,10 +109,6 @@ if __name__ == "__main__": cutout_params = snakemake.params.cutouts[snakemake.wildcards.cutout] - if hasattr(snakemake.wildcards, "weather_year"): - time = snakemake.wildcards.weather_year - cutout_params["time"] = [time, time] - if "time" not in cutout_params: snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) cutout_params["time"] = [snapshots[0], snapshots[-1]] diff --git a/scripts/build_daily_heat_demand.py b/scripts/build_daily_heat_demand.py index 0ba47771..c08cfe33 100644 --- a/scripts/build_daily_heat_demand.py +++ b/scripts/build_daily_heat_demand.py @@ -31,16 +31,9 @@ if __name__ == "__main__": client = Client(cluster, asynchronous=True) cutout_name = snakemake.input.cutout - year = snakemake.wildcards.weather_year - if year: - snapshots = dict(start=year, end=str(int(year) + 1), inclusive="left") - cutout_name = cutout_name.format(weather_year=year) - else: - snapshots = snakemake.params.snapshots - - time = pd.date_range(freq="h", **snapshots) - daily = pd.date_range(freq="D", **snapshots) + time = pd.date_range(freq="h", **snakemake.params.snapshots) + daily = pd.date_range(freq="D", **snakemake.params.snapshots) if snakemake.params.drop_leap_day: time = time[~((time.month == 2) & (time.day == 29))] daily = daily[~((daily.month == 2) & (daily.day == 29))] diff --git a/scripts/build_electricity_demand.py b/scripts/build_electricity_demand.py index 4328b842..f5bd744a 100755 --- a/scripts/build_electricity_demand.py +++ b/scripts/build_electricity_demand.py @@ -263,14 +263,7 @@ if __name__ == "__main__": configure_logging(snakemake) set_scenario_config(snakemake) - weather_year = snakemake.wildcards.weather_year - if weather_year: - snapshots = dict( - start=weather_year, end=str(int(weather_year) + 1), inclusive="left" - ) - else: - snapshots = snakemake.params.snapshots - snapshots = pd.date_range(freq="h", **snapshots) + snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) fixed_year = snakemake.config["load"].get("fixed_year", False) years = ( diff --git a/scripts/build_hourly_heat_demand.py b/scripts/build_hourly_heat_demand.py index 664b4499..c3916b54 100644 --- a/scripts/build_hourly_heat_demand.py +++ b/scripts/build_hourly_heat_demand.py @@ -24,14 +24,7 @@ if __name__ == "__main__": ) set_scenario_config(snakemake) - year = snakemake.wildcards.weather_year - - if year: - snapshots = dict(start=year, end=str(int(year) + 1), inclusive="left") - else: - snapshots = snakemake.params.snapshots - - snapshots = pd.date_range(freq="h", **snapshots) + snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) if snakemake.params.drop_leap_day: snapshots = snapshots[~((snapshots.month == 2) & (snapshots.day == 29))] diff --git a/scripts/build_hydro_profile.py b/scripts/build_hydro_profile.py index af5f0ee6..a732cf45 100644 --- a/scripts/build_hydro_profile.py +++ b/scripts/build_hydro_profile.py @@ -65,8 +65,8 @@ import atlite import country_converter as coco import geopandas as gpd import pandas as pd -from _helpers import configure_logging, set_scenario_config from numpy.polynomial import Polynomial +from _helpers import configure_logging, set_scenario_config cc = coco.CountryConverter() @@ -167,7 +167,7 @@ if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake - snakemake = mock_snakemake("build_hydro_profile", weather_year="") + snakemake = mock_snakemake("build_hydro_profile") configure_logging(snakemake) set_scenario_config(snakemake) @@ -197,12 +197,12 @@ if __name__ == "__main__": eia_stats.to_csv(snakemake.output.eia_hydro) - weather_year = snakemake.wildcards.weather_year + contained_years = pd.date_range(freq="YE", **snakemake.params.snapshots).year norm_year = config_hydro.get("eia_norm_year") if norm_year: - eia_stats.loc[weather_year] = eia_stats.loc[norm_year] - elif weather_year and weather_year not in eia_stats.index: - eia_stats.loc[weather_year] = eia_stats.median() + eia_stats.loc[contained_years] = eia_stats.loc[norm_year] + elif missing_years := eia_stats.index.difference(contained_years): + eia_stats.loc[missing_years] = eia_stats.median() inflow = cutout.runoff( shapes=country_shapes, diff --git a/scripts/build_population_layouts.py b/scripts/build_population_layouts.py index 64e70366..dc4cf2f8 100644 --- a/scripts/build_population_layouts.py +++ b/scripts/build_population_layouts.py @@ -28,11 +28,7 @@ if __name__ == "__main__": configure_logging(snakemake) set_scenario_config(snakemake) - cutout_name = snakemake.input.cutout - year = snakemake.wildcards.weather_year - if year: - cutout_name = cutout_name.format(weather_year=year) - cutout = atlite.Cutout(cutout_name) + cutout = atlite.Cutout(snakemake.input.cutout) grid_cells = cutout.grid.geometry diff --git a/scripts/build_population_weighted_energy_totals.py b/scripts/build_population_weighted_energy_totals.py index bf4a6118..e055a4c2 100644 --- a/scripts/build_population_weighted_energy_totals.py +++ b/scripts/build_population_weighted_energy_totals.py @@ -21,9 +21,13 @@ if __name__ == "__main__": set_scenario_config(snakemake) config = snakemake.config["energy"] - data_year = int(config["energy_totals_year"]) - if snakemake.wildcards.weather_year and snakemake.wildcards.kind == "heat": - data_year = int(snakemake.wildcards.weather_year) + + if snakemake.wildcards.kind == "heat": + years = pd.date_range(freq="YE", **snakemake.config["snapshots"]).year + assert len(years) == 1, "Currently only works for single year." + data_year = years[0] + else: + data_year = int(config["energy_totals_year"]) pop_layout = pd.read_csv(snakemake.input.clustered_pop_layout, index_col=0) diff --git a/scripts/build_renewable_profiles.py b/scripts/build_renewable_profiles.py index 3380a947..ae7ba2c2 100644 --- a/scripts/build_renewable_profiles.py +++ b/scripts/build_renewable_profiles.py @@ -229,14 +229,7 @@ if __name__ == "__main__": else: client = None - weather_year = snakemake.wildcards.weather_year - if weather_year: - snapshots = dict( - start=weather_year, end=str(int(weather_year) + 1), inclusive="left" - ) - else: - snapshots = snakemake.params.snapshots - sns = pd.date_range(freq="h", **snapshots) + sns = pd.date_range(freq="h", **snakemake.params.snapshots) cutout = atlite.Cutout(snakemake.input.cutout).sel(time=sns) regions = gpd.read_file(snakemake.input.regions) diff --git a/scripts/build_solar_thermal_profiles.py b/scripts/build_solar_thermal_profiles.py index dc921ff5..c9eaffcc 100644 --- a/scripts/build_solar_thermal_profiles.py +++ b/scripts/build_solar_thermal_profiles.py @@ -32,20 +32,11 @@ if __name__ == "__main__": config = snakemake.params.solar_thermal config.pop("cutout", None) - cutout_name = snakemake.input.cutout - year = snakemake.wildcards.weather_year - - if year: - snapshots = dict(start=year, end=str(int(year) + 1), inclusive="left") - cutout_name = cutout_name.format(weather_year=year) - else: - snapshots = snakemake.params.snapshots - - time = pd.date_range(freq="h", **snapshots) + time = pd.date_range(freq="h", **snakemake.params.snapshots) if snakemake.params.drop_leap_day: time = time[~((time.month == 2) & (time.day == 29))] - cutout = atlite.Cutout(cutout_name).sel(time=time) + cutout = atlite.Cutout(snakemake.input.cutout).sel(time=time) clustered_regions = ( gpd.read_file(snakemake.input.regions_onshore).set_index("name").buffer(0) diff --git a/scripts/build_temperature_profiles.py b/scripts/build_temperature_profiles.py index eefc2616..e5fa0b38 100644 --- a/scripts/build_temperature_profiles.py +++ b/scripts/build_temperature_profiles.py @@ -20,7 +20,6 @@ if __name__ == "__main__": snakemake = mock_snakemake( "build_temperature_profiles", - weather_year="", simpl="", clusters=48, ) @@ -29,20 +28,12 @@ if __name__ == "__main__": nprocesses = int(snakemake.threads) cluster = LocalCluster(n_workers=nprocesses, threads_per_worker=1) client = Client(cluster, asynchronous=True) - cutout_name = snakemake.input.cutout - year = snakemake.wildcards.weather_year - if year: - snapshots = dict(start=year, end=str(int(year) + 1), inclusive="left") - cutout_name = cutout_name.format(weather_year=year) - else: - snapshots = snakemake.params.snapshots - - time = pd.date_range(freq="h", **snapshots) + time = pd.date_range(freq="h", **snakemake.params.snapshots) if snakemake.params.drop_leap_day: time = time[~((time.month == 2) & (time.day == 29))] - cutout = atlite.Cutout(cutout_name).sel(time=time) + cutout = atlite.Cutout(snakemake.input.cutout).sel(time=time) clustered_regions = ( gpd.read_file(snakemake.input.regions_onshore).set_index("name").buffer(0) diff --git a/scripts/build_transport_demand.py b/scripts/build_transport_demand.py index 9a64801f..d3c740be 100644 --- a/scripts/build_transport_demand.py +++ b/scripts/build_transport_demand.py @@ -183,13 +183,7 @@ if __name__ == "__main__": options = snakemake.params.sector - year = snakemake.wildcards.weather_year - snapshots = ( - dict(start=year, end=str(int(year) + 1), inclusive="left") - if year - else snakemake.params.snapshots - ) - snapshots = pd.date_range(freq="h", **snapshots, tz="UTC") + snapshots = pd.date_range(freq="h", **snakemake.params.snapshots, tz="UTC") if snakemake.params.drop_leap_day: leap_day = (snapshots.month == 2) & (snapshots.day == 29) snapshots = snapshots[~leap_day]