add release notes; rename artificial to synthetic
This commit is contained in:
parent
f50ee2f225
commit
e459c3c89d
@ -292,7 +292,7 @@ load:
|
|||||||
manual_adjustments: true # false
|
manual_adjustments: true # false
|
||||||
scaling_factor: 1.0
|
scaling_factor: 1.0
|
||||||
fixed_year: false # false or year (e.g. 2013)
|
fixed_year: false # false or year (e.g. 2013)
|
||||||
supplement_missing_data_artificially: true
|
supplement_synthetic: true
|
||||||
|
|
||||||
# docs
|
# docs
|
||||||
# TODO: PyPSA-Eur merge issue in prepare_sector_network.py
|
# TODO: PyPSA-Eur merge issue in prepare_sector_network.py
|
||||||
|
@ -4,4 +4,4 @@ time_shift_for_large_gaps,string,string,"Periods which are used for copying time
|
|||||||
manual_adjustments,bool,"{true, false}","Whether to adjust the load data manually according to the function in :func:`manual_adjustment`."
|
manual_adjustments,bool,"{true, false}","Whether to adjust the load data manually according to the function in :func:`manual_adjustment`."
|
||||||
scaling_factor,--,float,"Global correction factor for the load time series."
|
scaling_factor,--,float,"Global correction factor for the load time series."
|
||||||
fixed_year,--,Year or False,"To specify a fixed year for the load time series that deviates from the snapshots' year"
|
fixed_year,--,Year or False,"To specify a fixed year for the load time series that deviates from the snapshots' year"
|
||||||
supplement_missing_data_artificially,bool,"{true, false}","Whether to supplement missing data for selected time period should be supplemented by artificial data from https://zenodo.org/record/7070438/files/demand_hourly.csv."
|
supplement_synthetic,bool,"{true, false}","Whether to supplement missing data for selected time period should be supplemented by synthetic data from https://zenodo.org/record/10820928."
|
||||||
|
|
@ -10,6 +10,52 @@ Release Notes
|
|||||||
Upcoming Release
|
Upcoming Release
|
||||||
================
|
================
|
||||||
|
|
||||||
|
* Enhanced support for choosing different weather years
|
||||||
|
(https://github.com/PyPSA/pypsa-eur/pull/204):
|
||||||
|
|
||||||
|
- Processed energy statistics from eurostat (1990-2021) and IDEES (2000-2015)
|
||||||
|
are now initially stored for all available years and filtered by the year
|
||||||
|
given in ``energy: energy_totals_year:``.
|
||||||
|
|
||||||
|
- Added option to supplement electricity load data with synthetic time series
|
||||||
|
for years not contained in OPSD (from https://zenodo.org/records/10820928,
|
||||||
|
``load: supplement_synthetic:``).
|
||||||
|
|
||||||
|
- The total annual heat demand for years not contained in the energy
|
||||||
|
statistics by eurostat (1990-2021) or IDEES (2000-2015) are scaled based on
|
||||||
|
a regression between the total number of heating degree days and the total
|
||||||
|
annual heat demand between the years 2007-2021, assuming a similar building
|
||||||
|
stock.
|
||||||
|
|
||||||
|
- Added option to scale annual hydro-electricity generation data for years not
|
||||||
|
contained in the in EIA (1980-2021) based on a regression between annual
|
||||||
|
generation and total runoff per country for the years 1980-2021
|
||||||
|
(``renewable: hydro: eia_approximate_missing:``)
|
||||||
|
|
||||||
|
- Added option to normalize annual hydro generation data by the associated
|
||||||
|
installed capacity reported by EIA (1980-2021) in order to eliminate changes
|
||||||
|
in generation due to newly built capacity (``renewable: hydro:
|
||||||
|
eia_approximate_missing: eia_correct_by_capacity:``).
|
||||||
|
|
||||||
|
- Added option to make hydro generation data independent of weather year
|
||||||
|
(``renewable: hydro: eia_approximate_missing: eia_norm_year:``).
|
||||||
|
|
||||||
|
- Added option to drop leap days (``enable: drop_leap_day:``).
|
||||||
|
|
||||||
|
- Added option to make electric load data independent of weather year
|
||||||
|
(``load: fixed_year:``).
|
||||||
|
|
||||||
|
- Include time series of Swiss number of passenger vehicles from the `Swiss
|
||||||
|
Federal Statistical Office
|
||||||
|
<https://www.bfs.admin.ch/bfs/en/home/statistics/mobility-transport/transport-infrastructure-vehicles/vehicles/road-vehicles-stock-level-motorisation.html>`_.
|
||||||
|
|
||||||
|
- Updated hydro-electricity generation and capacity data from EIA.
|
||||||
|
|
||||||
|
- The easiest way to sweep over multiple weather years is to use the new
|
||||||
|
scenario management. An example for the necessary `create_scenarios.py`
|
||||||
|
script can be found in this `Github gist
|
||||||
|
<https://gist.github.com/fneum/47b857862dd9148a22eca5a2e85caa9a>`_.
|
||||||
|
|
||||||
* Upgrade to Snakemake v8.5+. This version is the new minimum version required.
|
* Upgrade to Snakemake v8.5+. This version is the new minimum version required.
|
||||||
To upgrade an existing environment, run ``conda install -c bioconda
|
To upgrade an existing environment, run ``conda install -c bioconda
|
||||||
snakemake-minimal">=8.5"`` and ``pip install snakemake-storage-plugin-http``
|
snakemake-minimal">=8.5"`` and ``pip install snakemake-storage-plugin-http``
|
||||||
|
@ -56,6 +56,11 @@ Rule ``build_energy_totals``
|
|||||||
|
|
||||||
.. automodule:: build_energy_totals
|
.. automodule:: build_energy_totals
|
||||||
|
|
||||||
|
Rule ``build_heat_totals``
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
.. automodule:: build_heat_totals
|
||||||
|
|
||||||
Rule ``build_gas_input_locations``
|
Rule ``build_gas_input_locations``
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@ rule build_electricity_demand:
|
|||||||
load=config_provider("load"),
|
load=config_provider("load"),
|
||||||
input:
|
input:
|
||||||
reported=ancient("data/electricity_demand_raw.csv"),
|
reported=ancient("data/electricity_demand_raw.csv"),
|
||||||
artificial=lambda w: (
|
synthetic=lambda w: (
|
||||||
ancient("data/load_artificial_raw.csv")
|
ancient("data/load_synthetic_raw.csv")
|
||||||
if config_provider("load", "supplement_missing_data_artificially")(w)
|
if config_provider("load", "supplement_synthetic")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
|
@ -196,15 +196,15 @@ if config["enable"]["retrieve"]:
|
|||||||
|
|
||||||
if config["enable"]["retrieve"]:
|
if config["enable"]["retrieve"]:
|
||||||
|
|
||||||
rule retrieve_artificial_load_data:
|
rule retrieve_synthetic_electricity_demand:
|
||||||
input:
|
input:
|
||||||
storage(
|
storage(
|
||||||
"https://zenodo.org/records/10820928/files/demand_hourly.csv",
|
"https://zenodo.org/records/10820928/files/demand_hourly.csv",
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
"data/load_artificial_raw.csv",
|
"data/load_synthetic_raw.csv",
|
||||||
log:
|
log:
|
||||||
"logs/retrieve_artificial_load_data.log",
|
"logs/retrieve_synthetic_electricity_demand.log",
|
||||||
resources:
|
resources:
|
||||||
mem_mb=5000,
|
mem_mb=5000,
|
||||||
retries: 2
|
retries: 2
|
||||||
|
@ -307,12 +307,12 @@ if __name__ == "__main__":
|
|||||||
)
|
)
|
||||||
load = load.apply(fill_large_gaps, shift=time_shift)
|
load = load.apply(fill_large_gaps, shift=time_shift)
|
||||||
|
|
||||||
if snakemake.params.load["supplement_missing_data_artificially"]:
|
if snakemake.params.load["supplement_synthetic"]:
|
||||||
logger.info("Supplement missing data with artificial data.")
|
logger.info("Supplement missing data with synthetic data.")
|
||||||
fn = snakemake.input.artificial
|
fn = snakemake.input.synthetic
|
||||||
artificial_load = pd.read_csv(fn, index_col=0, parse_dates=True)
|
synthetic_load = pd.read_csv(fn, index_col=0, parse_dates=True)
|
||||||
artificial_load = artificial_load.loc[snapshots, countries]
|
synthetic_load = synthetic_load.loc[snapshots, countries]
|
||||||
load = load.combine_first(artificial_load)
|
load = load.combine_first(synthetic_load)
|
||||||
|
|
||||||
assert not load.isna().any().any(), (
|
assert not load.isna().any().any(), (
|
||||||
"Load data contains nans. Adjust the parameters "
|
"Load data contains nans. Adjust the parameters "
|
||||||
|
Loading…
Reference in New Issue
Block a user