From 9f9e65afb1433d35809bb9e431ef33ab10dbe5e3 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 15 Jun 2022 15:18:07 +0200 Subject: [PATCH] add missing handling of weather_year wildcard --- Snakefile | 28 ++++++++++++------------- scripts/build_heat_demand.py | 3 +-- scripts/build_solar_thermal_profiles.py | 3 +-- scripts/build_temperature_profiles.py | 3 +-- scripts/build_transport_demand.py | 8 ++++++- 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Snakefile b/Snakefile index 0ca4e7c8..fa78641b 100644 --- a/Snakefile +++ b/Snakefile @@ -440,8 +440,8 @@ else: rule build_population_weighted_energy_totals: input: energy_totals='resources/energy_totals.csv', - clustered_pop_layout="resources/pop_layout_elec_s{simpl}_{clusters}.csv" - output: "resources/pop_weighted_energy_totals_s{simpl}_{clusters}.csv" + clustered_pop_layout="resources/pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv" + output: "resources/pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv" threads: 1 resources: mem_mb=2000 script: "scripts/build_population_weighted_energy_totals.py" @@ -449,17 +449,17 @@ rule build_population_weighted_energy_totals: rule build_transport_demand: input: - clustered_pop_layout="resources/pop_layout_elec_s{simpl}_{clusters}.csv", - pop_weighted_energy_totals="resources/pop_weighted_energy_totals_s{simpl}_{clusters}.csv", + clustered_pop_layout="resources/pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv", + pop_weighted_energy_totals="resources/pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv", transport_data='resources/transport_data.csv', traffic_data_KFZ="data/emobility/KFZ__count", traffic_data_Pkw="data/emobility/Pkw__count", - temp_air_total="resources/temp_air_total_elec_s{simpl}_{clusters}.nc", + temp_air_total="resources/temp_air_total_elec{weather_year}_s{simpl}_{clusters}.nc", output: - transport_demand="resources/transport_demand_s{simpl}_{clusters}.csv", - transport_data="resources/transport_data_s{simpl}_{clusters}.csv", - avail_profile="resources/avail_profile_s{simpl}_{clusters}.csv", - dsm_profile="resources/dsm_profile_s{simpl}_{clusters}.csv" + transport_demand="resources/transport_demand{weather_year}_s{simpl}_{clusters}.csv", + transport_data="resources/transport_data{weather_year}_s{simpl}_{clusters}.csv", + avail_profile="resources/avail_profile{weather_year}_s{simpl}_{clusters}.csv", + dsm_profile="resources/dsm_profile{weather_year}_s{simpl}_{clusters}.csv" threads: 1 resources: mem_mb=2000 script: "scripts/build_transport_demand.py" @@ -470,11 +470,11 @@ rule prepare_sector_network: overrides="data/override_component_attrs", network=pypsaeur('networks/elec{weather_year}_s{simpl}_{clusters}_ec_lv{lv}_{opts}.nc'), energy_totals_name='resources/energy_totals.csv', - pop_weighted_energy_totals="resources/pop_weighted_energy_totals_s{simpl}_{clusters}.csv", - transport_demand="resources/transport_demand_s{simpl}_{clusters}.csv", - transport_data="resources/transport_data_s{simpl}_{clusters}.csv", - avail_profile="resources/avail_profile_s{simpl}_{clusters}.csv", - dsm_profile="resources/dsm_profile_s{simpl}_{clusters}.csv", + pop_weighted_energy_totals="resources/pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv", + transport_demand="resources/transport_demand{weather_year}_s{simpl}_{clusters}.csv", + transport_data="resources/transport_data{weather_year}_s{simpl}_{clusters}.csv", + avail_profile="resources/avail_profile{weather_year}_s{simpl}_{clusters}.csv", + dsm_profile="resources/dsm_profile{weather_year}_s{simpl}_{clusters}.csv", co2_totals_name='resources/co2_totals.csv', biomass_potentials='resources/biomass_potentials_s{simpl}_{clusters}.csv', heat_profile="data/heat_load_profile_BDEW.csv", diff --git a/scripts/build_heat_demand.py b/scripts/build_heat_demand.py index 23eeae27..fe44de16 100644 --- a/scripts/build_heat_demand.py +++ b/scripts/build_heat_demand.py @@ -18,7 +18,6 @@ if __name__ == '__main__': cutout_name = snakemake.input.cutout year = snakemake.wildcards.weather_year - drop_leap_day = snakemake.config["atlite"].get("drop_leap_day", False) if year: snapshots = dict(start=year, end=str(int(year)+1), closed="left") @@ -27,7 +26,7 @@ if __name__ == '__main__': snapshots = snakemake.config['snapshots'] time = pd.date_range(freq='m', **snapshots) - if drop_leap_day: + if snakemake.config["atlite"].get("drop_leap_day", False): time = time[~((time.month == 2) & (time.day == 29))] cutout = atlite.Cutout(cutout_name).sel(time=time) diff --git a/scripts/build_solar_thermal_profiles.py b/scripts/build_solar_thermal_profiles.py index e87c9a1e..8bdc07c5 100644 --- a/scripts/build_solar_thermal_profiles.py +++ b/scripts/build_solar_thermal_profiles.py @@ -20,7 +20,6 @@ if __name__ == '__main__': cutout_name = snakemake.input.cutout year = snakemake.wildcards.weather_year - drop_leap_day = snakemake.config["atlite"].get("drop_leap_day", False) if year: snapshots = dict(start=year, end=str(int(year)+1), closed="left") @@ -29,7 +28,7 @@ if __name__ == '__main__': snapshots = snakemake.config['snapshots'] time = pd.date_range(freq='m', **snapshots) - if drop_leap_day: + if snakemake.config["atlite"].get("drop_leap_day", False): time = time[~((time.month == 2) & (time.day == 29))] cutout = atlite.Cutout(cutout_name).sel(time=time) diff --git a/scripts/build_temperature_profiles.py b/scripts/build_temperature_profiles.py index 02cae24c..ab006409 100644 --- a/scripts/build_temperature_profiles.py +++ b/scripts/build_temperature_profiles.py @@ -18,7 +18,6 @@ if __name__ == '__main__': cutout_name = snakemake.input.cutout year = snakemake.wildcards.weather_year - drop_leap_day = snakemake.config["atlite"].get("drop_leap_day", False) if year: snapshots = dict(start=year, end=str(int(year)+1), closed="left") @@ -27,7 +26,7 @@ if __name__ == '__main__': snapshots = snakemake.config['snapshots'] time = pd.date_range(freq='m', **snapshots) - if drop_leap_day: + if snakemake.config["atlite"].get("drop_leap_day", False): time = time[~((time.month == 2) & (time.day == 29))] cutout = atlite.Cutout(cutout_name).sel(time=time) diff --git a/scripts/build_transport_demand.py b/scripts/build_transport_demand.py index a5aabc31..a9d6e440 100644 --- a/scripts/build_transport_demand.py +++ b/scripts/build_transport_demand.py @@ -159,6 +159,7 @@ if __name__ == "__main__": snakemake = mock_snakemake( "build_transport_demand", + weather_year='', simpl="", clusters=48, ) @@ -173,7 +174,12 @@ if __name__ == "__main__": options = snakemake.config["sector"] - snapshots = pd.date_range(freq='h', **snakemake.config["snapshots"], tz="UTC") + year = snakemake.wildcards.weather_year + snapshots = dict(start=year, end=str(int(year)+1), closed="left") if year else snakemake.config['snapshots'] + snapshots = pd.date_range(freq='h', **snapshots, tz="UTC") + if snakemake.config["atlite"].get("drop_leap_day", False): + leap_day = (snapshots.month == 2) & (snapshots.day == 29) + snapshots = snapshots[~leap_day] Nyears = 1