From 76ee8c617a241fe2d9ee1de3509004a0f9ac041a Mon Sep 17 00:00:00 2001 From: euronion <42553970+euronion@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:15:35 +0100 Subject: [PATCH 01/48] Update release_notes.rst --- doc/release_notes.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index e70bc8ed..980e210e 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -7,6 +7,13 @@ Release Notes ########################################## +Up-Upcoming Release +=================== + +**Breaking Changes** + +* The config entry ``snapshots["closed"]`` was renamed to ``snapshots["inclusive"]`` to address the upstream deprecation with ``pandas=1.4``. + Minimum ``pandas`` version now required is `>= 1.4`. Upcoming Release ================ From 9f71af89ad7cb915b5b1b46f6ce1e3c72ccb10e4 Mon Sep 17 00:00:00 2001 From: euronion <42553970+euronion@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:15:42 +0100 Subject: [PATCH 02/48] Update environment.yaml --- envs/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index 0c881720..e168510e 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -26,7 +26,7 @@ dependencies: - lxml - powerplantmatching>=0.4.8 - numpy - - pandas + - pandas>=1.4 - geopandas - xarray - netcdf4 From 2e84bd484dd543a385c7a8ec43868a0e4c9745e7 Mon Sep 17 00:00:00 2001 From: euronion <42553970+euronion@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:16:19 +0100 Subject: [PATCH 03/48] Replace "closed" with "inclusive" in config. --- config.default.yaml | 2 +- config.tutorial.yaml | 2 +- test/config.test1.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config.default.yaml b/config.default.yaml index d2bf6159..4447a88f 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -26,7 +26,7 @@ clustering: snapshots: start: "2013-01-01" end: "2014-01-01" - closed: 'left' # end is not inclusive + inclusive: 'left' # include start, not end enable: prepare_links_p_nom: false diff --git a/config.tutorial.yaml b/config.tutorial.yaml index ea624727..ab3e3d92 100755 --- a/config.tutorial.yaml +++ b/config.tutorial.yaml @@ -26,7 +26,7 @@ clustering: snapshots: start: "2013-03-01" end: "2013-04-01" - closed: 'left' # end is not inclusive + inclusive: 'left' # include start, not end enable: prepare_links_p_nom: false diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 2986037b..545f04bc 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -25,7 +25,7 @@ clustering: snapshots: start: "2013-03-01" end: "2013-03-08" - closed: 'left' # end is not inclusive + inclusive: 'left' # include start, not end enable: prepare_links_p_nom: false From 519c7a470067f940c3701c733a60eb82dd018e73 Mon Sep 17 00:00:00 2001 From: euronion <42553970+euronion@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:21:44 +0100 Subject: [PATCH 04/48] Update snapshots.csv --- doc/configtables/snapshots.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/configtables/snapshots.csv b/doc/configtables/snapshots.csv index 4d917f4d..d60c78dc 100644 --- a/doc/configtables/snapshots.csv +++ b/doc/configtables/snapshots.csv @@ -1,4 +1,4 @@ ,Unit,Values,Description start,--,"str or datetime-like; e.g. YYYY-MM-DD","Left bound of date range" end,--,"str or datetime-like; e.g. YYYY-MM-DD","Right bound of date range" -closed,--,"One of {None, ‘left’, ‘right’}","Make the time interval closed to the ``left``, ``right``, or both sides ``None``." +inclusive,--,"One of {'neither', 'both', ‘left’, ‘right’}","Make the time interval closed to the ``left``, ``right``, or both sides ``both`` or neither side ``None``." From c729d0dd744edb3d6893e580fd946c5b160d1494 Mon Sep 17 00:00:00 2001 From: euronion <42553970+euronion@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:21:49 +0100 Subject: [PATCH 05/48] Update release_notes.rst --- doc/release_notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 980e210e..03afce65 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -13,6 +13,7 @@ Up-Upcoming Release **Breaking Changes** * The config entry ``snapshots["closed"]`` was renamed to ``snapshots["inclusive"]`` to address the upstream deprecation with ``pandas=1.4``. + The previous setting ``None`` is no longer supported and replaced by ``both``, see the `pandas documentation `_. Minimum ``pandas`` version now required is `>= 1.4`. Upcoming Release From 1f9d64c5d5d28e94b9842008893e21b9dbc9df3c Mon Sep 17 00:00:00 2001 From: thomgeo Date: Thu, 2 Feb 2023 14:59:50 +0100 Subject: [PATCH 06/48] fixed bug that set max_hours for many plants to 6 --- scripts/add_electricity.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 85391a64..d2a61fb5 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -498,7 +498,7 @@ def attach_hydro(n, costs, ppl, profile_hydro, hydro_capacities, carriers, **con e_target = hydro_stats["E_store[TWh]"].clip(lower=0.2) * 1e6 e_installed = hydro.eval("p_nom * max_hours").groupby(hydro.country).sum() e_missing = e_target - e_installed - missing_mh_i = hydro.query("max_hours == 0").index + missing_mh_i = hydro.query("max_hours.isnull()").index if hydro_max_hours == "energy_capacity_totals_by_country": # watch out some p_nom values like IE's are totally underrepresented @@ -511,6 +511,8 @@ def attach_hydro(n, costs, ppl, profile_hydro, hydro_capacities, carriers, **con hydro_stats["E_store[TWh]"] * 1e3 / hydro_stats["p_nom_discharge[GW]"] ) + max_hours_country.clip(0, inplace = True) + missing_countries = pd.Index(hydro["country"].unique()).difference( max_hours_country.dropna().index ) From 2e54f5789931d5a6c8e8931810f8b5c4b2a547ab Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 22:28:07 +0000 Subject: [PATCH 07/48] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/PyCQA/isort: 5.11.4 → 5.12.0](https://github.com/PyCQA/isort/compare/5.11.4...5.12.0) - [github.com/psf/black: 22.12.0 → 23.1.0](https://github.com/psf/black/compare/22.12.0...23.1.0) - [github.com/snakemake/snakefmt: v0.8.0 → v0.8.1](https://github.com/snakemake/snakefmt/compare/v0.8.0...v0.8.1) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1b3a4dfc..b79e959d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: # Sort package imports alphabetically - repo: https://github.com/PyCQA/isort - rev: 5.11.4 + rev: 5.12.0 hooks: - id: isort args: ["--profile", "black", "--filter-files"] @@ -51,7 +51,7 @@ repos: # Formatting with "black" coding style - repo: https://github.com/psf/black - rev: 22.12.0 + rev: 23.1.0 hooks: # Format Python files - id: black @@ -74,7 +74,7 @@ repos: # Format Snakemake rule / workflow files - repo: https://github.com/snakemake/snakefmt - rev: v0.8.0 + rev: v0.8.1 hooks: - id: snakefmt From e6ecbc95d71a47e913680db14f3861daad4dae11 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 22:28:31 +0000 Subject: [PATCH 08/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/add_electricity.py | 2 -- scripts/base_network.py | 1 - scripts/build_load_data.py | 1 - scripts/cluster_network.py | 2 -- scripts/make_summary.py | 11 ----------- scripts/simplify_network.py | 1 - 6 files changed, 18 deletions(-) diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 85391a64..b9f37db4 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -394,12 +394,10 @@ def attach_conventional_generators( ) for carrier in conventional_config: - # Generators with technology affected idx = n.generators.query("carrier == @carrier").index for attr in list(set(conventional_config[carrier]) & set(n.generators)): - values = conventional_config[carrier][attr] if f"conventional_{carrier}_{attr}" in conventional_inputs: diff --git a/scripts/base_network.py b/scripts/base_network.py index f851a521..565d4907 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -694,7 +694,6 @@ def base_network( parameter_corrections, config, ): - buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"]) links = _load_links_from_eg(buses, eg_links) diff --git a/scripts/build_load_data.py b/scripts/build_load_data.py index 780a651e..986892fc 100755 --- a/scripts/build_load_data.py +++ b/scripts/build_load_data.py @@ -268,7 +268,6 @@ def manual_adjustment(load, fn_load, powerstatistics): if __name__ == "__main__": - if "snakemake" not in globals(): from _helpers import mock_snakemake diff --git a/scripts/cluster_network.py b/scripts/cluster_network.py index 80998b20..6a1d58ec 100644 --- a/scripts/cluster_network.py +++ b/scripts/cluster_network.py @@ -238,7 +238,6 @@ def distribute_clusters(n, n_clusters, focus_weights=None, solver_name="cbc"): ), f"Number of clusters must be {len(N)} <= n_clusters <= {N.sum()} for this selection of countries." if focus_weights is not None: - total_focus = sum(list(focus_weights.values())) assert ( @@ -396,7 +395,6 @@ def clustering_for_n_clusters( extended_link_costs=0, focus_weights=None, ): - bus_strategies, generator_strategies = get_aggregation_strategies( aggregation_strategies ) diff --git a/scripts/make_summary.py b/scripts/make_summary.py index 4c3c675a..815f7aec 100644 --- a/scripts/make_summary.py +++ b/scripts/make_summary.py @@ -164,7 +164,6 @@ def calculate_curtailment(n, label, curtailment): def calculate_energy(n, label, energy): for c in n.iterate_components(n.one_port_components | n.branch_components): - if c.name in {"Generator", "Load", "ShuntImpedance"}: c_energies = ( c.pnl.p.multiply(n.snapshot_weightings.generators, axis=0) @@ -238,7 +237,6 @@ def calculate_supply(n, label, supply): load_types = n.buses.carrier.unique() for i in load_types: - buses = n.buses.query("carrier == @i").index bus_map = pd.Series(False, index=n.buses.index) @@ -246,7 +244,6 @@ def calculate_supply(n, label, supply): bus_map.loc[buses] = True for c in n.iterate_components(n.one_port_components): - items = c.df.index[c.df.bus.map(bus_map)] if len(items) == 0 or c.pnl.p.empty: @@ -267,9 +264,7 @@ def calculate_supply(n, label, supply): supply.loc[idx[raw_index], label] = s.values for c in n.iterate_components(n.branch_components): - for end in ["0", "1"]: - items = c.df.index[c.df["bus" + end].map(bus_map)] if len(items) == 0 or c.pnl["p" + end].empty: @@ -298,7 +293,6 @@ def calculate_supply_energy(n, label, supply_energy): load_types = n.buses.carrier.unique() for i in load_types: - buses = n.buses.query("carrier == @i").index bus_map = pd.Series(False, index=n.buses.index) @@ -306,7 +300,6 @@ def calculate_supply_energy(n, label, supply_energy): bus_map.loc[buses] = True for c in n.iterate_components(n.one_port_components): - items = c.df.index[c.df.bus.map(bus_map)] if len(items) == 0 or c.pnl.p.empty: @@ -327,9 +320,7 @@ def calculate_supply_energy(n, label, supply_energy): supply_energy.loc[idx[raw_index], label] = s.values for c in n.iterate_components(n.branch_components): - for end in ["0", "1"]: - items = c.df.index[c.df["bus" + end].map(bus_map)] if len(items) == 0 or c.pnl["p" + end].empty: @@ -431,7 +422,6 @@ def calculate_weighted_prices(n, label, weighted_prices): } for carrier in link_loads: - if carrier == "electricity": suffix = "" elif carrier[:5] == "space": @@ -454,7 +444,6 @@ def calculate_weighted_prices(n, label, weighted_prices): load = n.loads_t.p_set[buses] for tech in link_loads[carrier]: - names = n.links.index[n.links.index.to_series().str[-len(tech) :] == tech] if names.empty: diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py index 7aa7a732..a4216450 100644 --- a/scripts/simplify_network.py +++ b/scripts/simplify_network.py @@ -324,7 +324,6 @@ def simplify_links(n, costs, config, output, aggregation_strategies=dict()): ) for lbl in labels.value_counts().loc[lambda s: s > 2].index: - for b, buses, links in split_links(labels.index[labels == lbl]): if len(buses) <= 2: continue From cb94e5974eddb705f5391cee0fea489e5f573fbb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 12:20:06 +0000 Subject: [PATCH 09/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/add_electricity.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 1842c4a0..7407dafa 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -509,8 +509,8 @@ def attach_hydro(n, costs, ppl, profile_hydro, hydro_capacities, carriers, **con hydro_stats["E_store[TWh]"] * 1e3 / hydro_stats["p_nom_discharge[GW]"] ) - max_hours_country.clip(0, inplace = True) - + max_hours_country.clip(0, inplace=True) + missing_countries = pd.Index(hydro["country"].unique()).difference( max_hours_country.dropna().index ) From efedfa945b0ed4d0bcb4980210015edf1ec3f374 Mon Sep 17 00:00:00 2001 From: Fabian Date: Tue, 7 Feb 2023 14:07:44 +0100 Subject: [PATCH 10/48] build_shapes: replace unary union from shapely by geopandas equivalent --- scripts/build_shapes.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index cda27963..8be1ec0e 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -80,7 +80,6 @@ import pandas as pd import pycountry as pyc from _helpers import configure_logging from shapely.geometry import MultiPolygon, Polygon -from shapely.ops import unary_union logger = logging.getLogger(__name__) @@ -158,8 +157,7 @@ def country_cover(country_shapes, eez_shapes=None): shapes = country_shapes if eez_shapes is not None: shapes = pd.concat([shapes, eez_shapes]) - - europe_shape = unary_union(shapes) + europe_shape = shapes.unary_union if isinstance(europe_shape, MultiPolygon): europe_shape = max(europe_shape, key=attrgetter("area")) return Polygon(shell=europe_shape.exterior) @@ -265,6 +263,7 @@ if __name__ == "__main__": ) offshore_shapes.reset_index().to_file(snakemake.output.offshore_shapes) + europe_shape = gpd.GeoDataFrame( geometry=[country_cover(country_shapes, offshore_shapes.geometry)] ) From 9f87099dbbb0d2519235cc19327dbb198776e040 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 13:12:53 +0000 Subject: [PATCH 11/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/build_shapes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index 8be1ec0e..42118b7d 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -263,7 +263,6 @@ if __name__ == "__main__": ) offshore_shapes.reset_index().to_file(snakemake.output.offshore_shapes) - europe_shape = gpd.GeoDataFrame( geometry=[country_cover(country_shapes, offshore_shapes.geometry)] ) From d6df1972946d1167de0c048cd173a85a5dade190 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 8 Feb 2023 18:40:42 +0100 Subject: [PATCH 12/48] env: add pygeos --- envs/environment.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/envs/environment.yaml b/envs/environment.yaml index 490268e8..cbffa43d 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -28,6 +28,7 @@ dependencies: - numpy<1.24 - pandas - geopandas>=0.11.0 +- pygeos>=0.10.0 - xarray - netcdf4 - networkx From bca35ff3e1dd3ff7339c77eb2c8a8e582957fb7f Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 8 Feb 2023 18:49:17 +0100 Subject: [PATCH 13/48] Revert "env: add pygeos" --- envs/environment.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index cbffa43d..490268e8 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -28,7 +28,6 @@ dependencies: - numpy<1.24 - pandas - geopandas>=0.11.0 -- pygeos>=0.10.0 - xarray - netcdf4 - networkx From 0b20c734dc2f6ad44302d5f84dbc7ea3b36a96b3 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 8 Feb 2023 20:45:59 +0100 Subject: [PATCH 14/48] env: update shapely to >=2.0 --- envs/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index 490268e8..548a10d2 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -32,7 +32,7 @@ dependencies: - netcdf4 - networkx - scipy -- shapely<2.0 +- shapely>=2.0 - progressbar2 - pyomo - matplotlib<3.6 From 79e92c0687f35f5ad5b2db9a5b84346caccd4509 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:36:06 +0000 Subject: [PATCH 15/48] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/fsfe/reuse-tool: v1.1.0 → v1.1.2](https://github.com/fsfe/reuse-tool/compare/v1.1.0...v1.1.2) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b79e959d..98c8e569 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -87,6 +87,6 @@ repos: # Check for FSFE REUSE compliance (licensing) - repo: https://github.com/fsfe/reuse-tool - rev: v1.1.0 + rev: v1.1.2 hooks: - id: reuse From ff53981a73d1b5ac55632631f35a765507b07c87 Mon Sep 17 00:00:00 2001 From: virio-andreyana Date: Wed, 15 Feb 2023 09:20:14 +0100 Subject: [PATCH 16/48] Fix warning in rule build_shapes --- scripts/build_shapes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index cda27963..539002ef 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -237,9 +237,11 @@ def nuts3(country_shapes, nuts3, nuts3pop, nuts3gdp, ch_cantons, ch_popgdp): manual = gpd.GeoDataFrame( [["BA1", "BA", 3871.0], ["RS1", "RS", 7210.0], ["AL1", "AL", 2893.0]], columns=["NUTS_ID", "country", "pop"], - ).set_index("NUTS_ID") + ) manual["geometry"] = manual["country"].map(country_shapes) manual = manual.dropna() + manual = manual.set_index("NUTS_ID") + manual = manual.set_crs('ETRS89') df = pd.concat([df, manual], sort=False) From 03db47ed5e4b1e02a784dbf0274627ecb0714b73 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 09:16:13 +0000 Subject: [PATCH 17/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/build_shapes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index 539002ef..ffe6380a 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -241,7 +241,7 @@ def nuts3(country_shapes, nuts3, nuts3pop, nuts3gdp, ch_cantons, ch_popgdp): manual["geometry"] = manual["country"].map(country_shapes) manual = manual.dropna() manual = manual.set_index("NUTS_ID") - manual = manual.set_crs('ETRS89') + manual = manual.set_crs("ETRS89") df = pd.concat([df, manual], sort=False) From cac98dc8e9cb0db34177ed1ae02e62bdfc8bc045 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 15 Feb 2023 10:29:34 +0100 Subject: [PATCH 18/48] upgrade cache action from v2 to v3 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8b888cbe..26111c94 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -81,7 +81,7 @@ jobs: run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV - name: Create environment cache - uses: actions/cache@v2 + uses: actions/cache@v3 id: cache with: path: ${{ matrix.prefix }} From 9c1182fe965a055668210ccdac63496b91b6da78 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 11:50:55 +0100 Subject: [PATCH 19/48] prepare release 0.7 --- .gitattributes | 2 +- .gitignore | 2 +- .readthedocs.yml | 4 +- .reuse/dep5 | 6 +- LICENSES/MIT.txt | 2 +- README.md | 2 +- Snakefile | 6 +- config.default.yaml | 8 +- config.tutorial.yaml | 6 +- doc/Makefile | 2 +- doc/_static/theme_overrides.css | 74 ----------- doc/cloudcomputing.rst | 130 ------------------- doc/conf.py | 16 +-- doc/configtables/atlite.csv | 3 + doc/configtables/clustering.csv | 2 + doc/configtables/costs.csv | 2 +- doc/configtables/load.csv | 1 - doc/configtables/offwind-ac.csv | 3 + doc/configtables/offwind-dc.csv | 5 +- doc/configtables/onwind.csv | 2 + doc/configtables/solar.csv | 1 + doc/configtables/solving-options.csv | 2 +- doc/configtables/toplevel.csv | 7 +- doc/configuration.rst | 7 +- doc/contributing.rst | 8 +- doc/costs.rst | 6 +- doc/img/pypsa-logo.png | Bin 0 -> 30705 bytes doc/index.rst | 10 +- doc/installation.rst | 18 +-- doc/introduction.rst | 2 +- doc/limitations.rst | 2 +- doc/make.bat | 2 +- doc/plotting.rst | 2 +- doc/preparation.rst | 4 +- doc/preparation/add_electricity.rst | 2 +- doc/preparation/base_network.rst | 2 +- doc/preparation/build_bus_regions.rst | 2 +- doc/preparation/build_cutout.rst | 2 +- doc/preparation/build_hydro_profile.rst | 2 +- doc/preparation/build_load_data.rst | 2 +- doc/preparation/build_natura_raster.rst | 2 +- doc/preparation/build_powerplants.rst | 2 +- doc/preparation/build_renewable_profiles.rst | 2 +- doc/preparation/build_shapes.rst | 2 +- doc/preparation/build_ship_raster.rst | 12 ++ doc/preparation/prepare_links_p_nom.rst | 2 +- doc/preparation/retrieve.rst | 54 +++++++- doc/release_notes.rst | 15 ++- doc/requirements.txt | 10 +- doc/simplification.rst | 2 +- doc/simplification/add_extra_components.rst | 2 +- doc/simplification/cluster_network.rst | 2 +- doc/simplification/prepare_network.rst | 2 +- doc/simplification/simplify_network.rst | 2 +- doc/solving.rst | 2 +- doc/solving/solve_network.rst | 2 +- doc/solving/solve_operations_network.rst | 2 +- doc/tutorial.rst | 82 +++++------- doc/wildcards.rst | 2 +- envs/environment.fixed.yaml | 2 +- envs/environment.yaml | 4 +- scripts/_helpers.py | 2 +- scripts/add_electricity.py | 2 +- scripts/add_extra_components.py | 2 +- scripts/base_network.py | 2 +- scripts/build_bus_regions.py | 2 +- scripts/build_cutout.py | 2 +- scripts/build_hydro_profile.py | 2 +- scripts/build_natura_raster.py | 2 +- scripts/build_powerplants.py | 2 +- scripts/build_renewable_profiles.py | 2 +- scripts/build_shapes.py | 2 +- scripts/build_ship_raster.py | 17 ++- scripts/cluster_network.py | 2 +- scripts/make_summary.py | 2 +- scripts/plot_network.py | 2 +- scripts/plot_p_nom_max.py | 2 +- scripts/plot_summary.py | 2 +- scripts/prepare_links_p_nom.py | 2 +- scripts/prepare_network.py | 2 +- scripts/retrieve_databundle.py | 2 +- scripts/simplify_network.py | 2 +- scripts/solve_network.py | 2 +- scripts/solve_operations_network.py | 2 +- test/config.test1.yaml | 6 +- 85 files changed, 254 insertions(+), 381 deletions(-) delete mode 100644 doc/_static/theme_overrides.css delete mode 100644 doc/cloudcomputing.rst create mode 100755 doc/img/pypsa-logo.png create mode 100644 doc/preparation/build_ship_raster.rst diff --git a/.gitattributes b/.gitattributes index 9e85b38b..3f5e771d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 diff --git a/.gitignore b/.gitignore index 80f91408..6c3e4d42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 diff --git a/.readthedocs.yml b/.readthedocs.yml index 4290ae6f..4b7e3476 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,11 +1,11 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 version: 2 python: - version: 3.8 + version: "3.10" install: - requirements: doc/requirements.txt system_packages: true diff --git a/.reuse/dep5 b/.reuse/dep5 index 8ddff0f7..bc0936ba 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -12,7 +12,7 @@ Copyright: 2019 Fabian Neumann (TUB, KIT) License: CC-BY-4.0 Files: data/* -Copyright: 2017-2022 The PyPSA-Eur Authors +Copyright: 2017-2023 The PyPSA-Eur Authors License: CC-BY-4.0 Files: .github/* @@ -20,9 +20,9 @@ Copyright: 2019 The PyPSA-Eur Authors License: CC0-1.0 Files: matplotlibrc -Copyright: : 2017-2022 The PyPSA-Eur Authors +Copyright: : 2017-2023 The PyPSA-Eur Authors License: CC0-1.0 Files: borg-it -Copyright: : 2017-2022 The PyPSA-Eur Authors +Copyright: : 2017-2023 The PyPSA-Eur Authors License: CC0-1.0 diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt index ef8a01cb..87f6d959 100644 --- a/LICENSES/MIT.txt +++ b/LICENSES/MIT.txt @@ -1,6 +1,6 @@ MIT License -Copyright 2017-2022 The PyPSA-Eur Authors +Copyright 2017-2023 The PyPSA-Eur Authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/README.md b/README.md index aae9ac8e..589365ee 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ diff --git a/Snakefile b/Snakefile index f4f37049..cf6eca97 100644 --- a/Snakefile +++ b/Snakefile @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT @@ -9,8 +9,8 @@ from snakemake.remote.HTTP import RemoteProvider as HTTPRemoteProvider HTTP = HTTPRemoteProvider() -if not exists("config.yaml"): - copyfile("config.default.yaml", "config.yaml") +# if not exists("config.yaml"): +# copyfile("config.default.yaml", "config.yaml") configfile: "config.yaml" diff --git a/config.default.yaml b/config.default.yaml index b06c06b7..f01474b2 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -1,8 +1,8 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 -version: 0.6.1 +version: 0.7.0 tutorial: false logging: @@ -233,7 +233,7 @@ load: costs: year: 2030 - version: v0.4.0 + version: v0.5.0 rooftop_share: 0.14 # based on the potentials, assuming (0.1 kW/m2 and 10 m2/person) fill_values: FOM: 0 @@ -288,7 +288,7 @@ solving: min_iterations: 4 max_iterations: 6 clip_p_max_pu: 0.01 - skip_iterations: false + skip_iterations: true track_iterations: false #nhours: 10 solver: diff --git a/config.tutorial.yaml b/config.tutorial.yaml index dc5347aa..ab8d54a4 100755 --- a/config.tutorial.yaml +++ b/config.tutorial.yaml @@ -1,8 +1,8 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 -version: 0.6.1 +version: 0.7.0 tutorial: true logging: @@ -163,7 +163,7 @@ load: costs: year: 2030 - version: v0.4.0 + version: v0.5.0 rooftop_share: 0.14 fill_values: FOM: 0 diff --git a/doc/Makefile b/doc/Makefile index d9bd3d5d..a2ae2428 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/doc/_static/theme_overrides.css b/doc/_static/theme_overrides.css deleted file mode 100644 index e7e21151..00000000 --- a/doc/_static/theme_overrides.css +++ /dev/null @@ -1,74 +0,0 @@ -/* SPDX-FileCopyrightText: 2017-2022 The PyPSA-Eur Authors - SPDX-License-Identifier: MIT -*/ - -.wy-side-nav-search { - background-color: #eeeeee; -} - -.wy-side-nav-search .wy-dropdown>a, -.wy-side-nav-search>a { - color: rgb(34, 97, 156) -} - -.wy-side-nav-search>div.version { - color: rgb(34, 97, 156) -} - -.wy-menu-vertical header, -.wy-menu-vertical p.caption, -.rst-versions a { - color: #999999; -} - -.wy-menu-vertical a.reference:hover, -.wy-menu-vertical a.reference.internal:hover { - background: #dddddd; - color: #fff; -} - -.wy-nav-side { - background: #efefef; -} - -.wy-menu-vertical a.reference { - color: #000; -} - -.rst-versions .rst-current-version, -.wy-nav-top, -.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a:hover { - background: #002221; -} - -.wy-nav-content .highlight { - background: #ffffff; -} - -.rst-content code.literal, -.rst-content tt.literal { - color: rgb(34, 97, 156) -} - -.wy-nav-content a.reference { - color: rgb(34, 97, 156); -} - - -/* override table width restrictions */ - -@media screen and (min-width: 767px) { - .wy-table-responsive table td { - /* !important prevents the common CSS stylesheets from overriding - this as on RTD they are loaded after this stylesheet */ - white-space: normal !important; - background: rgb(250, 250, 250) !important; - } - .wy-table-responsive { - max-width: 100%; - overflow: visible !important; - } - .wy-nav-content { - max-width: 910px !important; - } -} diff --git a/doc/cloudcomputing.rst b/doc/cloudcomputing.rst deleted file mode 100644 index 6df8b2b3..00000000 --- a/doc/cloudcomputing.rst +++ /dev/null @@ -1,130 +0,0 @@ -.. - SPDX-FileCopyrightText: 2020 Maximilian Parzen and Emmanuel Paez - - SPDX-License-Identifier: CC-BY-4.0 - - -.. _cloudcomputing: - -########################### -Cloud Computing -########################### - -Google Cloud Platform (GCP) -=========================== - -.. note:: - This set of instructions is partially Windows specific. - We are happy to take pull requests explaining where the procedures deviate from the descriptions below for other operating systems. - Likewise, tutorials for other cloud computing solutions are also highly welcome. - -The Google Cloud Platform (GCP) is a cloud computing service you can use to run PyPSA-Eur calculations, especially if - -- you do not have immediate access to high-performance computating facilities, -- you have problems with the Windows operating system and want a quick run on a linux-based system, -- you want to model whole of Europe in sufficient spatial and temporal resolution, -- you need quick results (trial version includes 32 vCPU cores and up to 800 GB of memory). - -With the Google Cloud Platform you set up a virtual machine in the cloud which can store and operate data. -Like on your local computer, you have to install all software and solvers, and create paths on the virtual machine to set up the required environment. -The 300$ free trial budget is offered which equals roughly 10-20 simulations with 180 nodes at hourly basis. -The following steps are required: - -- `Google Cloud Platform registration `_, to receive 300$ free budget. -- `Creating an Virtual Machine (VM) instance `_, which is practically a virtual computer with Linux as OS. -- `Installation of Cloud SDK `_, to create a communication channel between your computer and the cloud virtual machine (VM). -- `Installation of WinSCP (Windows) `_ (or alternative), to handle or transfer files between the VM and you local computer. - -Step 1 - Google Cloud Platform registration -------------------------------------------- - -First, register at the `Google Cloud Platform `_ (GCP). -Ann active bank account is required, which will not be charged unless you exceed the trial budget. - -Step 2 - Create your Virtual Machine instance ---------------------------------------------- - -With the following steps we create a Virtual Machine (VM) on Google Cloud. - -- Click on the `GCP Dashboard `_. -- Click on the "COMPUTE" header, on the "Compute Engine" and then on the "VM instance". -- Click on create. -- Click on new VM instance. - -Now a window with the machine details will open. You have to configure the following things: - -- Name: Set a name for your VM. Cannot be changed after creation. -- Region: You can keep the default us-central1 (Iowa), since it is a cheap computational region. Sometimes your machine is limited in a specific region. Just pick another region in that case. -- Machine configuration: The machine configuration sets how powerful your VM is. - You can start with a 1 vCPU and 3.75 GB memory, N1 series machine as every operating second cost money. - You can edit your machine configuration later. So use a cheap machine type configuration to transfer data and - only when everything is ready and tested, your expensive machine type, for instance a custom 8 vCPU with 160 GB memory. - Solvers do not parallelise well, so we recommend not to choose more than 8 vCPU. - Check ``snakemake -n -j 1 solve_all_networks`` as a dry run to see how much memory is required. - The memory requirements will vary depending on the spatial and temporal resoulution of your optimisation. - Example: for an hourly, 181 node full European network, set 8 vCPU and 150 GB memory since the dry-run calculated a 135 GB memory requirement.) -- Boot disk: As default, your VM is created with 10 GB. Depending on how much you want to handle on one VM you should increase the disk size. - We recommend a disk size of 100 GB for a safe start (cost roughly 8$ per month), the disk can be resized at any later stage with an additional disk. -- Click on create and celebrate your first VM on GCP. - -Step 3 - Installation of Cloud SDK ----------------------------------- - -- Download Google Cloud SDK `SDK `_. Check that you are logged in in your Google account. The link should lead you to the Windows installation of Google Cloud SDK. -- Follow the "Quickstart for Windows - Before you begin" steps. -- After the successful installation and initialization, close the Google Cloud SDK reopen it again. Type the following command into the "Google Cloud SDK Shell": - - .. code:: bash - - gcloud compute ssh -- -L 8888:localhost:8888 - -- This command above will open a PuTTy command window that is connected to your Virtual Machine. Time to celebrate if it works! -- Now install all necessary tools. As little help, the first steps: - .. code:: bash - - sudo apt-get update - sudo apt-get install bzip2 libxml2-dev - sudo apt-get install wget - wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh - ls (to see what anaconda file to bash) - bash Anaconda3-2020.07-Linux-x86_64.sh - source ~/.bashrc - -- Close and reopen the PuTTy file (-> open Google Cloud SDK -> initialize again with the command above to open the PuTTY command window). Now ``conda`` can be listed with ``conda list``. - Noq you can follow the standard installation instructions to finalize your machine (don't forget the solvers - for bigger simulations use commercial solvers such as Gurobi). - -Step 4 - Installation of WinSCP -------------------------------- - -For smooth data exchange between the VM and your local computer you may use WinSCP on Windows. -Make sure that your instance is operating for the next steps. - -- Download `WinSCP `_ and follow the default installation steps. -- Open WinSCP after the installation. A login window will open. -- Keep SFTP as file protocol. -- As host name insert the External IP of your VM (click in your internet browser on your GCP VM instance to see the external IP) -- Set the User name in WinSCP to the name you see in your PuTTy window (check step 3 - for instance [username]@[VM-name]:~$) -- Click on the advanced setting. SSH -> Authentication. -- Option 1. Click on the Tools button and "Install Public Key into Server..". Somewhere in your folder structure must be a public key. I found it with the following folder syntax on my local windows computer -> :\Users\...\.ssh (there should be a PKK file). -- Option 2. Click on the Tools button and "Generate new key pair...". Save the private key at a folder you remember and add it to the "private key file" field in WinSCP. Upload the public key to the metadeta of your instance. -- Click ok and save. Then click Login. If successful WinSCP will open on the left side your local computer folder structure and on the right side the folder structure of your VM. (If you followed Option 2 and its not initially working. Stop your instance, refresh the website, reopen the WinSCP field. Afterwards your your Login should be successful) - -If you had struggle with the above steps, you could also try `this video `_. - -.. note:: - Double check the External IP of your VM before you try to login with WinSCP. It's often a cause for an error. - -Step 5 - Extra. Copying your instance with all its data and paths included --------------------------------------------------------------------------- - -Especially if you think about operating several instance for quicker simulations, you can create a so called `"image" `_ of the virtual machine. -The "image" includes all the data and software set-ups from your VM. Afterwards you can create a VM from an image and avoid all the installation steps above. - -Important points when to solve networks in PyPSA ------------------------------------------------- - -If you use the GCP with the default PyPSA-Eur settings, your budget will be used up very quickly. The following tips should help you to make the most of your budget: - -- Always test using low resolution networks; i.e. a single country at 5 nodes and 24h resolution for 2 month of weather data. -- Adjust your solver in the ``config.yaml`` file. Set ``solving: skip_iterations: true``. - This will lead to a single solver iteration which is often precise enough. diff --git a/doc/conf.py b/doc/conf.py index 0cfb1f9a..5d723480 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -67,7 +67,7 @@ master_doc = "index" # General information about the project. project = "PyPSA-Eur" -copyright = "2017-2022 Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtberger (FIAS), Tom Brown (TUB, KIT, FIAS); 2019-2022 Fabian Neumann (TUB, KIT)" +copyright = "2017-2023 Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtberger (FIAS), Tom Brown (TUB, KIT, FIAS); 2019-2023 Fabian Neumann (TUB, KIT)" author = "Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtberger (FIAS), Tom Brown (TUB, KIT, FIAS), Fabian Neumann (TUB, KIT)" # The version info for the project you're documenting, acts as replacement for @@ -84,7 +84,7 @@ release = "0.6.1" # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = "en" # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: @@ -128,14 +128,14 @@ todo_include_todos = True # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = "sphinx_rtd_theme" +html_theme = "sphinx_book_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. html_theme_options = { - "display_version": True, - "sticky_navigation": True, + "repository_url": "https://github.com/pypsa/pypsa-eur", + "use_repository_button": True, } @@ -144,14 +144,14 @@ html_theme_options = { # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -# html_title = None +html_title = "PyPSA-Eur: An Open Optimisation Model of the European Transmission System" # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. -# html_logo = None +html_logo = "img/pypsa-logo.png" # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 @@ -163,7 +163,7 @@ html_static_path = ["_static"] # These paths are either relative to html_static_path # or fully qualified paths (eg. https://...) -html_css_files = ["theme_overrides.css"] +# html_css_files = ["theme_overrides.css"] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied diff --git a/doc/configtables/atlite.csv b/doc/configtables/atlite.csv index 7bb56040..f0220b36 100644 --- a/doc/configtables/atlite.csv +++ b/doc/configtables/atlite.csv @@ -1,9 +1,12 @@ ,Unit,Values,Description nprocesses,--,int,"Number of parallel processes in cutout preparation" +show_progress,bool,true/false,"Whether progressbar for atlite conversion processes should be shown. False saves time." cutouts,,, -- {name},--,"Convention is to name cutouts like ``--`` (e.g. ``europe-2013-era5``).","Name of the cutout netcdf file. The user may specify multiple cutouts under configuration ``atlite: cutouts:``. Reference is used in configuration ``renewable: {technology}: cutout:``. The cutout ``base`` may be used to automatically calculate temporal and spatial bounds of the network." -- -- module,--,"Subset of {'era5','sarah'}","Source of the reanalysis weather dataset (e.g. `ERA5 `_ or `SARAH-2 `_)" -- -- x,°,"Float interval within [-180, 180]","Range of longitudes to download weather data for. If not defined, it defaults to the spatial bounds of all bus shapes." -- -- y,°,"Float interval within [-90, 90]","Range of latitudes to download weather data for. If not defined, it defaults to the spatial bounds of all bus shapes." +-- -- dx,°,"Larger than 0.25","Grid resolution for longitude" +-- -- dy,°,"Larger than 0.25","Grid resolution for latitude" -- -- time,,"Time interval within ['1979', '2018'] (with valid pandas date time strings)","Time span to download weather data for. If not defined, it defaults to the time interval spanned by the snapshots." -- -- features,,"String or list of strings with valid cutout features ('inlfux', 'wind').","When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features." diff --git a/doc/configtables/clustering.csv b/doc/configtables/clustering.csv index bcab264a..f13d8cbd 100644 --- a/doc/configtables/clustering.csv +++ b/doc/configtables/clustering.csv @@ -4,6 +4,8 @@ simplify_network,,, -- algorithm,str,"One of {‘kmeans’, ‘hac’, ‘modularity‘}", -- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.", -- exclude_carriers,list,"List of Str like [ 'solar', 'onwind'] or empy list []","List of carriers which will not be aggregated. If empty, all carriers will be aggregated." +-- remove stubs,bool,"true/false","Controls whether radial parts of the network should be recursively aggregated. Defaults to true." +-- remove_stubs_across_borders,bool,"true/false","Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true." cluster_network,,, -- algorithm,str,"One of {‘kmeans’, ‘hac’}", -- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.", diff --git a/doc/configtables/costs.csv b/doc/configtables/costs.csv index c0870ddd..9797d77e 100644 --- a/doc/configtables/costs.csv +++ b/doc/configtables/costs.csv @@ -1,6 +1,6 @@ ,Unit,Values,Description year,--,"YYYY; e.g. '2030'","Year for which to retrieve cost assumptions of ``resources/costs.csv``." -version,--,"vX.X.X; e.g. 'v0.1.0'","Version of ``technology-data`` repository to use." +version,--,"vX.X.X; e.g. 'v0.5.0'","Version of ``technology-data`` repository to use." rooftop_share,--,float,"Share of rooftop PV when calculating capital cost of solar (joint rooftop and utility-scale PV)." fill_values,--,float,"Default values if not specified for a technology in ``resources/costs.csv``." capital_cost,EUR/MW,"Keys should be in the 'technology' column of ``resources/costs.csv``. Values can be any float.","For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from ``resources/costs.csv``." diff --git a/doc/configtables/load.csv b/doc/configtables/load.csv index d6cfa686..6e98f881 100644 --- a/doc/configtables/load.csv +++ b/doc/configtables/load.csv @@ -1,5 +1,4 @@ ,Unit,Values,Description -url,--,string,"Link to open power system data time series data." power_statistics,bool,"{true, false}",Whether to load the electricity consumption data of the ENTSOE power statistics (only for files from 2019 and before) or from the ENTSOE transparency data (only has load data from 2015 onwards). interpolate_limit,hours,integer,"Maximum gap size (consecutive nans) which interpolated linearly." time_shift_for_large_gaps,string,string,"Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid ``pandas`` period strings." diff --git a/doc/configtables/offwind-ac.csv b/doc/configtables/offwind-ac.csv index d478011d..6b756799 100644 --- a/doc/configtables/offwind-ac.csv +++ b/doc/configtables/offwind-ac.csv @@ -4,10 +4,13 @@ resource,,, -- method,--,"Must be 'wind'","A superordinate technology type." -- turbine,--,"One of turbine types included in `atlite `_","Specifies the turbine type and its characteristic power curve." capacity_per_sqkm,:math:`MW/km^2`,float,"Allowable density of wind turbine placement." +correction_factor,--,float,"Correction factor for capacity factor time series." +excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis." corine,--,"Any *realistic* subset of the `CORINE Land Cover code list `_","Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." natura,bool,"{true, false}","Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if ``true``." ship_threshold,--,float,"Ship density threshold from which areas are excluded." max_depth,m,float,"Maximum sea water depth at which wind turbines can be build. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." min_shore_distance,m,float,"Minimum distance to the shore below which wind turbines cannot be build. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." +max_shore_distance,m,float,"Maximum distance to the shore above which wind turbines cannot be build. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`" clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero." diff --git a/doc/configtables/offwind-dc.csv b/doc/configtables/offwind-dc.csv index 67bda165..1f72228a 100644 --- a/doc/configtables/offwind-dc.csv +++ b/doc/configtables/offwind-dc.csv @@ -4,10 +4,13 @@ resource,,, -- method,--,"Must be 'wind'","A superordinate technology type." -- turbine,--,"One of turbine types included in `atlite `__","Specifies the turbine type and its characteristic power curve." capacity_per_sqkm,:math:`MW/km^2`,float,"Allowable density of wind turbine placement." +correction_factor,--,float,"Correction factor for capacity factor time series." +excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis." corine,--,"Any *realistic* subset of the `CORINE Land Cover code list `_","Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." natura,bool,"{true, false}","Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if ``true``." ship_threshold,--,float,"Ship density threshold from which areas are excluded." max_depth,m,float,"Maximum sea water depth at which wind turbines can be build. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." -min_shore_distance,m,float,"Minimum distance to the shore below which wind turbines cannot be build. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." +min_shore_distance,m,float,"Minimum distance to the shore below which wind turbines cannot be build." +max_shore_distance,m,float,"Maximum distance to the shore above which wind turbines cannot be build." potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`" clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero." diff --git a/doc/configtables/onwind.csv b/doc/configtables/onwind.csv index c5f9da20..ba9482e5 100644 --- a/doc/configtables/onwind.csv +++ b/doc/configtables/onwind.csv @@ -11,3 +11,5 @@ corine,,, natura,bool,"{true, false}","Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if ``true``." potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`" clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero." +correction_factor,--,float,"Correction factor for capacity factor time series." +excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis." diff --git a/doc/configtables/solar.csv b/doc/configtables/solar.csv index 9aa24268..803445d5 100644 --- a/doc/configtables/solar.csv +++ b/doc/configtables/solar.csv @@ -12,3 +12,4 @@ corine,--,"Any subset of the `CORINE Land Cover code list `_ natural protection areas. Area is excluded if ``true``." potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`" clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero." +excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis." diff --git a/doc/configtables/solving-options.csv b/doc/configtables/solving-options.csv index f77eec24..e5bbc5f3 100644 --- a/doc/configtables/solving-options.csv +++ b/doc/configtables/solving-options.csv @@ -6,5 +6,5 @@ min_iterations,--,int,"Minimum number of solving iterations in between which res max_iterations,--,int,"Maximum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run." nhours,--,int,"Specifies the :math:`n` first snapshots to take into account. Must be less than the total number of snapshots. Rather recommended only for debugging." clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero." -skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches." +skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches. Defaults to true." track_iterations,bool,"{'true','false'}","Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)" diff --git a/doc/configtables/toplevel.csv b/doc/configtables/toplevel.csv index b7f39d05..bc28b0f6 100644 --- a/doc/configtables/toplevel.csv +++ b/doc/configtables/toplevel.csv @@ -1,15 +1,18 @@ ,Unit,Values,Description -version,--,0.x.x,"Version of PyPSA-Eur" +version,--,0.x.x,"Version of PyPSA-Eur. Descriptive only." tutorial,bool,"{true, false}","Switch to retrieve the tutorial data set instead of the full data set." logging,,, -- level,--,"Any of {'INFO', 'WARNING', 'ERROR'}","Restrict console outputs to all infos, warning or errors only" -- format,--,"","Custom format for log messages. See `LogRecord `_ attributes." -summary_dir,--,"e.g. 'results'","Directory into which results are written." +run,,, +-- name,--,"any string","Specify a name for your run. Results will be stored under this name." +-- shared_cutouts,bool,"{true, false}","Switch to select whether cutouts should be shared across runs." countries,--,"Subset of {'AL', 'AT', 'BA', 'BE', 'BG', 'CH', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IT', 'LT', 'LU', 'LV', 'ME', 'MK', 'NL', 'NO', 'PL', 'PT', 'RO', 'RS', 'SE', 'SI', 'SK'}","European countries defined by their `Two-letter country codes (ISO 3166-1) `_ which should be included in the energy system model." focus_weights,--,"Keys should be two-digit country codes (e.g. DE) and values should range between 0 and 1","Ratio of total clusters for particular countries. the remaining weight is distributed according to mean load. An example: ``focus_weights: 'DE': 0.6 'FR': 0.2``." enable,,, -- prepare_links_p_nom,bool,"{true, false}","Switch to retrieve current HVDC projects from `Wikipedia `_" -- retrieve_databundle,bool,"{true, false}","Switch to retrieve databundle from zenodo via the rule :mod:`retrieve_databundle` or whether to keep a custom databundle located in the corresponding folder." +-- retrieve_cost_data,bool,"{true, false}","Switch to retrieve technology cost data from `technology-data repository `_." -- build_cutout,bool,"{true, false}","Switch to enable the building of cutouts via the rule :mod:`build_cutout`." -- retrieve_cutout,bool,"{true, false}","Switch to enable the retrieval of cutouts from zenodo with :mod:`retrieve_cutout`." -- build_natura_raster,bool,"{true, false}","Switch to enable the creation of the raster ``natura.tiff`` via the rule :mod:`build_natura_raster`." diff --git a/doc/configuration.rst b/doc/configuration.rst index 4fdb3719..7bb8139e 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -18,7 +18,7 @@ Top-level configuration .. literalinclude:: ../config.default.yaml :language: yaml - :lines: 5-12,20,31-38 + :lines: 5-11,23,30-38 .. csv-table:: @@ -252,7 +252,8 @@ Define additional generator attribute for conventional carrier types. If a scala .. literalinclude:: ../config.default.yaml :language: yaml - :lines: 212-217 + :start-at: load: + :end-before: costs: .. csv-table:: :header-rows: 1 diff --git a/doc/contributing.rst b/doc/contributing.rst index 57959124..409201a7 100644 --- a/doc/contributing.rst +++ b/doc/contributing.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -7,9 +7,9 @@ Contributing ####################### -We happily welcome anyone interested in contributing to this project, -be it with new ideas, suggestions, by filing bug reports or contributing code -to our `GitHub repository `_. +We welcome anyone interested in contributing to this project, be it with new +ideas, suggestions, by filing bug reports or contributing code to our `GitHub +repository `_. * If you already have some code changes, you can submit them directly as a `pull request `_. * If you are wondering where we would greatly appreciate your efforts, check out the ``help wanted`` tag in the `issues list `_ and initiate a discussion there. diff --git a/doc/costs.rst b/doc/costs.rst index 10b91e06..2e8e49a0 100644 --- a/doc/costs.rst +++ b/doc/costs.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -9,9 +9,7 @@ Cost Assumptions The database of cost assumptions is retrieved from the repository `PyPSA/technology-data `_ and then -saved to ``resources/costs.csv``. Cost assumptions of previous PyPSA-Eur -versions can be restored by setting in the ``Snakefile``: -``COSTS="data/costs.csv"``. +saved to ``resources/costs.csv``. The ``config.yaml`` provides options to choose a reference year (``costs: year:``) and use a specific version of the repository ``costs: version:``. diff --git a/doc/img/pypsa-logo.png b/doc/img/pypsa-logo.png new file mode 100755 index 0000000000000000000000000000000000000000..fe663fe0b4403e57382da04271553b6d0c408032 GIT binary patch literal 30705 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ⅈ#xIqsaqA%Dh7rhS0t zM7_TlWWcqaJb9Z@A1^pt%Z<@s*;eT92vM!$H~E5f2Y5* z=A^R_ZEP(*nyB6)kUep!+j6+eJ_)->w&B%%W^m+cs3abvj5m4w({eczy0G;LKKA93 zI;4#<#fc{dwyHP13<$Sk$~mBwOG2~=7rT3qO@9-3^&gc0nVJ{U)##hiud9<3x$71q^r?OC9tyemJ z<8R-OF6MewzR77kFFYR>oH5Q9Pyix zKm0e(Zn-BL6XALQ@G%lrE3i1g%3Nl>&J3(>&T3u_o7?o^Puw&yRfiGvkKDwE2~yjm z^JG5KL+khH(sP_=wXZ50Pq^>!WN&(Pvz%PVv!F}+ZAkI*${<*1Rb_(Eb>~m)hF5Uw zd(>th7qsjLjiE{l%9zZX>7{o%nSiTQeL=F_Qv34=hak*IiR-6RFzcj_9<4Cv^~Wm$ zrG^M(Vy==>3#zZvFc9KC6hFm#+@Hraapb9kOmnAJ2E?|P3%W=Ltba?-kKJfm(Dj`E zjLux24J*EuRi8+))2LU^H@8J-abZW!p-KGvm@Y?HsXhYv3O{KtZc;!eH)5VEYfM%p zSk2X)s(*|R3O3a(^wIc<8wEMRo-fRUR~gC(AUGO3IRyVlwsV z%^PlS2{DmVRH(DF_}WRbGmH-&k;zIPNF&V z%qOjZ4fd$AzI5f=lf!Mr%yUzx=eWX7;K%z8#`9`vjfuET6&YJzk{Wp3scq8!hJ8&wwuCxC^^ZZg397eYQ0+c!Nu z#+30v!l$1!q`ZYlI=1ma)to6MlA_gVS!LNsqO+%F#4p)37Vp94`W~G|Y3yp0Cx6)u zowPP*f9EE+`K|h3Tx*tRTXX%y`9|s0C`s+7jbrf6&YEhYGh%qA;1(r&`7oVKS-LMl za`B4WTkha5*f-jf=$RpOt1={2}TX_~(InR50P-DK4~VIpT$cc)hWDBg#f zu3kP4G%jb>AC+s>HewR7Q+>PMvzP7bAxaeR?(56ClPKWpbE`fSZ_i>V$&N*?tWwfe zhNO18{2jO{4OVeW<_LZ@g986D9%)DP^f^!dB$oiBUQ=zPk;H0cKXZ;i7z;i^(M@jK zsd28BOTJmE^?5Aei+5tQo&B8bRo|LE4Y>TB97+7|+R-un%q4>p=i9JOj=_7siD zm+5E9#4J0e`YtuUrtiv*TKLDbE@&K*PN7?pbkvRDOfg| z#ORd}FpTW&e4(A3N=Y{}S6K!PPMF>C$0{zfd*?#9zQSs=DHe6*gw z7tDZU2BD+!M|yv-Txxl$KQoQ*Wz$`Ae)luKWpaLu|E1O5squT{%8H8?mPl?4EeIA_ z-l~6rKeWqd(KG%V`C{dgjDHp!zwFt)=shPZ-ak6~Cjjgx_m=eBuIF4!Ar+3b!InNk zg_x1Pa~eI4XA3buE2X^&OaAP74ui(nak*AiLf48e;GEqOjoG;NyKbSlMDmTf(bVg` zqqf|<=|B@wx+5|h#^78tUB&F%vA6Ovrk~k*a+6F+Cop4bQ;K?}Z0{(mI(mpKa*CDS z4(PI1jqlmBalsL-Od}i;f3xr9Hvr;nCZSi)#$mvs<7=F5c(z5hK7FHV^owDjU%Nfd z{$;D_k;=h6TQ>~mWRATjjT`#iQjnWmKh|nnph2v7k9$Fv;E8r zlIxjSwsFJMIw@rt^mYB>Zhw(4u_ff=&4Mbit^zl)ZZ&b!%@6K`zrtB%(SA+K8$@Ft zlidQ4%_UXNSXHOJb&PW5->hed+Dz8rE_X)GtMT}LiMJ#2c<35ektb9QKP~X({V9eG zk<^xtbFfb>s_I;HXY3lo+m9GrjBT--oB0%&YXJD?MPRO{x+x7j#-!@YtzGnc`jj`6 zSj%93w)UlP-;$lB3kkNLo8p4+q8wo|>)>CY>-jn(BPK9+$JOmEg{n6uS4*pPYG(1i zQv%)@%R~YM$o6Mpb#vY16yf9Mpy0duMlqCRiht(CcR!r_t zS;x~^O_I{t7|^61##_21%>$7Jt%VWd%7Vjl;{ENT53P@eb5H4zM$>@at&!Zmo0be3|S00 zRHsQ7Xsf|GLM*AAu4i8Ml6aHv%KK%bWvd^z+C^^;gGt{y#I^KjB@x{toap0&>cD@x zP_n~NjYQR*J&!SJTGp>N$!0ZC2ID)|OgSF0!Bw8%Jc&m7oOCZMCgbe&BpZ2?>>Nud z%)fEvLa(QysrnU&_m4z8dr&Eyn*UUlwC+vM=WY zwDD;9+;Fe6Wbb>8%f8(Lf|#EyDH%moxtTKr{nSQ|^?0^DKXh*}8?|imU2auAX|p8} zgu;q)kfIU-xc!nB4!@Rr~1n-yeal>6L`mzMSE!`QO;rgVxgk;QJXT8>S0oPB)w^Y+ru;SX5u?+Y#iO>@}^GEV(j0x7Bn$oietg z#Cdm)X!&nauS03QH>+ef`}5U(at1D6vY+g+PQ>an=EM(?nmh(43t;4R(7$|0}e0AaU%R>Smd}AFRIbwURi!6f=Pdbs&^|x@p=CT%c~r0@X_2Q zo+$F5-k7pfgs@;0$ZKz~2P3$yQV6fEBygz=IBma&yLY}XR14kS2}sCk967UTBWab~ zGdsR=XX~Ts>oKY+90klddr1haNNs)!m-5+Vcq%$WLV_fYvIQ%Q})aK^*$@q+8m6+5j38(b<&Q;T=?o*0n+HCyH(jE(@0~jx| z4X)!S*ZZcZRWz}sBW+Am@ZnS}rhVjIwawPmq=EKzLV=y{$&MQX zGS{*u?zGQ3tJ$4DVYNjnwl!)q8E=24Ir&O4w#O=2f2V$+%zgA}PWGB^r9flrHuG=% z(GKw*FGO+r_vB0xN@b*sx6=%?dX5NGdn{hX{zxwf5MNNAatGCf>sgs`jKrON2*Guc z8Q~DGT0d+TW%6&IVZ+rObV^IDimq3IBxFk=Ayb-pXm?_6+G+}KM@L=r5_IKU#R6UR zl5OtW@*EG;fU?_ATeagIEQ=FAwmfKH!0DIwg{B==iwoNU1lU)zu@Yr8KGsty7Rg-; zY>%sdZks1$_DFr^z?C3sG}tacdi-oRL`&i9iuTxUQmj~ z=`AYP7uIC`BEq_(pDHB?ntg`kZ^AcQ6Lvc4OI=pVKh0XztQo!%AE{LJ9;2PCGwLJz z5%5RnIm_xPr=*;vy(ugMUmm${`5aDUGP2A?mAercU99T8WDCkh^|-Rpa*@COEx{st#w+vikx zQpHOwI&vL%XZ>f7uh%M9pO`=oc#NvxbXHEfT*%m>m|k&6TXjKER{p(7GJ3Vr^;xV` zq3>|XM#`FGxrFK9=itphQl;UP0<#k>rE|YrcRb1jDj<*7n>IxX+d@lUY-Ge+Gpth7 z^$NykOic)mKf6M-(-`2}>Ahjpxx}*Gb6!z&yL}<4G5EX(kt8X*Q&Q6EQM{O@DpK-> zxDQxwl}}v=%?vDtw}n9KbvemS{g#Tv5y(!$rYAA)UfpeMZIe(OZM-WWQ+KhrDuJ! zQa7Jg|8^c;|Cuc9yJK4ImGUEIwN_lc)BVD3pwE!|K_nV8wP8~)(%wHG>=5U;z1686 zHy_ifdIs5~8S*5jb)u}%8y%mizSAe00PEOYsk8__jcWQ_GiRpP4Ti9r1Auc7cfl(%l{#ELBb$qbs=y65Hw9 zR*HX$1*o3hK$VY3RgS(omlfAuPJ$3-Re8*H9MUJ9uoK{rAiYg9AWnJ4-uGwr&7D!x z?QqV?x-bvEdC$SZt4riLZ;93<<_l++PE{=k1n=~CNmQ-ROc6=b8w8IGok*hJtygHu zez^GR^O)&s_nCQyY+yF#1J;!62cd7=cT=Pr&oKfm|M=6raO+9JB(gBbm3iLS>K`+< zD1z6UmR{YYQVjFH4yLh_m-NLNbstWFjeTmKbQeV0KPh-rGAC;aCe zy#7h`V80$h6RcAMwmqu8WGm+Ft)GPSo=AMk3iy6MW0gRXP=D$n>uA$yRqn7;c=ayw{mtDAdE$e|l~HBl>W|m#7;7au z>87aLhk2Fnxv$_R*Tlp;XB^x?<%X-*d2F~SQHCuoL-P3MH(_2*TX=LKo4xtr*9_k_ zLgERHH#6>Rr^HeA&T`>Zmd=G>L_P|Ms&{8^Y;8TqFV)zpg-Z3G!%hzGWy>$duBxD> z;G{}KO{^r;q!l|ce_I~&DrXRVCuFhk0U_la&9MoX*!BM5h7b}#vS$AkROQTJ`TTBqIjgJ#-akatwx zA$(3r%-Ly1K^{fKGIiaLU20|CoN% z4+45(sq3fmQd*pYmOc`{6Bwsze*~QE)qx+s#_@*Un#MciJ+KV1Hu#@s2l4 z7C*1wZO92C6ReDxV)VV@vt2Cn8=Q3Y$+)zHiyat6Oiw0t{fM5fH>7m(q;oFM$~o=e zf{U+)eqY2z+@Yvl1bE>QATq%)fhI6B99->N8Ft6N#F3cE2#O72k_kjlpFg?jcwrFJ zL}D+dfU}F+SwAX-brRA5fm7K0* zKH$3|aTC18ur%XpW}M%kAuoD!lV5jMQag-tI})4$bUOIm;-L$GXU zIt{5zT_3PjR1Ie~qwy-_CqXV8=+yF%1?2Q!4D1a@$bUOyb`5pjg@8$Qaq^3Y0b$3f z%~MDca0+|l*J(8KH9$5kSa&Y} zFANHBFo20$YFs{{2S|#;%y_}y+&J|PODEkXBeE74Cb+w?Dq0PqUY0e?^fz(!WYM4J z_)d`d+4&D7_XLj^;)Tl5aUy4cveRafm#Bl)YImO5@H>`YQpQ<*3@{CE9{2nuX5jFT zFzQNib#;Pp;5a}8yV5J=FA;<~>7}DS`E?Fxo|(YMzmy31Z!Tu~05suCAM1q!)DtrM zP(x+-zNjhkW`yfd7Oh7F``w*RJ_!@g_HCo1mVpj_XWTGqMLvn z(K8)A4uHT;*#7bFX950#VzOGUjc^96CDPb>BSW9wa`@Q1+@QtBQxi{drrq2Cl9XSC>>R@IL8r|EPCJbnQC62vhcm4)q0GBAPDq z5KEY3p6nn-ox2fV+-doK5EBHZ(XZHIUFC147$nGlJKBoB4J>=XK?_F>A7L@Buf!qu zDYs<$O%irv&ptC)922GUc=`_!NY6vW@N@Ch1e$B`7ph**I00Yf)^3j>;v>k#o@N!P zd!4omh`p9XaI>j-DZN85PDv{-?}_gd!#ckDtphuNhsV4py!nNw24;kcNTRR+Q_ zjWwnFlOu%<1-@rFQ;X^p`U1nPTnL)?o!v}+8u!AtmB2=cS$ zYmq?=3uzIfg}i&kSD}BjpuGT0BJ8DGV_+JVsj}S%(vF0;RxfmV&=}NQT4b|A21Ye)s(G?|5|PB!ZU)F>^!@87y?VsHbV%w0Upj9r|L z&IM{n4`KB{@u>-Xa3O*H3k()I-P)rp$Wqh{{`zojE`_I!1-!yf|ny#Ze$59gkliAPkng8U_*a9{+9dcTJ}q{Ip*i_66cF(Z?1YuCRF5TBnl- z!oqodHXFZ9qUs!}(-Y{{j4a!W_^^OAYBot|!ud^@Z9gp7kl*JH%e?jTuRN&XKd2AE zV7h%6bm9lU`^N$bR4FILfsi!}S~9@F^O+(&N2|XjAVrzRR_4~WTfl8h?yU2dV(2D{ zajZxcEOPY*2zS6P6N@&%sK83pE))jvGk-h;1wqd}jp)IT!_bY}Y>a+|U~Z1aR*Q_R zAQkBg!gtQ@1eMmHFW!o)nSFuIm!I` z3b=A%OD?gOY>5AXiw?BUGM+1?ybf$gCiTzV}$hhu#-jr;_$yz!90$UuXX|C3YTuv zcM{>nOT>OO;3oQu1!?e%6_HkTFdF#l!nEn?hsuUaj^dMrml^mj%5qeW@WIYt&Jih} zZebk-%VAuukj&B@JoOkC^^AXco7n>iOLYITLUf8+?ZW9@MgXUU9{6@hA|QLgRibbg z2F9K0#6OyC9RKbgjWp1XQC!g>SP}3y%n=rWEz|kCC>_M@}eX@3;jAQ;% z2Yn|E&SyF{|1^RIfoFxd?+rW_aF?C}xakROTYb8u zlYs-!5%)o@sCh1UmlY=dvI1_n#z7=#lk6iw7k2@4O5{;?fU(5$elzG?`m5iKs9UwuFNRHo0=$1Hslugw$XolQpyOXev;&neUu!x&Q;Si+x%BBvnjci|+g5&Rb#J-zvc&suh@2|v z!*81c$UQwXok0sJK*KO#S@6G{Ax9F2f5PH3)<@j8n;==2kU_i3fUp-9f}0j~7zRlB z{{e%iwgLpO2lZFkTVu7H&0r@Si_ zMeA`=QRjWo2wVk-QobBTyjA%pt-+20{NLAITyS@id4izuj%cokhcd^i^j-RA(p9{1#EZX8XYbn510?hW`@>%CaZ%N-=>Y#Q^x}{_gmK zgX)lLyZo{fxjWnZC2;HTaqV&ec?loTEo7ohscqQ@coc@i$H5g2hh~x;_BhAGK7VLmSDSB zaKP>A*|&c}F;#e!S)eiZRw1EE2;MMKU>LzHg?9**Q<90W8qAt*qW!UdxRV<_N2D6w zF3$r}QG-$RFe#jiIw%zwWt@^?{4lla^m`d3&TrPra(vCqK*NqmN#BiY$&39LA69X; z8>jBGLi+Kg{rCXD=0XL)26+ecVW?Bm!~Ytq1@eEu0pv`7C8N%#$=pbz44)-W%b0my%ZuG)lX)++ly1`(B{q!s6GZ4F@B0hOTr>R;*r zE~StfZe_#)%^1a9wO30}7?guKsG$3e6M%%8|RTlu1qD)R0VhhSG z&Iy_Is#-|u+V!eknP3Xc;?h&`?*PbV=mKW7dsK*H|H%ZB!<7Uso!H@u1EmBoR_-7p zAPo*N!pSJWQxHm!;8J#(Av7_&WyKt_{rI4H@jzAavRc;U_rE2jobTXLYyLL;S5eZ? zJdis8cSIM0+9retY|0`b^K1s!k=G^6yVV1XKG-t1;eK@B*nT;K+VSg@%_@;m0jMA2 z3`V>{4f`oxB$x`K(Nk`rIobKtwbqqwKRj?3?^cvNR_-Qbs>f%fnKXRCRTgE*3Qu*~ z;?DB^53+HfvxQI>ETY=N)oL+p+Rpwxc!swGS9-s+oWYeP01AwR%%H5>Uh8TIjAL}& zmy2lxhkziAJPd?1|L1>m2S8#!aa<)FcTg_2=)@f614cR^(}}u)*H5^2v2#$h+^BVB z$05N8xAL#O0`pH$#uZY7KGraj-7PVD@&l)azWiHZ7Eyq9{#h9Iq($B~3%sOEe*`86 zXy$-o;sGaeUz>ClXF65YdsR2YLMSv$Vy<@nyC(_6$?VR0oa!ThdJ!t3= zwtNw>ynU#$kak(%M1UVBAxmmyiGvczG4_+mi(JR{OG{vKozlbPz(rh(vB8UlSr%{$ zkarG{1IfMJ(jsBMLkMt)4gk_VIS49i3I-#a+I8`D1zCZlkfmi< zYt%{Wy&!>H8TMrZ(Tn>s%S)#DjV4HZh=%5%C|zg4u5`pTfqKe;6e8;6hy8MM6@F~q zzZ60ld5p_Za1c`rabrvcZ1@yJRf#-akl)pNbX&wBxUU_~AwU@UeGmznPY+53U^pGv zo5xi{P~s<~iBC(Tz}#|5q|`BVN`8TxJ$f&d1kY$MVaiCkT8tfDIL?aUT*kT|BoN%a zBefX*-4Y{c0*^-rbt5$TT}h)fh{$e0UH!%#BzMgrAaEQ40tqOzTtPkZQ~X0H`Z6ue z<~Tl!Fv4En6AQslPTB{)CFusY#Wo=`KvhdK`kz?n4FD1Uv@!s>ZIN+fspMPnNG-t!Z|oR|VQsjC2n|8hzH8{q%#sdaTUb}~NNeir}m z0JM6#=gkGmAo@j1d7rQ};kVxfugiRwzA03WyC|BY|T4L*x!loN0XACk3eP z*uwC}X?&CbhJ_-4VGuX)GWJYdT_7%loyy3mZ@=D*>k;PVHx8=$l8vp#br+$JKTvj^ znBR!^2bB-Nluv+D_DLb_({8;nC-bjl01>S85Gk-5YrPUDmO8%1FjMQJ23&sL?C(>g zr~;Ic_7E*l6&$7oXlG7I(r(Fl8#lJbdLIt#R9U;C;fQ-R&gE2*;4PFen20%r_#KZ7 z>qRIdTdk|Bu~Q<|J|0r`@KC>phnBpk-K6rSt-!1sF8p3!@-GEtkE40t7&u^hcHB9| zyYdk%j{Bh3LDc}Q;oN#oh7rI99T|oHaoAV9;B6SkThBJQwK?NR@_8+Fzv=9pFPG^1p zRhn>){c(^S(mv!J1Vk3g!I~pSmelUEWar;f6Bv&%Iaq0mO8db5FG{H6A~(hU0|aP1 zP;>-}A{-R<4%8eG+P*hyp)MobG z7q{dM|COJk(t;Mr^l+O6yQ^Wwya`OGB zNM%hO_kI0He}qKfuzb`U(=)-YP_q+9jB)dyldc#V|5er~tc6kfhtYvRb_{=S<{tQMYHwfM%C^7=qBk%k1~ zk!4prHn63bfo&fQ6Iq_M|BBD6mS8OF0ai#G_B|jNxV;WbM+9&g?t>~8yg*3A!NBAX z4ptTrX|ad(!rS|RjrVcDZv5#+tq&VcIU0cTm_Af<)k^32^M=O7l zGKinGh3-ju)9tSQ%&nc5mllP*=BD{2%bl&Nk|%zXB~K*iPb7KWoAa1R@S?dIaaHfi zjTT4BYHT9HWKft8qAJBwVxrgX2$dZYe#GjZrx7PBsnYV4UN&Si$e817f*Qo{1*wJCI{wF2VH`%ghKr6^>|@{PY2+42Fs|9u?yybp6XF9kDk(e z;zP?cvO``=f}S$aRni=m+nC2F3=^x88S45I;}%!2&?(T?b0r?)$NVI424V7X&D@Bo zB#emo$kFGK9HII1o4GN|?3u?Q&6MzHZHu8*+1oAQ;-RccuLq*Xn{GzCWYyA)q} zOmDL%+6>*8hn7h?)|`PrDrrl?de4^R=(WSr*9#P#MXyC%g+C#WPqXFiPd4Fu7=3^6 zJ|Sd-Rn?mVolMWdV!~8X1&n>tb_tQ8x3(>&KbkdCh zBwS3ci$j_d7V@-b=Jy@lZ#6C~5Y$!fpUFN?)11LNrcjA`GnNbGX@t<4GKS<)m4@h( z0@#s}ME{N1N?)6DhGg%hfq23(@)I}XSf{BF!tyO`sHTr7G8fYj5iZ-PkJno!ytcjh z(079ao-;z#TfjdYWS`z8;8Zny|fZQu@uf*jj!mNlf;=ZC_q$-=i5%i~Q_SzOqvg z)-zG#O)}S7>~4Dv9I*(fr`q`R35_nuV83uyT%zt?LHd(VJ=~GYFVZ?W_@dh6XwECi zMV>?4Jo+SH4jM!`A=Xn=_~!jiO|)yF1K;~>>|M12seVU?0UZSY(RXSjVERW-)OKDi z&Q}ef%yqj%jzCWj2;5YU_b~I^dY-T*=+ONTI!AK7HXiZtR}VSui;HSIm=_aYtBt-P zdR^6K%j9`%c#?gy%g{@q@6FffeGrZO;4Z!XP5}ALs~QrG-ML{{QdvBjwaGb}fZcw# ztgm%B0sZZ^2}QM0%N9yqx-yK_+%=Njm<`Pfg}!hx`)OM&tXr9vha68|wXL)}JJgb| z3_uQl-2-M6R^2ja;ToDZnO?{*`jp8M{lcf?(r>6d3G{eJ+s{P@inWq09=fX$c_HG^ z0wRJt3TZ6w%5%O|ZWe~yawl!6yY^%l6O}F)K2BpfRj#~7N(ecYbB)coB^#khHYxoj zoS8O$v-QM>%W#)2v*0EfmrhOubEGyKR`cR9_RpFjX_V}J?AY^78~0w%Vyth}P)Ccz zWPf;nJKC-gY2BCF&|#qSaYjSUu(G={adE8ze0_jE=sFXWFB!!cnb!N{=-3yli(=*x z4~B)JA|q1H1wPh^GI_n+H7X?q1H7gV{IAJdLf)Z9_`Urn= zV5#QRzhR$ygZ-u&b0l)3sn=P8i<(l*UF}}oZny7fkd7~`^367oPB|SLuG;V`Ekq+u z+&b!lmr~0Xjb2CP3CKKH%_4@U7I!)u}??++#$p!k3LynDK`+N@jA%1&f z1bZqna_Efb%xRCuRxGb9!(C@vw@+j2&Kl_Id?N>g=PWs~)Vm1n^-%zR9`77<|ShDS>97_Z3Qq9mr zKBCTRcUyst624zu&c@0b%cIYGZI?^^wChJs&}&b74zffi)y3SRnTMMIe!AvH4AEm( zReiBMacf8ROjh8^Io+hVNa@uQBSlT`T*U!XozAJs4-|ad+0ESzWdvtEIO`=`zkI!a zRwp9+70DIl;PAd!(_*6*%%Uvj2yvjVi1H5RVg1T@tzkU(az{?OXHTK3ift95XX42B z$7f<*rjIOcrwr#!vt5}9W5$Lxb}OvrY?}1zuP?(N2K>owdIadp;SU1*bBRv_2UZ`R zF_-C%e9$O+&iRjy^D_w{O;2x{Cp}X-=&(5KGcsKZTfL&>R{Pedt!o=5<~d=^(V6D3 z$|}>Xv+HxVeX6Ad9ThbSsuCuRYbrYT!fr+qx$(gGPJEgcxQaS1Kt0qxk}KL0Gg;;Y?Lc=h3~%JFL!sT&<2evvVw4ucNFak(lAh z_nvOfrM)Io;U}CUM?^BM({3gUUe||8H(IlN!w#Og$4O4>Q^$|Kyl!=lwrumw2Zh*K zlhqF<1Eq3_CT?<~KX$Tih|KwExlTT3w&W4zWOjT^C+G(eju3EOW>u+UvVaH@qj9%M*_Gj^N zz4cv%aAx+JY2s^dnnsm2%F|x;`CPNKeLt&@MVMUl61YF-^T!t87SnUYYRbz)t8AN5 z-8tK8$|0%OU}_DFZ$>a7gqQh3ScD7Q!9>!%Q3HK`ZVml4>Bn{Nl61{g z0sUNoY^FDFd=ekV-{fITQ3)IQ!45f|OH1oc!-sWHL0>rjd z;QebE22#ID2fn4~kGPI}DUFLMg%_J@?M#R@6c4PtQ<09pxt-Rfv#3&b5yDCc;z$b% z$Jy?gQ@`yPeOpV{J!ECMa?1tu^{W(Dy(>(9U**7H^z8SC zN*gcI1pZ_Z2PVBdk3Q|{%+)Fsf9lVwt;sDr#S?s-=(Lo8KQxg7(<^GfU0L3}>v8$z zV_3HSQm=SRC9bHo1>#43F~*AE|st-xy?VaraBS6qyFf=^*)`Sc4gb!?FM;S z3D07pm|0Ri0+?S5U7&Ya<#>;1j6R8p@26!id$BM!fXOoqKhf83l+F_?jjYwNwJx3W zy=4*UTJL|#y7B9)zRf86{`RtkUP-aS=+Z}hOY`?Zd^R^=fE+V7AEtm#ylf9-k!F90 z&CF#<6y&ZpGusT06CvmsStk3DkT`IMil^f!4PV_zb1)medN1VA3 zNs(|0p0}A|mG2F8n{*4xLt})TjCNf5#4yA5KW~;y#r4MXZ;p&_$n%6`JhT~w_u5kO zQ9_>QvA(#79Wf(w(@7GwRbKp~n0sbSRfR&rR-?T)Bfj4-UEY#T_+4NcLuSqu?}Wzb zo#`*Oh;e0`kh&E%B?gt)<)XAICQ4>dV8}Z(9pPu%|Req7BSbN6W4e795lAtoa?-#O`CNY5cM9#I-lJkH-eu z9UtTc1vgYTH_4WpViJFTG!RJ87gSkQEmg{=UW!lfwhzypo~-{~wIr7bGzie1&4C1v z7mV!p7w7av7OEddwT3rbte7}OBAQtvEa&20QMO*G!>!-M_oVU#w-&SYm=8D&qqFL{0OW)3eh zT9wns1kbfAFG3~CyL3MI(-TAF++Q;AU^Q(GJMgOJY6-t+%PUUz;?&ZGLhdS zRhv$&x8S#~uax~u`(zPle&g#N=XXb+1in>rBo1^)SN7CxaVb!aeqSiD8d<))o)r2~ zk444t%VY{Vc4~A;=tqrQW>2R^{={;L`S09j8;GBEb5Z5ua!JLH>fd*M%muEkK1(b! zA5tzXl@>N&krWiT5uW58@!^rfonq~lO9(dK0NF=RlC@e45n-a)AJg-VGQHh{9~No1 z-Z|$omA2&a?IjCob_YM&5>w66ETWcz#%Zns|Y-x^ETKjn72U_USEO_`5()c>U#Ubxle!h98@7kx(C(nHymylL2*p1hbR8EU?my;BO2_S49 z(~Kqkubw?uR1rJIw&9nfaYTR@y6s9ytZ%x$pu)Cdws3KRrNZTRA*xar(th)GLO}3H8JjjmMg0 zLXFFp?V?hd54V3uQh;XA^tJ%~g4+&2ZBS^P zF3Z=a^qc`wZrJT=|Bcoz+m_-sMjb)Tp(K|yv^Yl(EAju-IBt`;IK+p%Kk^GkH0EY& z(wr<-b^2ZR6~y>218|KNdDh)jMVEh^ig(2#1YlVNn&6r`E603oZ@zPz?}A|e8HI@F zXPgi_T;Ci6UfgqwZ`@g<>2BAo;k5MYE15i9Iby*4u3LIh_8b8Ok}avw(sz%JK3eBb zV|Yi4Ceb^f0IS_owfPb=R<$SIGOd;#V}Cbt532Qp+vxU2L`S>B*a=$F3YlDfexF-R zOb^fCPC(*>8hGx|cyCTE()#y-WH4}G5`H7+)j&$H2D?~{wjt3o4k zgt8r1%VL+ubDGxfK6z2sNdI$tjRrX-XdEmq*RuVQ9)kMJ9D#+Z86$0{nrm}ok)<_i zDo;)p0NI|`Zla|>km7_R&Cm6RPug7@z5pEwq3G)ajiY~_+kz<^9oykU3 z>?3n7xxw&BwQHYUpjw%o?^TqsZ|{lq9Dh>IDO#09!+rae&S^HZi~$A2?A+@2yU^D9 z9^~@$Da((VFKyAwf4WJMvs*_*vgt3WB)s8J5+AER-Z}3+XNaW`(>45BF&3Vc-@5E% zd+K?nI059{kluRi_`|HMO08-SH;(srkDJ~W`?HYF^b@xmP0nkd8TljN+*vBNHs6=) z1x(W?48JzU*z{F!|DnzFs?7+7_|1=#8|5DDD|An6U^0YpQLeXs2sJR(vAUi9l~;PQjVVF5lu1 zN?}aJ=jq!{Z}4qcqEbeBEeoySil+FWarxREvr(0@&u<+;N@CKJ|Ad*D0OVU`UVQ^U zk$0hSiYg#c{91v+WU0{j6kR(zJ~d^29Q!*@W$K4R#ZI~^^R`L^14C>>b);*oz3KKD zrY8A_*dpK8R2a!0NF)0W76{~z;=<+i4@*;hR2!YKJ+O50p-7hj&Z);I=IQ+NxIt%mntXV{0|Pb_r*oPYt&Q6~>CMO}nD!b9Auu*p-uQfRp~%MPUKP)J z)Bji5b%iz2b?Z@4z(Pk61fnE>k*aj0gc1^}lu)8{X(Av>5fl*+r3!{7y@eLKfJl)d zQU!s8fOHWAB26#|gm#ASKNsib`=96JV&!IbnUytb)_&hNd*5w+)uwSTR!-CCz2VG? zYeue?R@UJ%oV+oaZ=m(zh3RqN#j&=f!3#g1P*>+qV}*}T?sg|RwvPs_Uqf6;Q_0dH z3{xVNQWyJJe^s6#T zlCi~sYw)}aS`xMWxjPPL`Uq*TtI>(aLHx#R$M@YTQOEUtcV8bX>q@$w7+I=z^WG($ zScZ>uXeS;{<=UT?f1|^W_a}(Pk1t8W^`&+Nm;hCVbk+|{`^>c?#b#gthF-Z-FjA1z z*Z*gt<#8fJ5@-^-T338LW+Znfbvm0~D=1=E30y7>mGpF1vjH~1-nYWG<<9=ltU6d!J)GFc`tl8*o#pTU4csn zrZ8XWz0G6k*e+z@5VabW_2{~uk-OPR_j0YZgz~HrBx`wpacJ338X7TD6#|y0jZSUJ zwV6mT25D{InkP-teCF_CU#6ywx=(o-&gYgUJbd!;;aEfO89!XUHWnGXsPdAenn^A( z3vjyeQKqMH1?$KK#T6{849$BDZBOulyXdnR$rPxgj9fRfc(zxW_1u zT4@SsW^2wXzRkQFY9AI4c_VO$^s>ZOL_%1jQzqSLAMQol`q4_dCmx&w80x4Nap$(g zY4^3Fu?oq&F+C95XKkDKmhD8yAanjj&ijSa*`<96)L~%<8J+}llUR*2M?)4BLMoF& z&>9tP-hE?@1%o9$Cczqq689GkT!%@C;`n%?*wl!z1V!Hb|LcxYe@Z}HDYhOHg+5IR7-|~zbwQAr&o3ZgiHQ>8xgMU zxQWsgK)tXk!|#=y9#cxE5p3x{O7$f7X~XomHDdwbg)R|q_;PEuw3Lt=lru5Xz%yjK zCrrD1`VUW;z-1Jd{%%S6biRIhsulMpBB!@P#Pg=?ofCkX5csFtHt~{R5myAqB9&Hc zTkGxd;q?oMw1t&r_cdvsU^fCavOvSTE<2D2%}QvLO*BOwgJihZf5`3%#X zKE)U?`9a6sV}$flGQ=qD-JeB4&{1;B5#74s6ha|s_9xPHyYs5_Imh-Ly6^!oaSMA) zs;|8O-|&R7di`Cncs?JOK7$8+6(B03*yi%ct1i3d9(Js5kQ;~Z$$xJZ{fLq6G7}qE zP*U}`chyoot;2Y(%e_2*9H9EeO4K!($kq<3#zHYQAi{#1i8s*XxxvOjJsCGz^sP}h zm=4HV3(>I3pRv-!&@nzGUFda!nvZd)$yDJTtJ6*ncHT#RT4q)PfL#`-9RnLfetq6# ziJZ8^6b$u3m4Fw^d|A=(F-WWV$2i3HU9YI1P{>6_KsED5LsLaHPhSnzkL>Fi`F?CO0peRCxgmta85hCvTy7EHp$awL(7~+Zs;?s%%%4UtZ&?5E$8x(XVKlBnEqnAPKK}!@J zxIOUmF569r?T3~Dmq!nL*4+Xtc(&*>$NNUqfal5!e;%JL7iTgh=j`rh$3X`B5ua>@ zP&VZUHaE_&^@@X`!UCNDJBuN?uaO@oK`K3>`0JO#a?O5>AAFBmBJ=wLfIoOrMRd7% zxa3X0OVip9Ql1_A8l@3t!oxWSy*qFX9576Fl{vj($?p_Dkk#+K>LStDbQiWBD)e`i zdEK!c13Jbzc4!QPaJ)mXTgC^_F(;-c)TCFlfLDVK-Gp_uuo^-;Y|W6t>%-1CZbr83 znK%=7lefH?`fD##P;YxtUh!+IS)t&qm*zgLwT# z6uZImQ0Px6JM$IPc;I zkOR*`jQb)i#yISjqD~7sMCJH?s^+gwsKdHk22=~H-6Wg7ayS$Wst#=5C%rmR3QlHt z0eNzki2Ti9?ren2wzc?DFWLwC4Pt^Fc5{=wq&olGtK0d4eXWbGqjq^m9bI^n;pGsQ zOgXKnj(n!vBxFFWM8+FutD3q{@R@p{{fE%^(%PKUfgPGN`7F68LVAkqpM=*A)>ssk zy`;fp=VvTcHNFh*5tb0~xYHB_dWa!eFm9>$!?Kk7hu06;d!6zUU+v3XQ~Me+Q_Z}E z*6<@5T+D$wjTopu7?G|Uufk)Hn0vkXS^^6RHMx3?X)v58li@pl7LI> znsUE!b^Ho#m$$1Ic_dr?nEQOWd(Kg|AO1Z^5cE~oNxFTfQ=T_P@@6VBq5~ocuQi(; zd%%WH6=@Ws$Xe#_x6a0&kHgdSP2Xv-R{^8dcC-4K7Ydd^)Hr#Z)i1*L!r)7zZnz}+=Ni!h$oVc8**jb&VrM4!FKZ4H1`A_d-p$gO;6=Ua>);(+1+0JPibx=p+#EwcJ-=G*Nv<}>KubN2u>t(2Etun|CGbmpaG61 zk7rCegx}n=bAOqis*?WYp|ub4UhHFxQG(%2H2XX;RRBbnBcw$i9fr}K9|x}BW;PdF z8W9Tq993*@7Jpr&f6HlhvZEZVCkDhQ<;c)i3%UcnX=v&q!;gy5&83_heS{$tjb8L5 zz;L1*HRfirU98?2ej9e>i><&ruiq6SRq((!Lx@-g{uu3hH{gw)KkkfvE|4-xQ+}A= zfj@Vnc%#B15CE&q8nk~`;RBF?(O0&SE9JO+A6J$kDP|s6F-HhTF|mnNF;hNAsrfX# zW?6r2ZmD=6gOhI*?~0sSraR26jt0s++`VAE+x{Tag`ZQSUf$sS17@ri3_}!T@{Fl1Y-7;^UGH zV>V~lnFeRt0e40Q7<0@)>u|&sT_uq?N=|V{dj7hL0EKdXv!z-m{*paS>o3yc_dEzb0X&!ZoueyrS@FKcdwp?k#5Id3kOxWc)HjUU2@tEL>j2SZ ziLH3NH!_s{`svLtC-k#NZg&lQ7MYZxG}@5M66f-2z;$OY`vtc3@-f@hoPC3{@9{24_+sa)!1K^O z_=EjlL@;o?L1-L%wHHi~UR$2VA)+qzI>Zf>+?4YZ)%8-`Fc0Tz9sX=BruyLMU!T5# z;aKneqpp>(uPYd{4^p{j$!J=gMd%W-UgB zG0M$k5l;or#nyWNy-UjHYzrmi4Fcuo;PT7)vK=a-6jAIMzy@*nh8ks<-R4dT5z-|w z{OJt0dw%EHZ!TU%h3S$AAqgfoA(VL%g-r-u@3Tiy@a$@RdgT*JTQ?^|arsnUr(h~( z9CkP)0RX1b27)?i#98~zZFIYKgoFCzgNJ+1cIubESGE!~dvW>BOl-KoaMJ0j(=i;@ zt$iaiM6{dFe$lq}N~Xe4Ns8G4Pm(#24ybrn-?G{JyC@|0hOyV-y0L>3%*R{~at-6l zrzme;!x@nU(;MW2j=|DJih2swa5t>_`F%n_ICh@>dW(CeSH|nU%=0B<(m$?(lu=j3 zEnd)1>4x7wKY7Ps@iYCF1L8zV?M@ukglDZ*B}%N_?JK zOrxg!`o*V4r@ErqzYh0rsYsgF?BMvaz~Et>dxq{$#>n|@2wO_e0@!=c?+UfMf)b2` z%oJzSQUQsn3D$5oo0tvd-{JVkJ~&7I+!8st7Jf}E+CW#O!EujLe`OmPl!p_;&E>X( z{e2cXG)_xQ!PJ9KRDH?gv!&$z>+G}CL)8O?@y9!8}5z2o|NCKLKbIKHcHxu&2pob!y8lwi-0&)X)(6 zMvWQi0fndO^Sqp%%8TR1gCR2u@rQ4+wNf!-M3Zb|w7qHyYcvi{(2ckzig4xu&2yYLS*6>edfgUuUMMpw;olT1-Nkzpfhj9l@ zn*rF8n6v0hB|A6DMm|S-pJ18mLV#IWqf|J$83=Sb9H!*E7 zJZ0mKdL|_#){YDkt?86)ECU&uq|Svr^50fOvi&AC$~A#E zb1I$1GZCNUEDfUjAepuh5*nT|FJnoYHwrMc(urI-@v1N1m6^ZbPeIhG{-$&giy^z{ zih8UB6Z;zKbbUkDE~oXPQ|44T?W-fU^uky8cE)PP#-nxxyI_nr{lVkJBQRgsmw<2X z4vZ>owxOi@y9Nh5=86 zN{97co#iP}e4Sj9J^w`G>Ff>kbW)(%Mxk1)M3TrMbtb0Xcn749mxjrI$jgp;Imxpd z1xrmu7p@6q-{#pTqf$fq6V*y!&Qmz2-j$ zuQttDA2CxAN6ZwRQ<7IPe%hztdKG&I@&7Pz0o}h;!^X9jjsXLC$I<2Jl!5e~UVW~m z8Ic#zNioWKwBeH~5k$`JJjx$wq~;4(sqzbY);xcb>?1Y!5U0=WA9f(I^J(>~8tOo6 zBAus{kss8ip%SI6543XWF(4Q}K5bokGWAdUU?ThRM)EF8~rV=RJpEK^LQ-xU900=PD)3(lk2_t10}yv(V+PL*$NOwVxKu_GRf+@ickqwg@ zgTvaBTiyNv7LzQT=jN)%r3##1h>7x%())h?{TqZQ!7zh;3~ak8H1Pzl0=&C8ejEgF z8-_pPM|{N$3uLeR>hi}a=>B1PTRJN6dXb_tjiWw7D^je$)m&UQ?%)b#JEL(iy4>ei zWgbtBpMkxGj5b&U&TjGKTw}VJ%S!21@^gvAFTs@HraCN8+CZV|ueHI#Izo+Uznh=g zAK7LBv!zvrZ5st|wF87gAayqh**VNi~<1aAeRBr562f9KOA=4BIy$I@WU_u5kEED_%w)$r&0FmneN6 zOSwJd4U7Ai(m^@Hqth{iU@7bWkbQINK;Tg1vsgVV09=+dA!h!ZUdYlSq>NKHQr!Gq zR!lK67E6PFWzesf`iT~Cr@c%NWtV(z8w6^CHw9G^biB;Kwr^vSRmD4=dcnh$FmxM~ zb37Tjo-q9M;`=S5vj#oGo;xJ3`%_-L8J5sjlY^<&#+=&^uAeyus2)ZY_a}HI;g>U- zzO8H$ytJZ0;>LL}@$||)=W|~|yvE#8QZkD`b%cVyN!iOh*ydlej{+1n$uo#pE?_z? z(8mtz5s0wViklL(&OTY@;9vgZjI_`Dv)`@xQkgDEX?HFdjDUknD+kOq?bRdETU{!B zJ@%I18r!-XH;=AI8fkk3cAJqm4{jNnW=kh{pP)tCXr~!#MRg4thRQ2Ey!)E?!+z`M zh-jQw2!3l3P8S}ee^3RRyzFuqu%ijOmWSKtp7)AlDM6IfGp2_%tHqRNypC;L51zZD z*Ta<;elhfLUsg%R&pOcU)t;>IzSTiG;TX`;(v73K?lgN(7rgNexczF_jO^-$Ngu|L zUGyB%eTH7mpBZ>upiX}`k01;xdma&w1U|X+c~r+yqOV&#m1ifDySwErgjL24nl65L zBmK|rucT+}Vm&E$2=_}d4!29;2fJ&0)Nz&EYeu0?&YYq1we&da(lm``8g%d9j zJ>mVg+&@7agzgFpDXXiq)4M*Ubu}@Zd-6xyU+lr&_#zVs^d+$3+!LhC4xT9QYJk&h zBDmc0Q!gf9$4n+C@(F^6%?W*O_wM-?la>-Xm*Pei;z;gEZSKY;ZDqZmz=tw=mA%Qm;MOGeAEi@q&~AT%UL~XfDv4))g7~B@h^B?&t6(tAZDd9`OL&|YVbA(0 zAGdAiu*e}iyc1SBZ^8~O5z`~e2W7gPSAP9VHRmu6pO9t>09QT*;lvUHH8m4MW9;kp z48qgIi-Jhnv0)lJIQ@94I$DdqiIu@=3HDKpat@t`yP2j2Ho~bJdD=v6sH5p$?CiQF zQQd9QHuCqj5YHj3(l{tD`*sE2)gp`__, the package for simulating and optimising modern power systems which PyPSA-Eur uses under the hood. -- Course on `Energy System Modelling `_, - Karlsruhe Institute of Technology (KIT), `Dr. Tom Brown `_ +- Course on `Energy Systems `_, + Technical University of Berlin (TUB), `Prof. Dr. Tom Brown `_ +- Course on `Data Science for Energy System Modelling `_, + Technical University of Berlin (TUB), `Dr. Fabian Neumann `_ Citing PyPSA-Eur ================ diff --git a/doc/installation.rst b/doc/installation.rst index da1497e6..257e41bb 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -103,8 +103,12 @@ It might be the case that you can only retrieve solutions by using a commercial conda activate pypsa-eur conda install -c conda-forge ipopt glpk -.. warning:: - On Windows, new versions of ``ipopt`` have caused problems. Consider downgrading to version 3.11.1. + or + + .. code:: bash + + conda activate pypsa-eur + pip install highspy .. _defaultconfig: @@ -123,11 +127,3 @@ Before first use, create a ``config.yaml`` by copying the example. Users are advised to regularly check their own ``config.yaml`` against changes in the ``config.default.yaml`` when pulling a new version from the remote repository. - -.. Using PyPSA-Eur with Docker Images -.. ================================== - -.. If docker. Optional. -.. To run on cloud computing. -.. Gurobi license - floating token server - license must not be tied to a particular machine -.. Provide ``Dockerfile``. diff --git a/doc/introduction.rst b/doc/introduction.rst index 8e64b682..835dd59c 100644 --- a/doc/introduction.rst +++ b/doc/introduction.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/limitations.rst b/doc/limitations.rst index 99c22aed..eb05cddb 100644 --- a/doc/limitations.rst +++ b/doc/limitations.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/make.bat b/doc/make.bat index 2d7118ab..3037f934 100644 --- a/doc/make.bat +++ b/doc/make.bat @@ -1,4 +1,4 @@ -REM SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors +REM SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors REM SPDX-License-Identifier: MIT @ECHO OFF diff --git a/doc/plotting.rst b/doc/plotting.rst index e31cb68f..f3ca8036 100644 --- a/doc/plotting.rst +++ b/doc/plotting.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation.rst b/doc/preparation.rst index 74e53b05..b15080e5 100644 --- a/doc/preparation.rst +++ b/doc/preparation.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -28,6 +28,7 @@ Then the process continues by calculating conventional power plant capacities, p - :mod:`build_powerplants` for today's thermal power plant capacities using `powerplantmatching `_ allocating these to the closest substation for each powerplant, - :mod:`build_natura_raster` for rasterising NATURA2000 natural protection areas, +- :mod:`build_ship_raster` for building shipping traffic density, - :mod:`build_renewable_profiles` for the hourly capacity factors and installation potentials constrained by land-use in each substation's Voronoi cell for PV, onshore and offshore wind, and - :mod:`build_hydro_profile` for the hourly per-unit hydro power availability time series. @@ -42,6 +43,7 @@ together into a detailed PyPSA network stored in ``networks/elec.nc``. preparation/build_load_data preparation/build_cutout preparation/build_natura_raster + preparation/build_ship_raster preparation/prepare_links_p_nom preparation/base_network preparation/build_bus_regions diff --git a/doc/preparation/add_electricity.rst b/doc/preparation/add_electricity.rst index cec1228c..6c42206b 100644 --- a/doc/preparation/add_electricity.rst +++ b/doc/preparation/add_electricity.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/base_network.rst b/doc/preparation/base_network.rst index 85e19707..fd3afac3 100644 --- a/doc/preparation/base_network.rst +++ b/doc/preparation/base_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_bus_regions.rst b/doc/preparation/build_bus_regions.rst index 7bb761e8..70f2924f 100644 --- a/doc/preparation/build_bus_regions.rst +++ b/doc/preparation/build_bus_regions.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_cutout.rst b/doc/preparation/build_cutout.rst index 2e6cb4a3..0dc71d3a 100644 --- a/doc/preparation/build_cutout.rst +++ b/doc/preparation/build_cutout.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_hydro_profile.rst b/doc/preparation/build_hydro_profile.rst index b940c39f..0217dbda 100644 --- a/doc/preparation/build_hydro_profile.rst +++ b/doc/preparation/build_hydro_profile.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_load_data.rst b/doc/preparation/build_load_data.rst index 3a42410e..723d71ac 100644 --- a/doc/preparation/build_load_data.rst +++ b/doc/preparation/build_load_data.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2020-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2020-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_natura_raster.rst b/doc/preparation/build_natura_raster.rst index b60be2f4..e5744843 100644 --- a/doc/preparation/build_natura_raster.rst +++ b/doc/preparation/build_natura_raster.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_powerplants.rst b/doc/preparation/build_powerplants.rst index e3d5dcef..625d7d9b 100644 --- a/doc/preparation/build_powerplants.rst +++ b/doc/preparation/build_powerplants.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_renewable_profiles.rst b/doc/preparation/build_renewable_profiles.rst index 82ac1312..1d8a7e0b 100644 --- a/doc/preparation/build_renewable_profiles.rst +++ b/doc/preparation/build_renewable_profiles.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_shapes.rst b/doc/preparation/build_shapes.rst index fc142879..ecbf2685 100644 --- a/doc/preparation/build_shapes.rst +++ b/doc/preparation/build_shapes.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/build_ship_raster.rst b/doc/preparation/build_ship_raster.rst new file mode 100644 index 00000000..5a38195e --- /dev/null +++ b/doc/preparation/build_ship_raster.rst @@ -0,0 +1,12 @@ +.. + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors + + SPDX-License-Identifier: CC-BY-4.0 + +.. _ship: + +Rule ``build_ship_raster`` +=============================== + + +.. automodule:: build_ship_raster diff --git a/doc/preparation/prepare_links_p_nom.rst b/doc/preparation/prepare_links_p_nom.rst index 78e7324d..37690939 100644 --- a/doc/preparation/prepare_links_p_nom.rst +++ b/doc/preparation/prepare_links_p_nom.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/preparation/retrieve.rst b/doc/preparation/retrieve.rst index a10c96fa..8911309f 100644 --- a/doc/preparation/retrieve.rst +++ b/doc/preparation/retrieve.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -77,3 +77,55 @@ This rule, as a substitute for :mod:`build_natura_raster`, downloads an already .. seealso:: For details see :mod:`build_natura_raster`. + + +Rule ``retrieve_load_data`` +--------------------------- + +This rule downloads hourly electric load data for each country from the `OPSD platform `_. + +**Relevant Settings** + +None. + +**Outputs** + +- ``data/load_raw.csv`` + + +Rule ``retrieve_cost_data`` +--------------------------- + +This rule downloads techno-economic assumptions from the `technology-data repository `_. + +**Relevant Settings** + +.. code:: yaml + + enable: + retrieve_cost_data: + + costs: + year: + version: + +.. seealso:: + Documentation of the configuration file ``config.yaml`` at + :ref:`_costs_cf` + +**Outputs** + +- ``resources/costs.csv`` + +Rule ``retrieve_ship_raster`` +----------------------------- + +This rule downloads data on global shipping traffic density from the `World Bank Data Catalogue `_. + +**Relevant Settings** + +None. + +**Outputs** + +- ``data/shipdensity_global.zip`` diff --git a/doc/release_notes.rst b/doc/release_notes.rst index adcbfb58..70442818 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -10,9 +10,16 @@ Release Notes Upcoming Release ================ -* Fix EQ constraint for the case no hydro inflow is available +* Fix EQ constraint for the case no hydro inflow is available. + +* Bugfix in the reserve constraint will increase demand related reserve requirements. + +* Configuration defaults to new ``technology-data`` version 0.5.0. + +* Updated documentation. + +* Added control for resolution of land eligibility analysis. -* Bugfix in the reserve constraint will increase demand related reserve requirements **New Features** @@ -24,6 +31,8 @@ Upcoming Release The previous setting ``None`` is no longer supported and replaced by ``both``, see the `pandas documentation `_. Minimum ``pandas`` version now required is `>= 1.4`. +* The configuration setting ``summary_dir`` was removed. + PyPSA-Eur 0.6.1 (20th September 2022) ===================================== diff --git a/doc/requirements.txt b/doc/requirements.txt index e048b4af..9aaaa05d 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,15 +1,15 @@ -# SPDX-FileCopyrightText: : 2019-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2019-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 sphinx -sphinx_rtd_theme +sphinx_book_theme pypsa vresutils>=0.3.1 -powerplantmatching>=0.4.8 -atlite>=0.2.2 -dask<=2021.3.1 +powerplantmatching>=0.5.5 +atlite>=0.2.9 +dask # cartopy scikit-learn diff --git a/doc/simplification.rst b/doc/simplification.rst index 3ac12d4f..aa6d2b0d 100644 --- a/doc/simplification.rst +++ b/doc/simplification.rst @@ -1,7 +1,7 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/simplification/add_extra_components.rst b/doc/simplification/add_extra_components.rst index 8ca30574..bf817afd 100644 --- a/doc/simplification/add_extra_components.rst +++ b/doc/simplification/add_extra_components.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/simplification/cluster_network.rst b/doc/simplification/cluster_network.rst index 80c9068d..5d5c041c 100644 --- a/doc/simplification/cluster_network.rst +++ b/doc/simplification/cluster_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/simplification/prepare_network.rst b/doc/simplification/prepare_network.rst index 037f8190..0668e972 100644 --- a/doc/simplification/prepare_network.rst +++ b/doc/simplification/prepare_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/simplification/simplify_network.rst b/doc/simplification/simplify_network.rst index 9bbd66c6..452e5fe1 100644 --- a/doc/simplification/simplify_network.rst +++ b/doc/simplification/simplify_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/solving.rst b/doc/solving.rst index 55707d79..6f215904 100644 --- a/doc/solving.rst +++ b/doc/solving.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/solving/solve_network.rst b/doc/solving/solve_network.rst index 4fe18368..afbc7634 100644 --- a/doc/solving/solve_network.rst +++ b/doc/solving/solve_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/solving/solve_operations_network.rst b/doc/solving/solve_operations_network.rst index d51fd5ab..67cb51ec 100644 --- a/doc/solving/solve_operations_network.rst +++ b/doc/solving/solve_operations_network.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/doc/tutorial.rst b/doc/tutorial.rst index 297c2c10..a3dead1f 100644 --- a/doc/tutorial.rst +++ b/doc/tutorial.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 @@ -37,7 +37,7 @@ To run the tutorial, use this as your configuration file ``config.yaml``. This configuration is set to download a reduced data set via the rules :mod:`retrieve_databundle`, :mod:`retrieve_natura_raster`, :mod:`retrieve_cutout` totalling at less than 250 MB. -The full set of data dependencies would consume 5.3 GB. +The full set of data dependencies would take 5.3 GB. For more information on the data dependencies of PyPSA-Eur, continue reading :ref:`data`. How to customise PyPSA-Eur? @@ -107,8 +107,8 @@ on the commercial solvers Gurobi or CPLEX (for which free academic licenses are Alternatively, choose another installed solver in the ``config.yaml`` at ``solving: solver:``. -Note, that we only note major changes to the provided default configuration that is comprehensibly documented in :ref:`config`. -There are many more configuration options beyond what is adapted for the tutorial! +Note, that we only focus on changes relative to the default configuration. +There are many more configuration options, which are documented at :ref:`config`. How to use the ``snakemake`` rules? =================================== @@ -132,8 +132,6 @@ orders ``snakemake`` to run the script ``solve_network`` that produces the solve :start-at: rule solve_network: :end-before: rule solve_operations_network: -.. until https://github.com/snakemake/snakemake/issues/46 closed - This triggers a workflow of multiple preceding jobs that depend on each rule's inputs and outputs: .. graphviz:: @@ -196,57 +194,47 @@ In the terminal, this will show up as a list of jobs to be run: .. code:: bash Building DAG of jobs... - Using shell: /bin/bash - Provided cores: 1 - Rules claiming more threads will be scaled down. - Unlimited resources: mem - Job counts: - count jobs - 1 add_electricity - 1 base_network - 1 build_bus_regions - 4 build_renewable_profiles - 1 build_shapes - 1 cluster_network - 1 prepare_network - 1 simplify_network - 1 solve_network - 12 + Job stats: + job count min threads max threads + ------------------------ ------- ------------- ------------- + add_electricity 1 1 1 + add_extra_components 1 1 1 + base_network 1 1 1 + build_bus_regions 1 1 1 + build_hydro_profile 1 1 1 + build_load_data 1 1 1 + build_powerplants 1 1 1 + build_renewable_profiles 4 1 1 + build_shapes 1 1 1 + build_ship_raster 1 1 1 + cluster_network 1 1 1 + prepare_network 1 1 1 + retrieve_cost_data 1 1 1 + retrieve_databundle 1 1 1 + retrieve_natura_raster 1 1 1 + simplify_network 1 1 1 + solve_network 1 1 1 + total 20 1 1 + ``snakemake`` then runs these jobs in the correct order. -A job (here ``simplify_network``) will display its attributes and normally some logs in the terminal: +A job (here ``simplify_network``) will display its attributes and normally some logs below this block: .. code:: bash - [] + [Mon Jan 1 00:00:00 2023] rule simplify_network: input: networks/elec.nc, resources/costs.csv, resources/regions_onshore.geojson, resources/regions_offshore.geojson - output: networks/elec_s.nc, resources/regions_onshore_elec_s.geojson, resources/regions_offshore_elec_s.geojson, resources/clustermaps_elec_s.h5 - jobid: 3 + output: networks/elec_s.nc, resources/regions_onshore_elec_s.geojson, resources/regions_offshore_elec_s.geojson, resources/busmap_elec_s.csv, resources/connection_costs_s.csv + log: logs/simplify_network/elec_s.log + jobid: 4 benchmark: benchmarks/simplify_network/elec_s - wildcards: network=elec, simpl= - resources: mem=4000 + reason: Missing output files: resources/busmap_elec_s.csv, resources/regions_onshore_elec_s.geojson, networks/elec_s.nc, resources/regions_offshore_elec_s.geojson; Input files updated by another job: resources/regions_offshore.geojson, resources/regions_onshore.geojson, resources/costs.csv, networks/elec.nc + wildcards: simpl= + resources: tmpdir=/tmp, mem_mb=4000, mem_mib=3815 - INFO:pypsa.io:Imported network elec.nc has buses, carriers, generators, lines, links, loads, storage_units, transformers - INFO:__main__:Mapping all network lines onto a single 380kV layer - INFO:__main__:Simplifying connected link components - INFO:__main__:Removing stubs - INFO:__main__:Displacing offwind-ac generator(s) and adding connection costs to capital_costs: 20128 Eur/MW/a for `5718 offwind-ac` - INFO:__main__:Displacing offwind-dc generator(s) and adding connection costs to capital_costs: 14994 Eur/MW/a for `5718 offwind-dc`, 26939 Eur/MW/a for `5724 offwind-dc`, 29621 Eur/MW/a for `5725 offwind-dc` - INFO:pypsa.io:Exported network elec_s.nc has lines, carriers, links, storage_units, loads, buses, generators - [] - Finished job 3. - 9 of 12 steps (75%) done - -Once the whole worktree is finished, it should show state so in the terminal: - -.. code:: bash - - Finished job 0. - 12 of 12 steps (100%) done - Complete log: /home/XXXX/pypsa-eur/.snakemake/log/20XX-XX-XXTXX.snakemake.log - snakemake results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc 519,84s user 34,26s system 242% cpu 3:48,83 total +Once the whole worktree is finished, it should state so in the terminal. You will notice that many intermediate stages are saved, namely the outputs of each individual ``snakemake`` rule. diff --git a/doc/wildcards.rst b/doc/wildcards.rst index 14b71c09..06ed9519 100644 --- a/doc/wildcards.rst +++ b/doc/wildcards.rst @@ -1,5 +1,5 @@ .. - SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors + SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors SPDX-License-Identifier: CC-BY-4.0 diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index 1c7aeaad..f1f1958e 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 diff --git a/envs/environment.yaml b/envs/environment.yaml index 4bdaf48c..3e366074 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT @@ -24,7 +24,7 @@ dependencies: - yaml - pytables - lxml -- powerplantmatching>=0.5.4 +- powerplantmatching>=0.5.5 - numpy<1.24 - pandas>=1.4 - geopandas>=0.11.0 diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 127e42a8..5032cdf9 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 7407dafa..88ea2ada 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/add_extra_components.py b/scripts/add_extra_components.py index ba784096..b507148d 100644 --- a/scripts/add_extra_components.py +++ b/scripts/add_extra_components.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/base_network.py b/scripts/base_network.py index 565d4907..609b2818 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_bus_regions.py b/scripts/build_bus_regions.py index ef4cc396..47bc9d4d 100644 --- a/scripts/build_bus_regions.py +++ b/scripts/build_bus_regions.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_cutout.py b/scripts/build_cutout.py index 0d852b5b..9df4e6de 100644 --- a/scripts/build_cutout.py +++ b/scripts/build_cutout.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_hydro_profile.py b/scripts/build_hydro_profile.py index 0e3f877f..3e36a1b9 100644 --- a/scripts/build_hydro_profile.py +++ b/scripts/build_hydro_profile.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_natura_raster.py b/scripts/build_natura_raster.py index 33e4cf99..8a20e859 100644 --- a/scripts/build_natura_raster.py +++ b/scripts/build_natura_raster.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_powerplants.py b/scripts/build_powerplants.py index f65b4966..4158349e 100755 --- a/scripts/build_powerplants.py +++ b/scripts/build_powerplants.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_renewable_profiles.py b/scripts/build_renewable_profiles.py index 22b76814..c8a0fc42 100644 --- a/scripts/build_renewable_profiles.py +++ b/scripts/build_renewable_profiles.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index 42118b7d..6becdaca 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors +# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors # # SPDX-License-Identifier: MIT diff --git a/scripts/build_ship_raster.py b/scripts/build_ship_raster.py index 0ae134fd..52c48b03 100644 --- a/scripts/build_ship_raster.py +++ b/scripts/build_ship_raster.py @@ -4,11 +4,11 @@ # SPDX-License-Identifier: MIT """ -Transforms the global ship density data from -https://datacatalog.worldbank.org/search/dataset/0037580/Global-Shipping- -Traffic-Density to the size of the considered cutout. The global ship density -raster is later used for the exclusion when calculating the offshore -potentials. +Transforms the global ship density data from the `World Bank Data Catalogue. + +`_ +to the size of the considered cutout. The global ship density raster is later +used for the exclusion when calculating the offshore potentials. Relevant Settings ----------------- @@ -26,12 +26,15 @@ Relevant Settings Inputs ------ -- ``data/bundle/shipdensity/shipdensity_global.zip``: `Global ship density from `. +- ``data/bundle/shipdensity/shipdensity_global.zip``: `Global ship density from + `_. Outputs ------- -- ``resources/europe_shipdensity_raster.nc``: Reduced version of `Global ship density from Date: Thu, 16 Feb 2023 11:51:39 +0100 Subject: [PATCH 20/48] uncomment shutil --- Snakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Snakefile b/Snakefile index cf6eca97..0ebfe89d 100644 --- a/Snakefile +++ b/Snakefile @@ -9,8 +9,8 @@ from snakemake.remote.HTTP import RemoteProvider as HTTPRemoteProvider HTTP = HTTPRemoteProvider() -# if not exists("config.yaml"): -# copyfile("config.default.yaml", "config.yaml") +if not exists("config.yaml"): + copyfile("config.default.yaml", "config.yaml") configfile: "config.yaml" From b6732bf6c402647cd1b9a3d2cbc006892d93c9cb Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 12:37:30 +0100 Subject: [PATCH 21/48] documentation updates --- doc/conf.py | 5 +- doc/configuration.rst | 4 +- doc/img/workflow.png | Bin 157611 -> 210528 bytes doc/introduction.rst | 5 +- doc/preparation/retrieve.rst | 2 +- doc/release_notes.rst | 35 ++++------ doc/tutorial.rst | 128 +++++++++++++++++++++++------------ doc/wildcards.rst | 2 +- scripts/build_ship_raster.py | 12 ++-- 9 files changed, 115 insertions(+), 78 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 5d723480..89aa5b57 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -136,6 +136,7 @@ html_theme = "sphinx_book_theme" html_theme_options = { "repository_url": "https://github.com/pypsa/pypsa-eur", "use_repository_button": True, + "show_navbar_depth": 2, } @@ -144,7 +145,7 @@ html_theme_options = { # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -html_title = "PyPSA-Eur: An Open Optimisation Model of the European Transmission System" +html_title = "PyPSA-Eur" # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = None @@ -159,7 +160,7 @@ html_logo = "img/pypsa-logo.png" # html_favicon = None # These folders are copied to the documentation's HTML output -html_static_path = ["_static"] +# html_static_path = ["_static"] # These paths are either relative to html_static_path # or fully qualified paths (eg. https://...) diff --git a/doc/configuration.rst b/doc/configuration.rst index 7bb8139e..76debebf 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -52,7 +52,7 @@ facilitate running multiple scenarios through a single command .. code:: bash - snakemake -j 1 solve_all_networks + snakemake -call solve_all_networks For each wildcard, a **list of values** is provided. The rule ``solve_all_networks`` will trigger the rules for creating ``results/networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc`` for **all combinations** of the provided wildcard values as defined by Python's `itertools.product(...) `_ function that snakemake's `expand(...) function `_ uses. @@ -192,7 +192,7 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia .. _lines_cf: ``conventional`` -============= +================ Define additional generator attribute for conventional carrier types. If a scalar value is given it is applied to all generators. However if a string starting with "data/" is given, the value is interpreted as a path to a csv file with country specific values. Then, the values are read in and applied to all generators of the given carrier in the given country. Note that the value(s) overwrite the existing values in the corresponding section of the ``generators`` dataframe. diff --git a/doc/img/workflow.png b/doc/img/workflow.png index ea4e0ef597345f174c005c228bc2e01db341cd45..860902707ce354795f263c8d5b3dfdb98c9fabb4 100644 GIT binary patch literal 210528 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
    #l`Iz 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 $k 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 literal 157611 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 z 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

    &lchd|C9m4HtL42heG^niITEj#OjdLIb7{x@zb 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 diff --git a/doc/introduction.rst b/doc/introduction.rst index 835dd59c..c0ab441a 100644 --- a/doc/introduction.rst +++ b/doc/introduction.rst @@ -28,17 +28,18 @@ For instance an invocation to .. code:: bash - .../pypsa-eur % snakemake -j 1 networks/elec_s_128.nc + .../pypsa-eur % snakemake -call results/networks/elec_s_128_ec_lvopt_Co2L-3H.nc follows this dependency graph: .. image:: img/workflow.png + :class: full-width The **blocks** represent the individual rules which are required to create the file ``networks/elec_s_128.nc``. The **arrows** indicate the outputs from preceding rules which a particular rule takes as input data. .. note:: The dependency graph shown above was generated using - ``snakemake --dag networks/elec_s_128.nc | dot -Tpng > workflow.png`` + ``snakemake --dag results/networks/elec_s_128_ec_lvopt_Co2L-3H.nc -F | sed -n "/digraph/,/}/p" | dot -Tpng -o workflow.png`` For the use of ``snakemake``, it makes sense to familiarize oneself quickly with its `basic tutorial `_ and then read carefully through the section `Executing Snakemake `_, noting the arguments ``-j``, ``-n``, ``-r``, but also ``--dag``, ``-R`` and ``-t``. diff --git a/doc/preparation/retrieve.rst b/doc/preparation/retrieve.rst index 8911309f..7c0db92a 100644 --- a/doc/preparation/retrieve.rst +++ b/doc/preparation/retrieve.rst @@ -111,7 +111,7 @@ This rule downloads techno-economic assumptions from the `technology-data reposi .. seealso:: Documentation of the configuration file ``config.yaml`` at - :ref:`_costs_cf` + :ref:`costs_cf` **Outputs** diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 70442818..454d243f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -84,27 +84,20 @@ PyPSA-Eur 0.5.0 (27th July 2022) **New Features** * New network topology extracted from the ENTSO-E interactive map. - * Added existing renewable capacities for all countries based on IRENA statistics (IRENASTAT) using new ``powerplantmatching`` version: - * The corresponding ``config`` entries changed, cf. ``config.default.yaml``: - * old: ``estimate_renewable_capacities_from_capacity_stats`` - * new: ``estimate_renewable_capacities`` - * The estimation is endabled by setting the subkey ``enable`` to ``True``. - * Configuration of reference year for capacities can be configured (default: - ``2020``) - * The list of renewables provided by the OPSD database can be used as a basis, - using the tag ``from_opsd: True``. This adds the renewables from the - database and fills up the missing capacities with the heuristic - distribution. - * Uniform expansion limit of renewable build-up based on existing capacities - can be configured using ``expansion_limit`` option (default: ``false``; - limited to determined renewable potentials) - * Distribution of country-level capacities proportional to maximum annual - energy yield for each bus region - * The config key ``renewable_capacities_from_OPSD`` is deprecated and was moved - under the section, ``estimate_renewable_capacities``. To enable it, set - ``from_opsd`` to ``True``. +* The corresponding ``config`` entries changed from ``estimate_renewable_capacities_from_capacity_stats`` to ``estimate_renewable_capacities``. +* The estimation is endabled by setting the subkey ``enable`` to ``True``. +* Configuration of reference year for capacities can be configured (default: ``2020``) +* The list of renewables provided by the OPSD database can be used as a basis, using the tag ``from_opsd: True``. This adds the renewables from the database and fills up the missing capacities with the heuristic distribution. +* Uniform expansion limit of renewable build-up based on existing capacities + can be configured using ``expansion_limit`` option (default: ``false``; + limited to determined renewable potentials) +* Distribution of country-level capacities proportional to maximum annual + energy yield for each bus region +* The config key ``renewable_capacities_from_OPSD`` is deprecated and was moved + under the section, ``estimate_renewable_capacities``. To enable it, set + ``from_opsd`` to ``True``. * Add operational reserve margin constraint analogous to `GenX implementation `_. Can be activated @@ -566,7 +559,7 @@ Release Process * Update ``envs/environment.fixed.yaml`` via ``conda env export -n pypsa-eur -f envs/environment.fixed.yaml --no-builds`` - from an up-to-date `pypsa-eur` environment. + from an up-to-date ``pypsa-eur`` environment. * Update version number in ``doc/conf.py``, ``CITATION.cff`` and ``*config.*.yaml``. @@ -577,7 +570,7 @@ Release Process * Upload code to `zenodo code repository `_ with `MIT license `_. -* Create pre-built networks for ``config.default.yaml`` by running ``snakemake -j 1 extra_components_all_networks``. +* Create pre-built networks for ``config.default.yaml`` by running ``snakemake -call extra_components_all_networks``. * Upload pre-built networks to `zenodo data repository `_ with `CC BY 4.0 `_ license. diff --git a/doc/tutorial.rst b/doc/tutorial.rst index a3dead1f..507102db 100644 --- a/doc/tutorial.rst +++ b/doc/tutorial.rst @@ -62,7 +62,7 @@ It is also possible to allow less or more carbon-dioxide emissions. Here, we lim .. literalinclude:: ../config.tutorial.yaml :language: yaml :start-at: electricity: - :end-before: exentable_carriers: + :end-before: extendable_carriers: PyPSA-Eur also includes a database of existing conventional powerplants. We can select which types of powerplants we like to be included: @@ -124,7 +124,7 @@ clustered down to 6 buses and every 24 hours aggregated to one snapshot. The com .. code:: bash - .../pypsa-eur % snakemake -j 1 results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc + .../pypsa-eur % snakemake -call results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc orders ``snakemake`` to run the script ``solve_network`` that produces the solved network and stores it in ``.../pypsa-eur/results/networks`` with the name ``elec_s_6_ec_lcopt_Co2L-24H.nc``: @@ -135,56 +135,96 @@ orders ``snakemake`` to run the script ``solve_network`` that produces the solve This triggers a workflow of multiple preceding jobs that depend on each rule's inputs and outputs: .. graphviz:: + :class: full-width :align: center digraph snakemake_dag { graph[bgcolor=white, margin=0]; - node[shape=box, style=rounded, fontname=sans, fontsize=10, penwidth=2]; + node[shape=box, style=rounded, fontname=sans, fontsize=10, penwidth=2]; edge[penwidth=2, color=grey]; - 0[label = "solve_network", color = "0.10 0.6 0.85", style="rounded"]; - 1[label = "prepare_network\nll: copt\nopts: Co2L-24H", color = "0.13 0.6 0.85", style="rounded"]; - 2[label = "cluster_network\nclusters: 6", color = "0.51 0.6 0.85", style="rounded"]; - 3[label = "simplify_network\nnetwork: elec\nsimpl: ", color = "0.00 0.6 0.85", style="rounded"]; - 4[label = "add_electricity", color = "0.60 0.6 0.85", style="rounded"]; - 5[label = "build_bus_regions", color = "0.19 0.6 0.85", style="rounded"]; - 6[label = "base_network", color = "0.38 0.6 0.85", style="rounded"]; - 7[label = "build_shapes", color = "0.03 0.6 0.85", style="rounded"]; - 8[label = "build_renewable_profiles\ntechnology: onwind", color = "0.48 0.6 0.85", style="rounded"]; - 9[label = "build_renewable_profiles\ntechnology: offwind-ac", color = "0.48 0.6 0.85", style="rounded"]; - 10[label = "build_renewable_profiles\ntechnology: offwind-dc", color = "0.48 0.6 0.85", style="rounded"]; - 11[label = "build_renewable_profiles\ntechnology: solar", color = "0.48 0.6 0.85", style="rounded"]; - 12[label = "build_cutout\ncutout: europe-2013-era5", color = "0.35 0.6 0.85", style="rounded,dashed"]; + 0[label = "solve_network", color = "0.21 0.6 0.85", style="rounded"]; + 1[label = "prepare_network\nll: copt\nopts: Co2L-24H", color = "0.02 0.6 0.85", style="rounded"]; + 2[label = "add_extra_components", color = "0.37 0.6 0.85", style="rounded"]; + 3[label = "cluster_network\nclusters: 6", color = "0.39 0.6 0.85", style="rounded"]; + 4[label = "simplify_network\nsimpl: ", color = "0.11 0.6 0.85", style="rounded"]; + 5[label = "add_electricity", color = "0.23 0.6 0.85", style="rounded"]; + 6[label = "build_renewable_profiles\ntechnology: onwind", color = "0.57 0.6 0.85", style="rounded"]; + 7[label = "base_network", color = "0.09 0.6 0.85", style="rounded"]; + 8[label = "build_shapes", color = "0.41 0.6 0.85", style="rounded"]; + 9[label = "retrieve_databundle", color = "0.28 0.6 0.85", style="rounded"]; + 10[label = "retrieve_natura_raster", color = "0.62 0.6 0.85", style="rounded"]; + 11[label = "build_bus_regions", color = "0.53 0.6 0.85", style="rounded"]; + 12[label = "retrieve_cutout\ncutout: europe-2013-era5", color = "0.05 0.6 0.85", style="rounded,dashed"]; + 13[label = "build_renewable_profiles\ntechnology: offwind-ac", color = "0.57 0.6 0.85", style="rounded"]; + 14[label = "build_ship_raster", color = "0.64 0.6 0.85", style="rounded"]; + 15[label = "retrieve_ship_raster", color = "0.07 0.6 0.85", style="rounded,dashed"]; + 16[label = "retrieve_cutout\ncutout: europe-2013-sarah", color = "0.05 0.6 0.85", style="rounded,dashed"]; + 17[label = "build_renewable_profiles\ntechnology: offwind-dc", color = "0.57 0.6 0.85", style="rounded"]; + 18[label = "build_renewable_profiles\ntechnology: solar", color = "0.57 0.6 0.85", style="rounded"]; + 19[label = "build_hydro_profile", color = "0.44 0.6 0.85", style="rounded"]; + 20[label = "retrieve_cost_data", color = "0.30 0.6 0.85", style="rounded"]; + 21[label = "build_powerplants", color = "0.16 0.6 0.85", style="rounded"]; + 22[label = "build_load_data", color = "0.00 0.6 0.85", style="rounded"]; + 23[label = "retrieve_load_data", color = "0.34 0.6 0.85", style="rounded,dashed"]; 1 -> 0 2 -> 1 + 20 -> 1 3 -> 2 + 20 -> 2 4 -> 3 - 5 -> 3 - 6 -> 4 + 20 -> 3 5 -> 4 - 7 -> 4 - 8 -> 4 - 9 -> 4 - 10 -> 4 + 20 -> 4 11 -> 4 - 7 -> 5 6 -> 5 + 13 -> 5 + 17 -> 5 + 18 -> 5 + 19 -> 5 + 7 -> 5 + 20 -> 5 + 11 -> 5 + 21 -> 5 + 9 -> 5 + 22 -> 5 + 8 -> 5 7 -> 6 - 6 -> 8 - 7 -> 8 - 5 -> 8 - 12 -> 8 - 6 -> 9 - 7 -> 9 - 5 -> 9 - 12 -> 9 - 6 -> 10 - 7 -> 10 - 5 -> 10 - 12 -> 10 - 6 -> 11 + 9 -> 6 + 10 -> 6 + 8 -> 6 + 11 -> 6 + 12 -> 6 + 8 -> 7 + 9 -> 8 + 8 -> 11 7 -> 11 - 5 -> 11 - 12 -> 11 + 7 -> 13 + 9 -> 13 + 10 -> 13 + 14 -> 13 + 8 -> 13 + 11 -> 13 + 12 -> 13 + 15 -> 14 + 12 -> 14 + 16 -> 14 + 7 -> 17 + 9 -> 17 + 10 -> 17 + 14 -> 17 + 8 -> 17 + 11 -> 17 + 12 -> 17 + 7 -> 18 + 9 -> 18 + 10 -> 18 + 8 -> 18 + 11 -> 18 + 16 -> 18 + 8 -> 19 + 12 -> 19 + 7 -> 21 + 23 -> 22 } | @@ -242,15 +282,15 @@ You can produce any output file occurring in the ``Snakefile`` by running .. code:: bash - .../pypsa-eur % snakemake -j 1 + .../pypsa-eur % snakemake -call For example, you can explore the evolution of the PyPSA networks by running -#. ``.../pypsa-eur % snakemake -j 1 networks/base.nc`` -#. ``.../pypsa-eur % snakemake -j 1 networks/elec.nc`` -#. ``.../pypsa-eur % snakemake -j 1 networks/elec_s.nc`` -#. ``.../pypsa-eur % snakemake -j 1 networks/elec_s_6.nc`` -#. ``.../pypsa-eur % snakemake -j 1 networks/elec_s_6_ec_lcopt_Co2L-24H.nc`` +#. ``.../pypsa-eur % snakemake -call networks/base.nc`` +#. ``.../pypsa-eur % snakemake -call networks/elec.nc`` +#. ``.../pypsa-eur % snakemake -call networks/elec_s.nc`` +#. ``.../pypsa-eur % snakemake -call networks/elec_s_6.nc`` +#. ``.../pypsa-eur % snakemake -call networks/elec_s_6_ec_lcopt_Co2L-24H.nc`` There's a special rule: If you simply run diff --git a/doc/wildcards.rst b/doc/wildcards.rst index 06ed9519..c506a541 100644 --- a/doc/wildcards.rst +++ b/doc/wildcards.rst @@ -107,7 +107,7 @@ in Germany (in the solution for Europe) use: .. code:: bash - snakemake -j 1 results/summaries/elec_s_all_lall_Co2L-3H_DE + snakemake -call results/summaries/elec_s_all_lall_Co2L-3H_DE .. _cutout_wc: diff --git a/scripts/build_ship_raster.py b/scripts/build_ship_raster.py index 52c48b03..d290e616 100644 --- a/scripts/build_ship_raster.py +++ b/scripts/build_ship_raster.py @@ -26,15 +26,17 @@ Relevant Settings Inputs ------ -- ``data/bundle/shipdensity/shipdensity_global.zip``: `Global ship density from - `_. +- ``data/bundle/shipdensity/shipdensity_global.zip``: Global shipping traffic + density from `World Bank Data Catalogue + `_. Outputs ------- -- ``resources/europe_shipdensity_raster.nc``: Reduced version of `Global ship - density from `_ to reduce + computation time. Description ----------- From 03ac301238c1bad53e7c9ccd5f765868f918034e Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 14:04:13 +0100 Subject: [PATCH 22/48] build_shapes: crs --- scripts/build_shapes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/build_shapes.py b/scripts/build_shapes.py index 6becdaca..3daed847 100644 --- a/scripts/build_shapes.py +++ b/scripts/build_shapes.py @@ -235,9 +235,11 @@ def nuts3(country_shapes, nuts3, nuts3pop, nuts3gdp, ch_cantons, ch_popgdp): manual = gpd.GeoDataFrame( [["BA1", "BA", 3871.0], ["RS1", "RS", 7210.0], ["AL1", "AL", 2893.0]], columns=["NUTS_ID", "country", "pop"], - ).set_index("NUTS_ID") + ) manual["geometry"] = manual["country"].map(country_shapes) manual = manual.dropna() + manual = manual.set_index("NUTS_ID") + manual = manual.set_crs("ETRS89") df = pd.concat([df, manual], sort=False) From e2d8f046eb73a0dc8cf554c7915328389f3e2d1a Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 14:17:10 +0100 Subject: [PATCH 23/48] update config files --- config.tutorial.yaml | 26 +++++++++++++++++++++++--- test/config.test1.yaml | 27 ++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/config.tutorial.yaml b/config.tutorial.yaml index ab8d54a4..e73b372f 100755 --- a/config.tutorial.yaml +++ b/config.tutorial.yaml @@ -50,9 +50,29 @@ electricity: battery: 6 H2: 168 - powerplants_filter: false # use pandas query strings here, e.g. Country not in ['Germany'] - custom_powerplants: false # use pandas query strings here, e.g. Country in ['Germany'] - conventional_carriers: [coal, CCGT] # [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] + # use pandas query strings here, e.g. Country not in ['Germany'] + powerplants_filter: (DateOut >= 2022 or DateOut != DateOut) + # use pandas query strings here, e.g. Country in ['Germany'] + custom_powerplants: false + + conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] + renewable_carriers: [solar, onwind, offwind-ac, offwind-dc, hydro] + + estimate_renewable_capacities: + enable: true + # Add capacities from OPSD data + from_opsd: true + # Renewable capacities are based on existing capacities reported by IRENA + year: 2020 + # Artificially limit maximum capacities to factor * (IRENA capacities), + # i.e. 110% of 's capacities => expansion_limit: 1.1 + # false: Use estimated renewable potentials determine by the workflow + expansion_limit: false + technology_mapping: + # Wind is the Fueltype in powerplantmatching, onwind, offwind-{ac,dc} the carrier in PyPSA-Eur + Offshore: [offwind-ac, offwind-dc] + Onshore: [onwind] + PV: [solar] atlite: nprocesses: 4 diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 65db57c5..399d2265 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -48,9 +48,30 @@ electricity: battery: 6 H2: 168 - powerplants_filter: false # use pandas query strings here, e.g. Country not in ['Germany'] - custom_powerplants: false # use pandas query strings here, e.g. Country in ['Germany'] - conventional_carriers: [coal, CCGT] # [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] + # use pandas query strings here, e.g. Country not in ['Germany'] + powerplants_filter: (DateOut >= 2022 or DateOut != DateOut) + # use pandas query strings here, e.g. Country in ['Germany'] + custom_powerplants: false + + conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] + renewable_carriers: [solar, onwind, offwind-ac, offwind-dc, hydro] + + estimate_renewable_capacities: + enable: true + # Add capacities from OPSD data + from_opsd: true + # Renewable capacities are based on existing capacities reported by IRENA + year: 2020 + # Artificially limit maximum capacities to factor * (IRENA capacities), + # i.e. 110% of 's capacities => expansion_limit: 1.1 + # false: Use estimated renewable potentials determine by the workflow + expansion_limit: false + technology_mapping: + # Wind is the Fueltype in powerplantmatching, onwind, offwind-{ac,dc} the carrier in PyPSA-Eur + Offshore: [offwind-ac, offwind-dc] + Onshore: [onwind] + PV: [solar] + atlite: nprocesses: 4 From f7b1dd6882c88ff298d0172e5f0badeec5d32190 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 14:56:24 +0100 Subject: [PATCH 24/48] finalise release notes --- doc/release_notes.rst | 74 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 11 deletions(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 454d243f..f5048ad0 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,30 +10,82 @@ Release Notes Upcoming Release ================ -* Fix EQ constraint for the case no hydro inflow is available. +* new features -* Bugfix in the reserve constraint will increase demand related reserve requirements. -* Configuration defaults to new ``technology-data`` version 0.5.0. - -* Updated documentation. - -* Added control for resolution of land eligibility analysis. +PyPSA-Eur 0.7.0 (16th February 2023) +==================================== **New Features** -* Carriers of generators can now be excluded from aggregation in clustering network and simplify network. +* Carriers of generators can now be excluded from aggregation in clustering + network and simplify network (see ``exclude_carriers``). + +* Added control for removing stubs in :mod:`simplify_network` with options + ``remove_stubs`` and ``remove_stubs_across_countries``. + +* Add control for showing a progressbar in ``atlite`` processes + (``show_progress``). Disabling the progressbar saves a lot of time. + +* Added control for resolution of land eligibility analysis (see + ``excluder_resolution``). + **Breaking Changes** -* The config entry ``snapshots["closed"]`` was renamed to ``snapshots["inclusive"]`` to address the upstream deprecation with ``pandas=1.4``. - The previous setting ``None`` is no longer supported and replaced by ``both``, see the `pandas documentation `_. - Minimum ``pandas`` version now required is `>= 1.4`. +* The config entry ``snapshots: closed:`` was renamed to ``snapshots: + inclusive:`` to address the upstream deprecation with ``pandas=1.4``. The + previous setting ``None`` is no longer supported and replaced by ``both``, see + the `pandas documentation + `_. + Minimum version is now ``pandas>=1.4``. * The configuration setting ``summary_dir`` was removed. +**Changes** + +* Configuration defaults to new ``technology-data`` version 0.5.0. + +* Fixed CRS warnings when projection of datasets was not specified. + +* Cleaned shape unary unions. + +* Increased resource requirements for some rules. + +* Updated documentation. + +* The documentation now uses the ``sphinx_book_theme``. + + +**Bugs and Compatibility** + + +* Bugfix: Corrected extent of natural protection areas in :mod:`build_natura_raster`. + +* Bugfix: Use correct load variables for formulating reserve constraints. + +* Bugfix: Use all available energy-to-power ratios for hydropower plants. + +* Bugfix: The most recent processing of the ``entsoegridkit`` extract required + further manual corrections. Also, the connection points of TYNDP links were + corrected. + +* Bugfix: Handle absence of hydropower inflow in ``EQ`` constraint. + +* Compatibility with ``pyomo>=6.4.3`` in :mod:`cluster_network`. + +* Upgrade to ``shapely>=2``. + +* Updated version of CI cache action to version 3. +* +* Updated dependency constraints in ``environment.yaml``. + +* Address various deprecation warnings. + + + PyPSA-Eur 0.6.1 (20th September 2022) ===================================== From dc7194c068d76fba6809211911941341c8f837a3 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 15:34:18 +0100 Subject: [PATCH 25/48] bumb version number --- CITATION.cff | 2 +- doc/conf.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 57cc590f..f14890d6 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -6,7 +6,7 @@ cff-version: 1.1.0 message: "If you use this package, please cite the corresponding manuscript in Energy Strategy Reviews." title: "PyPSA-Eur: An open optimisation model of the European transmission system" repository: https://github.com/pypsa/pypsa-eur -version: 0.6.1 +version: 0.7.0 license: MIT journal: Energy Strategy Reviews doi: 10.1016/j.esr.2018.08.012 diff --git a/doc/conf.py b/doc/conf.py index 89aa5b57..e18c58dd 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -75,9 +75,9 @@ author = "Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtb # built documents. # # The short X.Y version. -version = "0.6" +version = "0.7" # The full version, including alpha/beta/rc tags. -release = "0.6.1" +release = "0.7.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 4afb05dc330508a36809f65dc240021bbf09349c Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 15:35:48 +0100 Subject: [PATCH 26/48] readthedocs: fix python version --- .readthedocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 4b7e3476..3d7a86b2 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -5,7 +5,7 @@ version: 2 python: - version: "3.10" + version: 3.8 install: - requirements: doc/requirements.txt system_packages: true From 7a51560c2b15dc9ed1ad097526d4100de3bb8803 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 16:04:49 +0100 Subject: [PATCH 27/48] update fixed versions environment.yaml --- envs/environment.fixed.yaml | 794 +++++++++++++++++------------------- 1 file changed, 371 insertions(+), 423 deletions(-) diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index f1f1958e..0c00b1d0 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -4,427 +4,375 @@ name: pypsa-eur channels: -- bioconda -- http://conda.anaconda.org/gurobi -- conda-forge -- defaults + - bioconda + - http://conda.anaconda.org/gurobi + - conda-forge + - defaults dependencies: -- _libgcc_mutex=0.1 -- _openmp_mutex=4.5 -- abseil-cpp=20210324.2 -- affine=2.3.1 -- alsa-lib=1.2.3.2 -- altair=4.2.0 -- ampl-mp=3.1.0 -- amply=0.1.5 -- anyio=3.6.1 -- appdirs=1.4.4 -- argon2-cffi=21.3.0 -- argon2-cffi-bindings=21.2.0 -- arrow-cpp=8.0.0 -- asttokens=2.0.5 -- atlite=0.2.9 -- attrs=21.4.0 -- aws-c-cal=0.5.11 -- aws-c-common=0.6.2 -- aws-c-event-stream=0.2.7 -- aws-c-io=0.10.5 -- aws-checksums=0.1.11 -- aws-sdk-cpp=1.8.186 -- babel=2.10.3 -- backcall=0.2.0 -- backports=1.0 -- backports.functools_lru_cache=1.6.4 -- beautifulsoup4=4.11.1 -- bleach=5.0.1 -- blinker=1.4 -- blosc=1.21.1 -- bokeh=2.4.3 -- boost-cpp=1.74.0 -- bottleneck=1.3.5 -- branca=0.5.0 -- brotli=1.0.9 -- brotli-bin=1.0.9 -- brotlipy=0.7.0 -- bzip2=1.0.8 -- c-ares=1.18.1 -- ca-certificates=2022.6.15.1 -- cachetools=5.0.0 -- cairo=1.16.0 -- cartopy=0.20.1 -- cdsapi=0.5.1 -- certifi=2022.6.15.1 -- cffi=1.15.1 -- cfitsio=4.0.0 -- cftime=1.6.1 -- charset-normalizer=2.1.0 -- click=8.0.4 -- click-plugins=1.1.1 -- cligj=0.7.2 -- cloudpickle=2.1.0 -- coin-or-cbc=2.10.8 -- coin-or-cgl=0.60.6 -- coin-or-clp=1.17.7 -- coin-or-osi=0.108.7 -- coin-or-utils=2.11.6 -- coincbc=2.10.8 -- colorama=0.4.5 -- colorcet=3.0.0 -- commonmark=0.9.1 -- configargparse=1.5.3 -- connection_pool=0.0.3 -- country_converter=0.7.4 -- cryptography=37.0.4 -- curl=7.83.1 -- cycler=0.11.0 -- cytoolz=0.12.0 -- dask=2022.7.0 -- dask-core=2022.7.0 -- dataclasses=0.8 -- datrie=0.8.2 -- dbus=1.13.6 -- debugpy=1.6.0 -- decorator=5.1.1 -- defusedxml=0.7.1 -- deprecation=2.1.0 -- descartes=1.1.0 -- distributed=2022.7.0 -- distro=1.6.0 -- docutils=0.19 -- dpath=2.0.6 -- entrypoints=0.4 -- entsoe-py=0.5.4 -- et_xmlfile=1.0.1 -- executing=0.8.3 -- expat=2.4.8 -- filelock=3.7.1 -- fiona=1.8.20 -- flit-core=3.7.1 -- folium=0.12.1.post1 -- font-ttf-dejavu-sans-mono=2.37 -- font-ttf-inconsolata=3.000 -- font-ttf-source-code-pro=2.038 -- font-ttf-ubuntu=0.83 -- fontconfig=2.14.0 -- fonts-conda-ecosystem=1 -- fonts-conda-forge=1 -- fonttools=4.34.4 -- freetype=2.10.4 -- freexl=1.0.6 -- fsspec=2022.5.0 -- future=0.18.2 -- gdal=3.3.3 -- geographiclib=1.52 -- geojson-rewind=1.0.2 -- geopandas=0.11.0 -- geopandas-base=0.11.0 -- geopy=2.2.0 -- geos=3.10.0 -- geotiff=1.7.0 -- gettext=0.19.8.1 -- gflags=2.2.2 -- giflib=5.2.1 -- gitdb=4.0.9 -- gitpython=3.1.27 -- glog=0.6.0 -- gmp=6.2.1 -- graphite2=1.3.13 -- grpc-cpp=1.45.2 -- gst-plugins-base=1.18.5 -- gstreamer=1.18.5 -- harfbuzz=2.9.1 -- hdf4=4.2.15 -- hdf5=1.12.1 -- heapdict=1.0.1 -- icu=68.2 -- idna=3.3 -- importlib-metadata=4.11.4 -- importlib_metadata=4.11.4 -- importlib_resources=5.8.0 -- iniconfig=1.1.1 -- ipykernel=6.15.1 -- ipython=8.4.0 -- ipython_genutils=0.2.0 -- ipywidgets=7.7.1 -- jedi=0.18.1 -- jinja2=3.1.2 -- joblib=1.1.0 -- jpeg=9e -- json-c=0.15 -- json5=0.9.5 -- jsonschema=4.7.2 -- jupyter_client=7.3.4 -- jupyter_core=4.10.0 -- jupyter_server=1.18.1 -- kealib=1.4.15 -- keyutils=1.6.1 -- kiwisolver=1.4.4 -- krb5=1.19.3 -- lcms2=2.12 -- ld_impl_linux-64=2.36.1 -- lerc=3.0 -- libblas=3.9.0 -- libbrotlicommon=1.0.9 -- libbrotlidec=1.0.9 -- libbrotlienc=1.0.9 -- libcblas=3.9.0 -- libclang=11.1.0 -- libcrc32c=1.1.2 -- libcurl=7.83.1 -- libdap4=3.20.6 -- libdeflate=1.12 -- libedit=3.1.20191231 -- libev=4.33 -- libevent=2.1.10 -- libffi=3.4.2 -- libgcc-ng=12.1.0 -- libgdal=3.3.3 -- libgfortran-ng=12.1.0 -- libgfortran5=12.1.0 -- libglib=2.72.1 -- libgomp=12.1.0 -- libgoogle-cloud=1.40.2 -- libiconv=1.16 -- libkml=1.3.0 -- liblapack=3.9.0 -- liblapacke=3.9.0 -- libllvm11=11.1.0 -- libnetcdf=4.8.1 -- libnghttp2=1.47.0 -- libnsl=2.0.0 -- libogg=1.3.4 -- libopenblas=0.3.20 -- libopus=1.3.1 -- libpng=1.6.37 -- libpq=13.5 -- libprotobuf=3.20.1 -- librttopo=1.1.0 -- libsodium=1.0.18 -- libspatialindex=1.9.3 -- libspatialite=5.0.1 -- libssh2=1.10.0 -- libstdcxx-ng=12.1.0 -- libthrift=0.16.0 -- libtiff=4.4.0 -- libutf8proc=2.7.0 -- libuuid=2.32.1 -- libvorbis=1.3.7 -- libwebp=1.2.2 -- libwebp-base=1.2.2 -- libxcb=1.13 -- libxkbcommon=1.0.3 -- libxml2=2.9.12 -- libxslt=1.1.33 -- libzip=1.9.2 -- libzlib=1.2.12 -- locket=1.0.0 -- lxml=4.8.0 -- lz4=4.0.0 -- lz4-c=1.9.3 -- lzo=2.10 -- mapclassify=2.4.3 -- markdown=3.4.1 -- markupsafe=2.1.1 -- matplotlib=3.5.2 -- matplotlib-base=3.5.2 -- matplotlib-inline=0.1.3 -- memory_profiler=0.60.0 -- metis=5.1.0 -- mistune=0.8.4 -- msgpack-python=1.0.4 -- mumps-include=5.2.1 -- mumps-seq=5.2.1 -- munch=2.5.0 -- munkres=1.1.4 -- mysql-common=8.0.29 -- mysql-libs=8.0.29 -- nbclassic=0.4.3 -- nbclient=0.6.6 -- nbconvert=6.5.0 -- nbconvert-core=6.5.0 -- nbconvert-pandoc=6.5.0 -- nbformat=5.4.0 -- ncurses=6.3 -- nest-asyncio=1.5.5 -- netcdf4=1.6.0 -- networkx=2.8.4 -- nomkl=1.0 -- notebook=6.4.12 -- notebook-shim=0.1.0 -- nspr=4.32 -- nss=3.78 -- numexpr=2.8.3 -- numpy=1.23.1 -- openjdk=11.0.9.1 -- openjpeg=2.4.0 -- openpyxl=3.0.9 -- openssl=1.1.1q -- orc=1.7.5 -- packaging=21.3 -- pandas=1.4.3 -- pandoc=2.18 -- pandocfilters=1.5.0 -- parquet-cpp=1.5.1 -- parso=0.8.3 -- partd=1.2.0 -- patsy=0.5.2 -- pcre=8.45 -- pexpect=4.8.0 -- pickleshare=0.7.5 -- pillow=9.2.0 -- pip=22.1.2 -- pixman=0.40.0 -- plac=1.3.5 -- pluggy=1.0.0 -- ply=3.11 -- poppler=21.09.0 -- poppler-data=0.4.11 -- postgresql=13.5 -- powerplantmatching=0.5.4 -- progressbar2=4.0.0 -- proj=8.1.1 -- prometheus_client=0.14.1 -- prompt-toolkit=3.0.30 -- protobuf=3.20.1 -- psutil=5.9.1 -- pthread-stubs=0.4 -- ptyprocess=0.7.0 -- pulp=2.6.0 -- pure_eval=0.2.2 -- py=1.11.0 -- pyarrow=8.0.0 -- pycountry=20.7.3 -- pycparser=2.21 -- pyct=0.4.6 -- pyct-core=0.4.6 -- pydeck=0.7.1 -- pygments=2.12.0 -- pympler=0.9 -- pyomo=6.4.1 -- pyopenssl=22.0.0 -- pyparsing=3.0.9 -- pyproj=3.2.1 -- pypsa=0.20.0 -- pyqt=5.12.3 -- pyqt-impl=5.12.3 -- pyqt5-sip=4.19.18 -- pyqtchart=5.12 -- pyqtwebengine=5.12.1 -- pyrsistent=0.18.1 -- pyshp=2.3.0 -- pysocks=1.7.1 -- pytables=3.7.0 -- pytest=7.1.2 -- python=3.9.13 -- python-dateutil=2.8.2 -- python-fastjsonschema=2.16.1 -- python-tzdata=2022.1 -- python-utils=3.3.3 -- python_abi=3.9 -- pytz=2022.1 -- pytz-deprecation-shim=0.1.0.post0 -- pyviz_comms=2.2.0 -- pyxlsb=1.0.9 -- pyyaml=6.0 -- pyzmq=23.2.0 -- qt=5.12.9 -- rasterio=1.2.9 -- ratelimiter=1.2.0 -- re2=2022.06.01 -- readline=8.1.2 -- requests=2.28.1 -- retry=0.9.2 -- rich=12.5.1 -- rtree=1.0.0 -- s2n=1.0.10 -- scikit-learn=1.1.1 -- scipy=1.8.1 -- scotch=6.0.9 -- seaborn=0.11.2 -- seaborn-base=0.11.2 -- semver=2.13.0 -- send2trash=1.8.0 -- setuptools=63.2.0 -- setuptools-scm=7.0.5 -- setuptools_scm=7.0.5 -- shapely=1.8.0 -- six=1.16.0 -- smart_open=6.0.0 -- smmap=3.0.5 -- snakemake-minimal=7.8.5 -- snappy=1.1.9 -- sniffio=1.2.0 -- snuggs=1.4.7 -- sortedcontainers=2.4.0 -- soupsieve=2.3.1 -- sqlite=3.39.1 -- stack_data=0.3.0 -- statsmodels=0.13.2 -- stopit=1.1.2 -- streamlit=1.10.0 -- tabula-py=2.2.0 -- tabulate=0.8.10 -- tblib=1.7.0 -- tenacity=8.0.1 -- terminado=0.15.0 -- threadpoolctl=3.1.0 -- tiledb=2.3.4 -- tinycss2=1.1.1 -- tk=8.6.12 -- toml=0.10.2 -- tomli=2.0.1 -- toolz=0.12.0 -- toposort=1.7 -- tornado=6.1 -- tqdm=4.64.0 -- traitlets=5.3.0 -- typing-extensions=4.3.0 -- typing_extensions=4.3.0 -- tzcode=2022a -- tzdata=2022a -- tzlocal=4.2 -- unicodedata2=14.0.0 -- unidecode=1.3.4 -- unixodbc=2.3.10 -- urllib3=1.26.10 -- validators=0.18.2 -- watchdog=2.1.9 -- wcwidth=0.2.5 -- webencodings=0.5.1 -- websocket-client=1.3.3 -- wheel=0.37.1 -- widgetsnbextension=3.6.1 -- wrapt=1.14.1 -- xarray=2022.3.0 -- xerces-c=3.2.3 -- xlrd=2.0.1 -- xorg-fixesproto=5.0 -- xorg-inputproto=2.3.2 -- xorg-kbproto=1.0.7 -- xorg-libice=1.0.10 -- xorg-libsm=1.2.3 -- xorg-libx11=1.7.2 -- xorg-libxau=1.0.9 -- xorg-libxdmcp=1.1.3 -- xorg-libxext=1.3.4 -- xorg-libxfixes=5.0.3 -- xorg-libxi=1.7.10 -- xorg-libxrender=0.9.10 -- xorg-libxtst=1.2.3 -- xorg-recordproto=1.14.2 -- xorg-renderproto=0.11.1 -- xorg-xextproto=7.3.0 -- xorg-xproto=7.0.31 -- xyzservices=2022.6.0 -- xz=5.2.5 -- yaml=0.2.5 -- yte=1.5.1 -- zeromq=4.3.4 -- zict=2.2.0 -- zipp=3.8.0 -- zlib=1.2.12 -- zstd=1.5.2 -- pip: - - countrycode==0.2 - - tsam==2.1.0 - - vresutils==0.3.1 + - _libgcc_mutex=0.1 + - _openmp_mutex=4.5 + - affine=2.4.0 + - alsa-lib=1.2.8 + - ampl-mp=3.1.0 + - amply=0.1.5 + - appdirs=1.4.4 + - asttokens=2.2.1 + - atlite=0.2.10 + - attr=2.5.1 + - attrs=22.2.0 + - backcall=0.2.0 + - backports=1.0 + - backports.functools_lru_cache=1.6.4 + - beautifulsoup4=4.11.2 + - blosc=1.21.3 + - bokeh=2.4.3 + - boost-cpp=1.78.0 + - bottleneck=1.3.6 + - branca=0.6.0 + - brotli=1.0.9 + - brotli-bin=1.0.9 + - brotlipy=0.7.0 + - bzip2=1.0.8 + - c-ares=1.18.1 + - ca-certificates=2022.12.7 + - cairo=1.16.0 + - cartopy=0.21.1 + - cdsapi=0.5.1 + - certifi=2022.12.7 + - cffi=1.15.1 + - cfitsio=4.2.0 + - cftime=1.6.2 + - charset-normalizer=2.1.1 + - click=8.1.3 + - click-plugins=1.1.1 + - cligj=0.7.2 + - cloudpickle=2.2.1 + - coin-or-cbc=2.10.8 + - coin-or-cgl=0.60.6 + - coin-or-clp=1.17.7 + - coin-or-osi=0.108.7 + - coin-or-utils=2.11.6 + - coincbc=2.10.8 + - colorama=0.4.6 + - configargparse=1.5.3 + - connection_pool=0.0.3 + - country_converter=0.8.0 + - cryptography=39.0.1 + - curl=7.88.0 + - cycler=0.11.0 + - cytoolz=0.12.0 + - dask=2023.2.0 + - dask-core=2023.2.0 + - datrie=0.8.2 + - dbus=1.13.6 + - decorator=5.1.1 + - deprecation=2.1.0 + - descartes=1.1.0 + - distributed=2023.2.0 + - distro=1.8.0 + - docutils=0.19 + - dpath=2.1.4 + - entsoe-py=0.5.8 + - et_xmlfile=1.1.0 + - exceptiongroup=1.1.0 + - executing=1.2.0 + - expat=2.5.0 + - fftw=3.3.10 + - filelock=3.9.0 + - fiona=1.9.1 + - folium=0.14.0 + - font-ttf-dejavu-sans-mono=2.37 + - font-ttf-inconsolata=3.000 + - font-ttf-source-code-pro=2.038 + - font-ttf-ubuntu=0.83 + - fontconfig=2.14.2 + - fonts-conda-ecosystem=1 + - fonts-conda-forge=1 + - fonttools=4.38.0 + - freetype=2.12.1 + - freexl=1.0.6 + - fsspec=2023.1.0 + - gdal=3.6.2 + - geographiclib=1.52 + - geojson-rewind=1.0.2 + - geopandas=0.12.2 + - geopandas-base=0.12.2 + - geopy=2.3.0 + - geos=3.11.1 + - geotiff=1.7.1 + - gettext=0.21.1 + - giflib=5.2.1 + - gitdb=4.0.10 + - gitpython=3.1.30 + - glib=2.74.1 + - glib-tools=2.74.1 + - graphite2=1.3.13 + - gst-plugins-base=1.22.0 + - gstreamer=1.22.0 + - gstreamer-orc=0.4.33 + - harfbuzz=6.0.0 + - hdf4=4.2.15 + - hdf5=1.12.2 + - heapdict=1.0.1 + - humanfriendly=10.0 + - icu=70.1 + - idna=3.4 + - importlib-metadata=6.0.0 + - importlib_resources=5.10.2 + - iniconfig=2.0.0 + - ipopt=3.14.11 + - ipython=8.10.0 + - jack=1.9.22 + - jedi=0.18.2 + - jinja2=3.1.2 + - joblib=1.2.0 + - jpeg=9e + - json-c=0.16 + - jsonschema=4.17.3 + - jupyter_core=5.2.0 + - kealib=1.5.0 + - keyutils=1.6.1 + - kiwisolver=1.4.4 + - krb5=1.20.1 + - lame=3.100 + - lcms2=2.14 + - ld_impl_linux-64=2.40 + - lerc=4.0.0 + - libaec=1.0.6 + - libblas=3.9.0 + - libbrotlicommon=1.0.9 + - libbrotlidec=1.0.9 + - libbrotlienc=1.0.9 + - libcap=2.66 + - libcblas=3.9.0 + - libclang=15.0.7 + - libclang13=15.0.7 + - libcups=2.3.3 + - libcurl=7.88.0 + - libdb=6.2.32 + - libdeflate=1.17 + - libedit=3.1.20191231 + - libev=4.33 + - libevent=2.1.10 + - libffi=3.4.2 + - libflac=1.4.2 + - libgcc-ng=12.2.0 + - libgcrypt=1.10.1 + - libgdal=3.6.2 + - libgfortran-ng=12.2.0 + - libgfortran5=12.2.0 + - libglib=2.74.1 + - libgomp=12.2.0 + - libgpg-error=1.46 + - libiconv=1.17 + - libkml=1.3.0 + - liblapack=3.9.0 + - liblapacke=3.9.0 + - libllvm15=15.0.7 + - libnetcdf=4.8.1 + - libnghttp2=1.51.0 + - libnsl=2.0.0 + - libogg=1.3.4 + - libopenblas=0.3.21 + - libopus=1.3.1 + - libpng=1.6.39 + - libpq=15.2 + - librttopo=1.1.0 + - libsndfile=1.2.0 + - libspatialindex=1.9.3 + - libspatialite=5.0.1 + - libsqlite=3.40.0 + - libssh2=1.10.0 + - libstdcxx-ng=12.2.0 + - libsystemd0=252 + - libtiff=4.5.0 + - libtool=2.4.7 + - libudev1=252 + - libuuid=2.32.1 + - libvorbis=1.3.7 + - libwebp-base=1.2.4 + - libxcb=1.13 + - libxkbcommon=1.5.0 + - libxml2=2.10.3 + - libxslt=1.1.37 + - libzip=1.9.2 + - libzlib=1.2.13 + - linopy=0.1.3 + - locket=1.0.0 + - lxml=4.9.2 + - lz4=4.3.2 + - lz4-c=1.9.4 + - lzo=2.10 + - mapclassify=2.5.0 + - markupsafe=2.1.2 + - matplotlib=3.5.3 + - matplotlib-base=3.5.3 + - matplotlib-inline=0.1.6 + - memory_profiler=0.61.0 + - metis=5.1.0 + - mpg123=1.31.2 + - msgpack-python=1.0.4 + - mumps-include=5.2.1 + - mumps-seq=5.2.1 + - munch=2.5.0 + - munkres=1.1.4 + - mysql-common=8.0.32 + - mysql-libs=8.0.32 + - nbformat=5.7.3 + - ncurses=6.3 + - netcdf4=1.6.2 + - networkx=3.0 + - nomkl=1.0 + - nspr=4.35 + - nss=3.88 + - numexpr=2.8.3 + - numpy=1.23.5 + - openjdk=17.0.3 + - openjpeg=2.5.0 + - openpyxl=3.1.1 + - openssl=3.0.8 + - packaging=23.0 + - pandas=1.5.3 + - parso=0.8.3 + - partd=1.3.0 + - patsy=0.5.3 + - pcre2=10.40 + - pexpect=4.8.0 + - pickleshare=0.7.5 + - pillow=9.4.0 + - pip=23.0 + - pixman=0.40.0 + - pkgutil-resolve-name=1.3.10 + - plac=1.3.5 + - platformdirs=3.0.0 + - pluggy=1.0.0 + - ply=3.11 + - pooch=1.6.0 + - poppler=22.12.0 + - poppler-data=0.4.12 + - postgresql=15.2 + - powerplantmatching=0.5.6 + - progressbar2=4.2.0 + - proj=9.1.0 + - prompt-toolkit=3.0.36 + - psutil=5.9.4 + - pthread-stubs=0.4 + - ptyprocess=0.7.0 + - pulp=2.7.0 + - pulseaudio=16.1 + - pure_eval=0.2.2 + - pycountry=22.3.5 + - pycparser=2.21 + - pygments=2.14.0 + - pyomo=6.4.4 + - pyopenssl=23.0.0 + - pyparsing=3.0.9 + - pyproj=3.4.1 + - pypsa=0.22.1 + - pyqt=5.15.7 + - pyqt5-sip=12.11.0 + - pyrsistent=0.19.3 + - pyshp=2.3.1 + - pysocks=1.7.1 + - pytables=3.7.0 + - pytest=7.2.1 + - python=3.10.9 + - python-dateutil=2.8.2 + - python-fastjsonschema=2.16.2 + - python-utils=3.5.2 + - python_abi=3.10 + - pytz=2022.7.1 + - pyxlsb=1.0.10 + - pyyaml=6.0 + - qt-main=5.15.8 + - rasterio=1.3.4 + - readline=8.1.2 + - requests=2.28.2 + - reretry=0.11.8 + - rtree=1.0.1 + - scikit-learn=1.2.1 + - scipy=1.10.0 + - scotch=6.0.9 + - seaborn=0.12.2 + - seaborn-base=0.12.2 + - setuptools=67.3.2 + - setuptools-scm=7.1.0 + - setuptools_scm=7.1.0 + - shapely=2.0.1 + - sip=6.7.7 + - six=1.16.0 + - smart_open=6.3.0 + - smmap=3.0.5 + - snakemake-minimal=7.22.0 + - snappy=1.1.9 + - snuggs=1.4.7 + - sortedcontainers=2.4.0 + - soupsieve=2.3.2.post1 + - sqlite=3.40.0 + - stack_data=0.6.2 + - statsmodels=0.13.5 + - stopit=1.1.2 + - tabula-py=2.6.0 + - tabulate=0.9.0 + - tblib=1.7.0 + - threadpoolctl=3.1.0 + - throttler=1.2.1 + - tiledb=2.13.2 + - tk=8.6.12 + - toml=0.10.2 + - tomli=2.0.1 + - toolz=0.12.0 + - toposort=1.9 + - tornado=6.2 + - tqdm=4.64.1 + - traitlets=5.9.0 + - typing-extensions=4.4.0 + - typing_extensions=4.4.0 + - tzcode=2022g + - tzdata=2022g + - unicodedata2=15.0.0 + - unidecode=1.3.6 + - unixodbc=2.3.10 + - urllib3=1.26.14 + - wcwidth=0.2.6 + - wheel=0.38.4 + - wrapt=1.14.1 + - xarray=2023.2.0 + - xcb-util=0.4.0 + - xcb-util-image=0.4.0 + - xcb-util-keysyms=0.4.0 + - xcb-util-renderutil=0.3.9 + - xcb-util-wm=0.4.1 + - xerces-c=3.2.4 + - xlrd=2.0.1 + - xorg-fixesproto=5.0 + - xorg-inputproto=2.3.2 + - xorg-kbproto=1.0.7 + - xorg-libice=1.0.10 + - xorg-libsm=1.2.3 + - xorg-libx11=1.7.2 + - xorg-libxau=1.0.9 + - xorg-libxdmcp=1.1.3 + - xorg-libxext=1.3.4 + - xorg-libxfixes=5.0.3 + - xorg-libxi=1.7.10 + - xorg-libxrender=0.9.10 + - xorg-libxtst=1.2.3 + - xorg-recordproto=1.14.2 + - xorg-renderproto=0.11.1 + - xorg-xextproto=7.3.0 + - xorg-xproto=7.0.31 + - xyzservices=2022.9.0 + - xz=5.2.6 + - yaml=0.2.5 + - yte=1.5.1 + - zict=2.2.0 + - zipp=3.13.0 + - zlib=1.2.13 + - zstd=1.5.2 + - pip: + - countrycode==0.2 + - highspy==1.5.0.dev0 + - pybind11==2.10.3 + - tsam==2.2.2 + - vresutils==0.3.1 From 9bb52ddab0d5309fea6d7b2b2f25f6015cc13af5 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 16:07:01 +0100 Subject: [PATCH 28/48] update fixed versions environment.yaml --- envs/environment.fixed.yaml | 742 ++++++++++++++++++------------------ 1 file changed, 371 insertions(+), 371 deletions(-) diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index 0c00b1d0..9d2b331c 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -4,375 +4,375 @@ name: pypsa-eur channels: - - bioconda - - http://conda.anaconda.org/gurobi - - conda-forge - - defaults +- bioconda +- http://conda.anaconda.org/gurobi +- conda-forge +- defaults dependencies: - - _libgcc_mutex=0.1 - - _openmp_mutex=4.5 - - affine=2.4.0 - - alsa-lib=1.2.8 - - ampl-mp=3.1.0 - - amply=0.1.5 - - appdirs=1.4.4 - - asttokens=2.2.1 - - atlite=0.2.10 - - attr=2.5.1 - - attrs=22.2.0 - - backcall=0.2.0 - - backports=1.0 - - backports.functools_lru_cache=1.6.4 - - beautifulsoup4=4.11.2 - - blosc=1.21.3 - - bokeh=2.4.3 - - boost-cpp=1.78.0 - - bottleneck=1.3.6 - - branca=0.6.0 - - brotli=1.0.9 - - brotli-bin=1.0.9 - - brotlipy=0.7.0 - - bzip2=1.0.8 - - c-ares=1.18.1 - - ca-certificates=2022.12.7 - - cairo=1.16.0 - - cartopy=0.21.1 - - cdsapi=0.5.1 - - certifi=2022.12.7 - - cffi=1.15.1 - - cfitsio=4.2.0 - - cftime=1.6.2 - - charset-normalizer=2.1.1 - - click=8.1.3 - - click-plugins=1.1.1 - - cligj=0.7.2 - - cloudpickle=2.2.1 - - coin-or-cbc=2.10.8 - - coin-or-cgl=0.60.6 - - coin-or-clp=1.17.7 - - coin-or-osi=0.108.7 - - coin-or-utils=2.11.6 - - coincbc=2.10.8 - - colorama=0.4.6 - - configargparse=1.5.3 - - connection_pool=0.0.3 - - country_converter=0.8.0 - - cryptography=39.0.1 - - curl=7.88.0 - - cycler=0.11.0 - - cytoolz=0.12.0 - - dask=2023.2.0 - - dask-core=2023.2.0 - - datrie=0.8.2 - - dbus=1.13.6 - - decorator=5.1.1 - - deprecation=2.1.0 - - descartes=1.1.0 - - distributed=2023.2.0 - - distro=1.8.0 - - docutils=0.19 - - dpath=2.1.4 - - entsoe-py=0.5.8 - - et_xmlfile=1.1.0 - - exceptiongroup=1.1.0 - - executing=1.2.0 - - expat=2.5.0 - - fftw=3.3.10 - - filelock=3.9.0 - - fiona=1.9.1 - - folium=0.14.0 - - font-ttf-dejavu-sans-mono=2.37 - - font-ttf-inconsolata=3.000 - - font-ttf-source-code-pro=2.038 - - font-ttf-ubuntu=0.83 - - fontconfig=2.14.2 - - fonts-conda-ecosystem=1 - - fonts-conda-forge=1 - - fonttools=4.38.0 - - freetype=2.12.1 - - freexl=1.0.6 - - fsspec=2023.1.0 - - gdal=3.6.2 - - geographiclib=1.52 - - geojson-rewind=1.0.2 - - geopandas=0.12.2 - - geopandas-base=0.12.2 - - geopy=2.3.0 - - geos=3.11.1 - - geotiff=1.7.1 - - gettext=0.21.1 - - giflib=5.2.1 - - gitdb=4.0.10 - - gitpython=3.1.30 - - glib=2.74.1 - - glib-tools=2.74.1 - - graphite2=1.3.13 - - gst-plugins-base=1.22.0 - - gstreamer=1.22.0 - - gstreamer-orc=0.4.33 - - harfbuzz=6.0.0 - - hdf4=4.2.15 - - hdf5=1.12.2 - - heapdict=1.0.1 - - humanfriendly=10.0 - - icu=70.1 - - idna=3.4 - - importlib-metadata=6.0.0 - - importlib_resources=5.10.2 - - iniconfig=2.0.0 - - ipopt=3.14.11 - - ipython=8.10.0 - - jack=1.9.22 - - jedi=0.18.2 - - jinja2=3.1.2 - - joblib=1.2.0 - - jpeg=9e - - json-c=0.16 - - jsonschema=4.17.3 - - jupyter_core=5.2.0 - - kealib=1.5.0 - - keyutils=1.6.1 - - kiwisolver=1.4.4 - - krb5=1.20.1 - - lame=3.100 - - lcms2=2.14 - - ld_impl_linux-64=2.40 - - lerc=4.0.0 - - libaec=1.0.6 - - libblas=3.9.0 - - libbrotlicommon=1.0.9 - - libbrotlidec=1.0.9 - - libbrotlienc=1.0.9 - - libcap=2.66 - - libcblas=3.9.0 - - libclang=15.0.7 - - libclang13=15.0.7 - - libcups=2.3.3 - - libcurl=7.88.0 - - libdb=6.2.32 - - libdeflate=1.17 - - libedit=3.1.20191231 - - libev=4.33 - - libevent=2.1.10 - - libffi=3.4.2 - - libflac=1.4.2 - - libgcc-ng=12.2.0 - - libgcrypt=1.10.1 - - libgdal=3.6.2 - - libgfortran-ng=12.2.0 - - libgfortran5=12.2.0 - - libglib=2.74.1 - - libgomp=12.2.0 - - libgpg-error=1.46 - - libiconv=1.17 - - libkml=1.3.0 - - liblapack=3.9.0 - - liblapacke=3.9.0 - - libllvm15=15.0.7 - - libnetcdf=4.8.1 - - libnghttp2=1.51.0 - - libnsl=2.0.0 - - libogg=1.3.4 - - libopenblas=0.3.21 - - libopus=1.3.1 - - libpng=1.6.39 - - libpq=15.2 - - librttopo=1.1.0 - - libsndfile=1.2.0 - - libspatialindex=1.9.3 - - libspatialite=5.0.1 - - libsqlite=3.40.0 - - libssh2=1.10.0 - - libstdcxx-ng=12.2.0 - - libsystemd0=252 - - libtiff=4.5.0 - - libtool=2.4.7 - - libudev1=252 - - libuuid=2.32.1 - - libvorbis=1.3.7 - - libwebp-base=1.2.4 - - libxcb=1.13 - - libxkbcommon=1.5.0 - - libxml2=2.10.3 - - libxslt=1.1.37 - - libzip=1.9.2 - - libzlib=1.2.13 - - linopy=0.1.3 - - locket=1.0.0 - - lxml=4.9.2 - - lz4=4.3.2 - - lz4-c=1.9.4 - - lzo=2.10 - - mapclassify=2.5.0 - - markupsafe=2.1.2 - - matplotlib=3.5.3 - - matplotlib-base=3.5.3 - - matplotlib-inline=0.1.6 - - memory_profiler=0.61.0 - - metis=5.1.0 - - mpg123=1.31.2 - - msgpack-python=1.0.4 - - mumps-include=5.2.1 - - mumps-seq=5.2.1 - - munch=2.5.0 - - munkres=1.1.4 - - mysql-common=8.0.32 - - mysql-libs=8.0.32 - - nbformat=5.7.3 - - ncurses=6.3 - - netcdf4=1.6.2 - - networkx=3.0 - - nomkl=1.0 - - nspr=4.35 - - nss=3.88 - - numexpr=2.8.3 - - numpy=1.23.5 - - openjdk=17.0.3 - - openjpeg=2.5.0 - - openpyxl=3.1.1 - - openssl=3.0.8 - - packaging=23.0 - - pandas=1.5.3 - - parso=0.8.3 - - partd=1.3.0 - - patsy=0.5.3 - - pcre2=10.40 - - pexpect=4.8.0 - - pickleshare=0.7.5 - - pillow=9.4.0 - - pip=23.0 - - pixman=0.40.0 - - pkgutil-resolve-name=1.3.10 - - plac=1.3.5 - - platformdirs=3.0.0 - - pluggy=1.0.0 - - ply=3.11 - - pooch=1.6.0 - - poppler=22.12.0 - - poppler-data=0.4.12 - - postgresql=15.2 - - powerplantmatching=0.5.6 - - progressbar2=4.2.0 - - proj=9.1.0 - - prompt-toolkit=3.0.36 - - psutil=5.9.4 - - pthread-stubs=0.4 - - ptyprocess=0.7.0 - - pulp=2.7.0 - - pulseaudio=16.1 - - pure_eval=0.2.2 - - pycountry=22.3.5 - - pycparser=2.21 - - pygments=2.14.0 - - pyomo=6.4.4 - - pyopenssl=23.0.0 - - pyparsing=3.0.9 - - pyproj=3.4.1 - - pypsa=0.22.1 - - pyqt=5.15.7 - - pyqt5-sip=12.11.0 - - pyrsistent=0.19.3 - - pyshp=2.3.1 - - pysocks=1.7.1 - - pytables=3.7.0 - - pytest=7.2.1 - - python=3.10.9 - - python-dateutil=2.8.2 - - python-fastjsonschema=2.16.2 - - python-utils=3.5.2 - - python_abi=3.10 - - pytz=2022.7.1 - - pyxlsb=1.0.10 - - pyyaml=6.0 - - qt-main=5.15.8 - - rasterio=1.3.4 - - readline=8.1.2 - - requests=2.28.2 - - reretry=0.11.8 - - rtree=1.0.1 - - scikit-learn=1.2.1 - - scipy=1.10.0 - - scotch=6.0.9 - - seaborn=0.12.2 - - seaborn-base=0.12.2 - - setuptools=67.3.2 - - setuptools-scm=7.1.0 - - setuptools_scm=7.1.0 - - shapely=2.0.1 - - sip=6.7.7 - - six=1.16.0 - - smart_open=6.3.0 - - smmap=3.0.5 - - snakemake-minimal=7.22.0 - - snappy=1.1.9 - - snuggs=1.4.7 - - sortedcontainers=2.4.0 - - soupsieve=2.3.2.post1 - - sqlite=3.40.0 - - stack_data=0.6.2 - - statsmodels=0.13.5 - - stopit=1.1.2 - - tabula-py=2.6.0 - - tabulate=0.9.0 - - tblib=1.7.0 - - threadpoolctl=3.1.0 - - throttler=1.2.1 - - tiledb=2.13.2 - - tk=8.6.12 - - toml=0.10.2 - - tomli=2.0.1 - - toolz=0.12.0 - - toposort=1.9 - - tornado=6.2 - - tqdm=4.64.1 - - traitlets=5.9.0 - - typing-extensions=4.4.0 - - typing_extensions=4.4.0 - - tzcode=2022g - - tzdata=2022g - - unicodedata2=15.0.0 - - unidecode=1.3.6 - - unixodbc=2.3.10 - - urllib3=1.26.14 - - wcwidth=0.2.6 - - wheel=0.38.4 - - wrapt=1.14.1 - - xarray=2023.2.0 - - xcb-util=0.4.0 - - xcb-util-image=0.4.0 - - xcb-util-keysyms=0.4.0 - - xcb-util-renderutil=0.3.9 - - xcb-util-wm=0.4.1 - - xerces-c=3.2.4 - - xlrd=2.0.1 - - xorg-fixesproto=5.0 - - xorg-inputproto=2.3.2 - - xorg-kbproto=1.0.7 - - xorg-libice=1.0.10 - - xorg-libsm=1.2.3 - - xorg-libx11=1.7.2 - - xorg-libxau=1.0.9 - - xorg-libxdmcp=1.1.3 - - xorg-libxext=1.3.4 - - xorg-libxfixes=5.0.3 - - xorg-libxi=1.7.10 - - xorg-libxrender=0.9.10 - - xorg-libxtst=1.2.3 - - xorg-recordproto=1.14.2 - - xorg-renderproto=0.11.1 - - xorg-xextproto=7.3.0 - - xorg-xproto=7.0.31 - - xyzservices=2022.9.0 - - xz=5.2.6 - - yaml=0.2.5 - - yte=1.5.1 - - zict=2.2.0 - - zipp=3.13.0 - - zlib=1.2.13 - - zstd=1.5.2 - - pip: - - countrycode==0.2 - - highspy==1.5.0.dev0 - - pybind11==2.10.3 - - tsam==2.2.2 - - vresutils==0.3.1 +- _libgcc_mutex=0.1 +- _openmp_mutex=4.5 +- affine=2.4.0 +- alsa-lib=1.2.8 +- ampl-mp=3.1.0 +- amply=0.1.5 +- appdirs=1.4.4 +- asttokens=2.2.1 +- atlite=0.2.10 +- attr=2.5.1 +- attrs=22.2.0 +- backcall=0.2.0 +- backports=1.0 +- backports.functools_lru_cache=1.6.4 +- beautifulsoup4=4.11.2 +- blosc=1.21.3 +- bokeh=2.4.3 +- boost-cpp=1.78.0 +- bottleneck=1.3.6 +- branca=0.6.0 +- brotli=1.0.9 +- brotli-bin=1.0.9 +- brotlipy=0.7.0 +- bzip2=1.0.8 +- c-ares=1.18.1 +- ca-certificates=2022.12.7 +- cairo=1.16.0 +- cartopy=0.21.1 +- cdsapi=0.5.1 +- certifi=2022.12.7 +- cffi=1.15.1 +- cfitsio=4.2.0 +- cftime=1.6.2 +- charset-normalizer=2.1.1 +- click=8.1.3 +- click-plugins=1.1.1 +- cligj=0.7.2 +- cloudpickle=2.2.1 +- coin-or-cbc=2.10.8 +- coin-or-cgl=0.60.6 +- coin-or-clp=1.17.7 +- coin-or-osi=0.108.7 +- coin-or-utils=2.11.6 +- coincbc=2.10.8 +- colorama=0.4.6 +- configargparse=1.5.3 +- connection_pool=0.0.3 +- country_converter=0.8.0 +- cryptography=39.0.1 +- curl=7.88.0 +- cycler=0.11.0 +- cytoolz=0.12.0 +- dask=2023.2.0 +- dask-core=2023.2.0 +- datrie=0.8.2 +- dbus=1.13.6 +- decorator=5.1.1 +- deprecation=2.1.0 +- descartes=1.1.0 +- distributed=2023.2.0 +- distro=1.8.0 +- docutils=0.19 +- dpath=2.1.4 +- entsoe-py=0.5.8 +- et_xmlfile=1.1.0 +- exceptiongroup=1.1.0 +- executing=1.2.0 +- expat=2.5.0 +- fftw=3.3.10 +- filelock=3.9.0 +- fiona=1.9.1 +- folium=0.14.0 +- font-ttf-dejavu-sans-mono=2.37 +- font-ttf-inconsolata=3.000 +- font-ttf-source-code-pro=2.038 +- font-ttf-ubuntu=0.83 +- fontconfig=2.14.2 +- fonts-conda-ecosystem=1 +- fonts-conda-forge=1 +- fonttools=4.38.0 +- freetype=2.12.1 +- freexl=1.0.6 +- fsspec=2023.1.0 +- gdal=3.6.2 +- geographiclib=1.52 +- geojson-rewind=1.0.2 +- geopandas=0.12.2 +- geopandas-base=0.12.2 +- geopy=2.3.0 +- geos=3.11.1 +- geotiff=1.7.1 +- gettext=0.21.1 +- giflib=5.2.1 +- gitdb=4.0.10 +- gitpython=3.1.30 +- glib=2.74.1 +- glib-tools=2.74.1 +- graphite2=1.3.13 +- gst-plugins-base=1.22.0 +- gstreamer=1.22.0 +- gstreamer-orc=0.4.33 +- harfbuzz=6.0.0 +- hdf4=4.2.15 +- hdf5=1.12.2 +- heapdict=1.0.1 +- humanfriendly=10.0 +- icu=70.1 +- idna=3.4 +- importlib-metadata=6.0.0 +- importlib_resources=5.10.2 +- iniconfig=2.0.0 +- ipopt=3.14.11 +- ipython=8.10.0 +- jack=1.9.22 +- jedi=0.18.2 +- jinja2=3.1.2 +- joblib=1.2.0 +- jpeg=9e +- json-c=0.16 +- jsonschema=4.17.3 +- jupyter_core=5.2.0 +- kealib=1.5.0 +- keyutils=1.6.1 +- kiwisolver=1.4.4 +- krb5=1.20.1 +- lame=3.100 +- lcms2=2.14 +- ld_impl_linux-64=2.40 +- lerc=4.0.0 +- libaec=1.0.6 +- libblas=3.9.0 +- libbrotlicommon=1.0.9 +- libbrotlidec=1.0.9 +- libbrotlienc=1.0.9 +- libcap=2.66 +- libcblas=3.9.0 +- libclang=15.0.7 +- libclang13=15.0.7 +- libcups=2.3.3 +- libcurl=7.88.0 +- libdb=6.2.32 +- libdeflate=1.17 +- libedit=3.1.20191231 +- libev=4.33 +- libevent=2.1.10 +- libffi=3.4.2 +- libflac=1.4.2 +- libgcc-ng=12.2.0 +- libgcrypt=1.10.1 +- libgdal=3.6.2 +- libgfortran-ng=12.2.0 +- libgfortran5=12.2.0 +- libglib=2.74.1 +- libgomp=12.2.0 +- libgpg-error=1.46 +- libiconv=1.17 +- libkml=1.3.0 +- liblapack=3.9.0 +- liblapacke=3.9.0 +- libllvm15=15.0.7 +- libnetcdf=4.8.1 +- libnghttp2=1.51.0 +- libnsl=2.0.0 +- libogg=1.3.4 +- libopenblas=0.3.21 +- libopus=1.3.1 +- libpng=1.6.39 +- libpq=15.2 +- librttopo=1.1.0 +- libsndfile=1.2.0 +- libspatialindex=1.9.3 +- libspatialite=5.0.1 +- libsqlite=3.40.0 +- libssh2=1.10.0 +- libstdcxx-ng=12.2.0 +- libsystemd0=252 +- libtiff=4.5.0 +- libtool=2.4.7 +- libudev1=252 +- libuuid=2.32.1 +- libvorbis=1.3.7 +- libwebp-base=1.2.4 +- libxcb=1.13 +- libxkbcommon=1.5.0 +- libxml2=2.10.3 +- libxslt=1.1.37 +- libzip=1.9.2 +- libzlib=1.2.13 +- linopy=0.1.3 +- locket=1.0.0 +- lxml=4.9.2 +- lz4=4.3.2 +- lz4-c=1.9.4 +- lzo=2.10 +- mapclassify=2.5.0 +- markupsafe=2.1.2 +- matplotlib=3.5.3 +- matplotlib-base=3.5.3 +- matplotlib-inline=0.1.6 +- memory_profiler=0.61.0 +- metis=5.1.0 +- mpg123=1.31.2 +- msgpack-python=1.0.4 +- mumps-include=5.2.1 +- mumps-seq=5.2.1 +- munch=2.5.0 +- munkres=1.1.4 +- mysql-common=8.0.32 +- mysql-libs=8.0.32 +- nbformat=5.7.3 +- ncurses=6.3 +- netcdf4=1.6.2 +- networkx=3.0 +- nomkl=1.0 +- nspr=4.35 +- nss=3.88 +- numexpr=2.8.3 +- numpy=1.23.5 +- openjdk=17.0.3 +- openjpeg=2.5.0 +- openpyxl=3.1.1 +- openssl=3.0.8 +- packaging=23.0 +- pandas=1.5.3 +- parso=0.8.3 +- partd=1.3.0 +- patsy=0.5.3 +- pcre2=10.40 +- pexpect=4.8.0 +- pickleshare=0.7.5 +- pillow=9.4.0 +- pip=23.0 +- pixman=0.40.0 +- pkgutil-resolve-name=1.3.10 +- plac=1.3.5 +- platformdirs=3.0.0 +- pluggy=1.0.0 +- ply=3.11 +- pooch=1.6.0 +- poppler=22.12.0 +- poppler-data=0.4.12 +- postgresql=15.2 +- powerplantmatching=0.5.6 +- progressbar2=4.2.0 +- proj=9.1.0 +- prompt-toolkit=3.0.36 +- psutil=5.9.4 +- pthread-stubs=0.4 +- ptyprocess=0.7.0 +- pulp=2.7.0 +- pulseaudio=16.1 +- pure_eval=0.2.2 +- pycountry=22.3.5 +- pycparser=2.21 +- pygments=2.14.0 +- pyomo=6.4.4 +- pyopenssl=23.0.0 +- pyparsing=3.0.9 +- pyproj=3.4.1 +- pypsa=0.22.1 +- pyqt=5.15.7 +- pyqt5-sip=12.11.0 +- pyrsistent=0.19.3 +- pyshp=2.3.1 +- pysocks=1.7.1 +- pytables=3.7.0 +- pytest=7.2.1 +- python=3.10.9 +- python-dateutil=2.8.2 +- python-fastjsonschema=2.16.2 +- python-utils=3.5.2 +- python_abi=3.10 +- pytz=2022.7.1 +- pyxlsb=1.0.10 +- pyyaml=6.0 +- qt-main=5.15.8 +- rasterio=1.3.4 +- readline=8.1.2 +- requests=2.28.2 +- reretry=0.11.8 +- rtree=1.0.1 +- scikit-learn=1.2.1 +- scipy=1.10.0 +- scotch=6.0.9 +- seaborn=0.12.2 +- seaborn-base=0.12.2 +- setuptools=67.3.2 +- setuptools-scm=7.1.0 +- setuptools_scm=7.1.0 +- shapely=2.0.1 +- sip=6.7.7 +- six=1.16.0 +- smart_open=6.3.0 +- smmap=3.0.5 +- snakemake-minimal=7.22.0 +- snappy=1.1.9 +- snuggs=1.4.7 +- sortedcontainers=2.4.0 +- soupsieve=2.3.2.post1 +- sqlite=3.40.0 +- stack_data=0.6.2 +- statsmodels=0.13.5 +- stopit=1.1.2 +- tabula-py=2.6.0 +- tabulate=0.9.0 +- tblib=1.7.0 +- threadpoolctl=3.1.0 +- throttler=1.2.1 +- tiledb=2.13.2 +- tk=8.6.12 +- toml=0.10.2 +- tomli=2.0.1 +- toolz=0.12.0 +- toposort=1.9 +- tornado=6.2 +- tqdm=4.64.1 +- traitlets=5.9.0 +- typing-extensions=4.4.0 +- typing_extensions=4.4.0 +- tzcode=2022g +- tzdata=2022g +- unicodedata2=15.0.0 +- unidecode=1.3.6 +- unixodbc=2.3.10 +- urllib3=1.26.14 +- wcwidth=0.2.6 +- wheel=0.38.4 +- wrapt=1.14.1 +- xarray=2023.2.0 +- xcb-util=0.4.0 +- xcb-util-image=0.4.0 +- xcb-util-keysyms=0.4.0 +- xcb-util-renderutil=0.3.9 +- xcb-util-wm=0.4.1 +- xerces-c=3.2.4 +- xlrd=2.0.1 +- xorg-fixesproto=5.0 +- xorg-inputproto=2.3.2 +- xorg-kbproto=1.0.7 +- xorg-libice=1.0.10 +- xorg-libsm=1.2.3 +- xorg-libx11=1.7.2 +- xorg-libxau=1.0.9 +- xorg-libxdmcp=1.1.3 +- xorg-libxext=1.3.4 +- xorg-libxfixes=5.0.3 +- xorg-libxi=1.7.10 +- xorg-libxrender=0.9.10 +- xorg-libxtst=1.2.3 +- xorg-recordproto=1.14.2 +- xorg-renderproto=0.11.1 +- xorg-xextproto=7.3.0 +- xorg-xproto=7.0.31 +- xyzservices=2022.9.0 +- xz=5.2.6 +- yaml=0.2.5 +- yte=1.5.1 +- zict=2.2.0 +- zipp=3.13.0 +- zlib=1.2.13 +- zstd=1.5.2 +- pip: + - countrycode==0.2 + - highspy==1.5.0.dev0 + - pybind11==2.10.3 + - tsam==2.2.2 + - vresutils==0.3.1 From e2ec25073a4b46ac5302d7864224d6396b5a8fed Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 16 Feb 2023 19:41:55 +0100 Subject: [PATCH 29/48] limit openpyxl version --- envs/environment.fixed.yaml | 2 +- envs/environment.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index 9d2b331c..516e5ec5 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -229,7 +229,7 @@ dependencies: - numpy=1.23.5 - openjdk=17.0.3 - openjpeg=2.5.0 -- openpyxl=3.1.1 +- openpyxl=3.1.0 - openssl=3.0.8 - packaging=23.0 - pandas=1.5.3 diff --git a/envs/environment.yaml b/envs/environment.yaml index 3e366074..9325ac09 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -16,7 +16,7 @@ dependencies: # Dependencies of the workflow itself - xlrd -- openpyxl +- openpyxl!=3.1.1 - pycountry - seaborn - snakemake-minimal From 7b4480f5977375ff607124bdc4d1eafed129e90e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 21:27:10 +0000 Subject: [PATCH 30/48] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/PyCQA/docformatter: v1.6.0.rc1 → v1.5.1](https://github.com/PyCQA/docformatter/compare/v1.6.0.rc1...v1.5.1) - [github.com/macisamuele/language-formatters-pre-commit-hooks: v2.6.0 → v2.7.0](https://github.com/macisamuele/language-formatters-pre-commit-hooks/compare/v2.6.0...v2.7.0) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 98c8e569..71b9ba03 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,7 +39,7 @@ repos: # Make docstrings PEP 257 compliant - repo: https://github.com/PyCQA/docformatter - rev: v1.6.0.rc1 + rev: v1.5.1 hooks: - id: docformatter args: ["--in-place", "--make-summary-multi-line", "--pre-summary-newline"] @@ -67,7 +67,7 @@ repos: # Do YAML formatting (before the linter checks it for misses) - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.6.0 + rev: v2.7.0 hooks: - id: pretty-format-yaml args: [--autofix, --indent, "2", --preserve-quotes] From 825d3e84d228468020fac806fcbca59b3d06ef13 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 22 Feb 2023 14:12:26 +0100 Subject: [PATCH 31/48] replace progressbar by tqdm --- envs/environment.yaml | 1 - scripts/_helpers.py | 21 ++++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index 9325ac09..5ffe0d71 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -33,7 +33,6 @@ dependencies: - networkx - scipy - shapely>=2.0 -- progressbar2 - pyomo - matplotlib<3.6 - proj diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 5032cdf9..634cc59b 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -4,7 +4,8 @@ # SPDX-License-Identifier: MIT from pathlib import Path - +import urllib +from tqdm import tqdm import pandas as pd REGION_COLS = ["geometry", "name", "x", "y", "country"] @@ -251,16 +252,14 @@ def aggregate_costs(n, flatten=False, opts=None, existing_only=False): def progress_retrieve(url, file): - import urllib - - from progressbar import ProgressBar - - pbar = ProgressBar(0, 100) - - def dlProgress(count, blockSize, totalSize): - pbar.update(int(count * blockSize * 100 / totalSize)) - - urllib.request.urlretrieve(url, file, reporthook=dlProgress) + + with tqdm(unit='B', unit_scale=True, unit_divisor=1024, miniters=1, position=0, leave=True) as t: + def update_to(b=1, bsize=1, tsize=None): + if tsize is not None: + t.total = tsize + t.update(b * bsize - t.n) + + urllib.request.urlretrieve(url, file, reporthook=update_to) def get_aggregation_strategies(aggregation_strategies): From 64745e7ec2ef7008d128d9ef2234f5d78a2243b8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:21:26 +0000 Subject: [PATCH 32/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/_helpers.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 634cc59b..40404d0d 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -3,10 +3,11 @@ # # SPDX-License-Identifier: MIT -from pathlib import Path import urllib -from tqdm import tqdm +from pathlib import Path + import pandas as pd +from tqdm import tqdm REGION_COLS = ["geometry", "name", "x", "y", "country"] @@ -252,13 +253,15 @@ def aggregate_costs(n, flatten=False, opts=None, existing_only=False): def progress_retrieve(url, file): - - with tqdm(unit='B', unit_scale=True, unit_divisor=1024, miniters=1, position=0, leave=True) as t: + with tqdm( + unit="B", unit_scale=True, unit_divisor=1024, miniters=1, position=0, leave=True + ) as t: + def update_to(b=1, bsize=1, tsize=None): if tsize is not None: t.total = tsize t.update(b * bsize - t.n) - + urllib.request.urlretrieve(url, file, reporthook=update_to) From ef047c20fa8173b93776aa112d1c7d4e31e048a9 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 22 Feb 2023 14:38:53 +0100 Subject: [PATCH 33/48] ci: flush python terminal output --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 26111c94..778c8da3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,6 +20,7 @@ on: env: CACHE_NUMBER: 1 # Change this value to manually reset the environment cache + PYTHONUNBUFFERED: 1 # to flush progress bars jobs: build: From 44bb81af468960dde44099b22fccee4b628647dc Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 22 Feb 2023 14:40:02 +0100 Subject: [PATCH 34/48] helpers: undo position fixing in tqdm --- scripts/_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 40404d0d..57b84691 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -254,7 +254,7 @@ def aggregate_costs(n, flatten=False, opts=None, existing_only=False): def progress_retrieve(url, file): with tqdm( - unit="B", unit_scale=True, unit_divisor=1024, miniters=1, position=0, leave=True + unit="B", unit_scale=True, unit_divisor=1024, miniters=1 ) as t: def update_to(b=1, bsize=1, tsize=None): From b134a395b44d1023f1c9f5cf63e2feffa1faf9c0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:40:35 +0000 Subject: [PATCH 35/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/_helpers.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 57b84691..c32baf11 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -253,9 +253,7 @@ def aggregate_costs(n, flatten=False, opts=None, existing_only=False): def progress_retrieve(url, file): - with tqdm( - unit="B", unit_scale=True, unit_divisor=1024, miniters=1 - ) as t: + with tqdm(unit="B", unit_scale=True, unit_divisor=1024, miniters=1) as t: def update_to(b=1, bsize=1, tsize=None): if tsize is not None: From ef07ad0b973f1c8432b26739ee6938f89c9c7a14 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 22 Feb 2023 15:01:49 +0100 Subject: [PATCH 36/48] ci: revert python buffer --- .github/workflows/ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 778c8da3..26111c94 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,7 +20,6 @@ on: env: CACHE_NUMBER: 1 # Change this value to manually reset the environment cache - PYTHONUNBUFFERED: 1 # to flush progress bars jobs: build: From 3642d5c834f0f8358828de7f73cf15c4a4926d44 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 22 Feb 2023 15:07:57 +0100 Subject: [PATCH 37/48] build_renewable_profiles: remove progressbar import --- scripts/build_renewable_profiles.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/build_renewable_profiles.py b/scripts/build_renewable_profiles.py index c8a0fc42..a132115b 100644 --- a/scripts/build_renewable_profiles.py +++ b/scripts/build_renewable_profiles.py @@ -187,7 +187,6 @@ import time import atlite import geopandas as gpd import numpy as np -import progressbar as pgb import xarray as xr from _helpers import configure_logging from dask.distributed import Client, LocalCluster @@ -203,7 +202,6 @@ if __name__ == "__main__": snakemake = mock_snakemake("build_renewable_profiles", technology="solar") configure_logging(snakemake) - pgb.streams.wrap_stderr() nprocesses = int(snakemake.threads) noprogress = not snakemake.config["atlite"].get("show_progress", False) From 846049770e617d07e3da613d742257c70f66bb58 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 22 Feb 2023 18:55:05 +0100 Subject: [PATCH 38/48] cluster option 'm' only aggregates conventional carriers not excluded --- scripts/cluster_network.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cluster_network.py b/scripts/cluster_network.py index 0f01ec8c..876b8209 100644 --- a/scripts/cluster_network.py +++ b/scripts/cluster_network.py @@ -478,9 +478,10 @@ if __name__ == "__main__": aggregate_carriers = set(n.generators.carrier) - set(exclude_carriers) if snakemake.wildcards.clusters.endswith("m"): n_clusters = int(snakemake.wildcards.clusters[:-1]) - aggregate_carriers = snakemake.config["electricity"].get( - "conventional_carriers" + conventional = set( + snakemake.config["electricity"].get("conventional_carriers", []) ) + aggregate_carriers = conventional.intersection(aggregate_carriers) elif snakemake.wildcards.clusters == "all": n_clusters = len(n.buses) else: From 708cdb8916f127d4c9e14db16c62860079848bae Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 22 Feb 2023 19:13:03 +0100 Subject: [PATCH 39/48] ci: reduce duplications of test/config.test1.yaml --- .github/workflows/ci.yaml | 4 +- test/config.test1.yaml | 281 -------------------------------------- 2 files changed, 1 insertion(+), 284 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 26111c94..e4dbbe24 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -95,6 +95,4 @@ jobs: run: | conda activate pypsa-eur conda list - cp test/config.test1.yaml config.yaml - snakemake --cores all solve_all_networks - rm -rf resources/*.nc resources/*.geojson resources/*.h5 networks results + snakemake -call solve_all_networks --configfile config.test1.yaml diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 399d2265..a7f52eaa 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -2,18 +2,9 @@ # # SPDX-License-Identifier: CC0-1.0 -version: 0.7.0 tutorial: true -logging: - level: INFO - format: '%(levelname)s:%(name)s:%(message)s' - -run: - name: "" scenario: - simpl: [''] - ll: ['copt'] clusters: [5] opts: [Co2L-24H] @@ -22,20 +13,8 @@ countries: ['BE'] snapshots: start: "2013-03-01" end: "2013-03-08" - inclusive: 'left' # include start, not end - -enable: - prepare_links_p_nom: false - retrieve_databundle: true - retrieve_cost_data: true - build_cutout: false - retrieve_cutout: true - build_natura_raster: false - retrieve_natura_raster: true - custom_busmap: false electricity: - voltages: [220., 300., 380.] co2limit: 100.e+6 extendable_carriers: @@ -44,38 +23,8 @@ electricity: Store: [H2] Link: [H2 pipeline] - max_hours: - battery: 6 - H2: 168 - - # use pandas query strings here, e.g. Country not in ['Germany'] - powerplants_filter: (DateOut >= 2022 or DateOut != DateOut) - # use pandas query strings here, e.g. Country in ['Germany'] - custom_powerplants: false - - conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] - renewable_carriers: [solar, onwind, offwind-ac, offwind-dc, hydro] - - estimate_renewable_capacities: - enable: true - # Add capacities from OPSD data - from_opsd: true - # Renewable capacities are based on existing capacities reported by IRENA - year: 2020 - # Artificially limit maximum capacities to factor * (IRENA capacities), - # i.e. 110% of 's capacities => expansion_limit: 1.1 - # false: Use estimated renewable potentials determine by the workflow - expansion_limit: false - technology_mapping: - # Wind is the Fueltype in powerplantmatching, onwind, offwind-{ac,dc} the carrier in PyPSA-Eur - Offshore: [offwind-ac, offwind-dc] - Onshore: [onwind] - PV: [solar] - atlite: - nprocesses: 4 - show_progress: false # false saves time cutouts: be-03-2013-era5: module: era5 @@ -86,246 +35,16 @@ atlite: renewable: onwind: cutout: be-03-2013-era5 - resource: - method: wind - turbine: Vestas_V112_3MW - capacity_per_sqkm: 3 # ScholzPhd Tab 4.3.1: 10MW/km^2 - # correction_factor: 0.93 - corine: - # Scholz, Y. (2012). Renewable energy based electricity supply at low costs: - # development of the REMix model and application for Europe. ( p.42 / p.28) - grid_codes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32] - distance: 1000 - distance_grid_codes: [1, 2, 3, 4, 5, 6] - natura: true - excluder_resolution: 200 - potential: simple # or conservative - clip_p_max_pu: 1.e-2 offwind-ac: cutout: be-03-2013-era5 - resource: - method: wind - turbine: NREL_ReferenceTurbine_5MW_offshore - capacity_per_sqkm: 3 - # correction_factor: 0.93 - corine: [44, 255] - natura: true - ship_threshold: 400 - max_shore_distance: 30000 - excluder_resolution: 200 - potential: simple # or conservative - clip_p_max_pu: 1.e-2 offwind-dc: cutout: be-03-2013-era5 - resource: - method: wind - turbine: NREL_ReferenceTurbine_5MW_offshore - # ScholzPhd Tab 4.3.1: 10MW/km^2 - capacity_per_sqkm: 3 - # correction_factor: 0.93 - corine: [44, 255] - natura: true - ship_threshold: 400 - min_shore_distance: 30000 - excluder_resolution: 200 - potential: simple # or conservative - clip_p_max_pu: 1.e-2 solar: cutout: be-03-2013-era5 - resource: - method: pv - panel: CSi - orientation: - slope: 35. - azimuth: 180. - capacity_per_sqkm: 1.7 # ScholzPhd Tab 4.3.1: 170 MW/km^2 - # Determined by comparing uncorrected area-weighted full-load hours to those - # published in Supplementary Data to - # Pietzcker, Robert Carl, et al. "Using the sun to decarbonize the power - # sector: The economic potential of photovoltaics and concentrating solar - # power." Applied Energy 135 (2014): 704-720. - correction_factor: 0.854337 - corine: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 31, 32] - natura: true - excluder_resolution: 200 - potential: simple # or conservative - clip_p_max_pu: 1.e-2 - -lines: - types: - 220.: "Al/St 240/40 2-bundle 220.0" - 300.: "Al/St 240/40 3-bundle 300.0" - 380.: "Al/St 240/40 4-bundle 380.0" - s_max_pu: 0.7 - s_nom_max: .inf - length_factor: 1.25 - under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity - -links: - p_max_pu: 1.0 - p_nom_max: .inf - include_tyndp: true - under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity - -transformers: - x: 0.1 - s_nom: 2000. - type: '' - -load: - power_statistics: true # only for files from <2019; set false in order to get ENTSOE transparency data - interpolate_limit: 3 # data gaps up until this size are interpolated linearly - time_shift_for_large_gaps: 1w # data gaps up until this size are copied by copying from - manual_adjustments: true # false - scaling_factor: 1.0 - -costs: - year: 2030 - version: v0.5.0 - rooftop_share: 0.14 - fill_values: - FOM: 0 - VOM: 0 - efficiency: 1 - fuel: 0 - investment: 0 - lifetime: 25 - "CO2 intensity": 0 - "discount rate": 0.07 - marginal_cost: - solar: 0.01 - onwind: 0.015 - offwind: 0.015 - H2: 0. - battery: 0. - emission_prices: # only used with the option Ep - co2: 0. clustering: - simplify_network: - to_substations: false # network is simplified to nodes with positive or negative power injection (i.e. substations or offwind connections) - algorithm: kmeans # choose from: [hac, kmeans] - feature: solar+onwind-time # only for hac. choose from: [solar+onwind-time, solar+onwind-cap, solar-time, solar-cap, solar+offwind-cap] etc. - cluster_network: - algorithm: kmeans - feature: solar+onwind-time exclude_carriers: ["OCGT", "offwind-ac", "coal"] - aggregation_strategies: - generators: - p_nom_max: sum # use "min" for more conservative assumptions - p_nom_min: sum - p_min_pu: mean - marginal_cost: mean - committable: any - ramp_limit_up: max - ramp_limit_down: max - efficiency: mean solving: - options: - formulation: kirchhoff - load_shedding: false - noisy_costs: true - min_iterations: 1 - max_iterations: 1 - clip_p_max_pu: 0.01 - #nhours: 10 solver: name: glpk - # solver: - # name: gurobi - # threads: 4 - # method: 2 # barrier - # crossover: 0 - # BarConvTol: 1.e-5 - # FeasibilityTol: 1.e-6 - # AggFill: 0 - # PreDual: 0 - # GURO_PAR_BARDENSETHRESH: 200 - # solver: - # name: cplex - # threads: 4 - # lpmethod: 4 # barrier - # solutiontype: 2 # non basic solution, ie no crossover - # barrier.convergetol: 1.e-5 - # feasopt.tolerance: 1.e-6 - -plotting: - map: - figsize: [7, 7] - boundaries: [-10.2, 29, 35, 72] - p_nom: - bus_size_factor: 5.e+4 - linewidth_factor: 3.e+3 - - costs_max: 800 - costs_threshold: 1 - - energy_max: 15000. - energy_min: -10000. - energy_threshold: 50. - - vre_techs: ["onwind", "offwind-ac", "offwind-dc", "solar", "ror"] - conv_techs: ["OCGT", "CCGT", "Nuclear", "Coal"] - storage_techs: ["hydro+PHS", "battery", "H2"] - load_carriers: ["AC load"] - AC_carriers: ["AC line", "AC transformer"] - link_carriers: ["DC line", "Converter AC-DC"] - tech_colors: - "onwind": "#235ebc" - "onshore wind": "#235ebc" - 'offwind': "#6895dd" - 'offwind-ac': "#6895dd" - 'offshore wind': "#6895dd" - 'offshore wind ac': "#6895dd" - 'offwind-dc': "#74c6f2" - 'offshore wind dc': "#74c6f2" - "hydro": "#08ad97" - "hydro+PHS": "#08ad97" - "PHS": "#08ad97" - "hydro reservoir": "#08ad97" - 'hydroelectricity': '#08ad97' - "ror": "#4adbc8" - "run of river": "#4adbc8" - 'solar': "#f9d002" - 'solar PV': "#f9d002" - 'solar thermal': '#ffef60' - 'biomass': '#0c6013' - 'solid biomass': '#06540d' - 'biogas': '#23932d' - 'waste': '#68896b' - 'geothermal': '#ba91b1' - "OCGT": "#d35050" - "gas": "#d35050" - "natural gas": "#d35050" - "CCGT": "#b20101" - "nuclear": "#ff9000" - "coal": "#707070" - "lignite": "#9e5a01" - "oil": "#262626" - "H2": "#ea048a" - "hydrogen storage": "#ea048a" - "battery": "#b8ea04" - "Electric load": "#f9d002" - "electricity": "#f9d002" - "lines": "#70af1d" - "transmission lines": "#70af1d" - "AC-AC": "#70af1d" - "AC line": "#70af1d" - "links": "#8a1caf" - "HVDC links": "#8a1caf" - "DC-DC": "#8a1caf" - "DC link": "#8a1caf" - nice_names: - OCGT: "Open-Cycle Gas" - CCGT: "Combined-Cycle Gas" - offwind-ac: "Offshore Wind (AC)" - offwind-dc: "Offshore Wind (DC)" - onwind: "Onshore Wind" - solar: "Solar" - PHS: "Pumped Hydro Storage" - hydro: "Reservoir & Dam" - battery: "Battery Storage" - H2: "Hydrogen Storage" - lines: "Transmission Lines" - ror: "Run of River" From 4e75d6c64432ae32b31c0e7bbacc70987ef65211 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 22 Feb 2023 19:20:28 +0100 Subject: [PATCH 40/48] fix path to test config --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e4dbbe24..eb995662 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -95,4 +95,4 @@ jobs: run: | conda activate pypsa-eur conda list - snakemake -call solve_all_networks --configfile config.test1.yaml + snakemake -call solve_all_networks --configfile test/config.test1.yaml From 67d878d1d7d0dccbdf43508b49d34ec5ec3c4aca Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 22 Feb 2023 19:28:07 +0100 Subject: [PATCH 41/48] allow disabling max_depth through config overwrite --- Snakefile | 2 +- test/config.test1.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Snakefile b/Snakefile index 0ebfe89d..5c96c55d 100644 --- a/Snakefile +++ b/Snakefile @@ -343,7 +343,7 @@ rule build_renewable_profiles: ), gebco=lambda w: ( "data/bundle/GEBCO_2014_2D.nc" - if "max_depth" in config["renewable"][w.technology].keys() + if config["renewable"][w.technology].get("max_depth") else [] ), ship_density=lambda w: ( diff --git a/test/config.test1.yaml b/test/config.test1.yaml index a7f52eaa..5a44a394 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -37,8 +37,10 @@ renewable: cutout: be-03-2013-era5 offwind-ac: cutout: be-03-2013-era5 + max_depth: false offwind-dc: cutout: be-03-2013-era5 + max_depth: false solar: cutout: be-03-2013-era5 From 8837ba6a5f1f179bf892a03dc7f9874f6d5acd45 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Sun, 5 Mar 2023 15:12:20 +0100 Subject: [PATCH 42/48] allow false for max_depth --- scripts/build_renewable_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_renewable_profiles.py b/scripts/build_renewable_profiles.py index a132115b..01e050a7 100644 --- a/scripts/build_renewable_profiles.py +++ b/scripts/build_renewable_profiles.py @@ -256,7 +256,7 @@ if __name__ == "__main__": snakemake.input.ship_density, codes=func, crs=4326, allow_no_overlap=True ) - if "max_depth" in config: + if config.get('max_depth'): # lambda not supported for atlite + multiprocessing # use named function np.greater with partially frozen argument instead # and exclude areas where: -max_depth > grid cell depth From 36003c96270f622e67288ed8179e04cbbaa42d84 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 14:12:38 +0000 Subject: [PATCH 43/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/build_renewable_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_renewable_profiles.py b/scripts/build_renewable_profiles.py index 01e050a7..f74aa2aa 100644 --- a/scripts/build_renewable_profiles.py +++ b/scripts/build_renewable_profiles.py @@ -256,7 +256,7 @@ if __name__ == "__main__": snakemake.input.ship_density, codes=func, crs=4326, allow_no_overlap=True ) - if config.get('max_depth'): + if config.get("max_depth"): # lambda not supported for atlite + multiprocessing # use named function np.greater with partially frozen argument instead # and exclude areas where: -max_depth > grid cell depth From 3bbd321b8296a37d690f70281547185d228a4a99 Mon Sep 17 00:00:00 2001 From: Fabian Date: Mon, 6 Mar 2023 09:35:11 +0100 Subject: [PATCH 44/48] config: separate solver_options solve_network: adjust code to new solver_options config --- config.default.yaml | 91 +++++++++++++++++++++++++++++++--------- scripts/solve_network.py | 9 ++-- 2 files changed, 77 insertions(+), 23 deletions(-) diff --git a/config.default.yaml b/config.default.yaml index f01474b2..9e98ea01 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -281,33 +281,86 @@ clustering: efficiency: mean solving: + #tmpdir: "path/to/tmp" options: formulation: kirchhoff + clip_p_max_pu: 1.e-2 load_shedding: false noisy_costs: true - min_iterations: 4 - max_iterations: 6 - clip_p_max_pu: 0.01 skip_iterations: true track_iterations: false - #nhours: 10 + min_iterations: 4 + max_iterations: 6 + keep_shadowprices: + - Bus + - Line + - Link + - Transformer + - GlobalConstraint + - Generator + - Store + - StorageUnit + solver: name: gurobi - threads: 4 - method: 2 # barrier - crossover: 0 - BarConvTol: 1.e-5 - FeasibilityTol: 1.e-6 - AggFill: 0 - PreDual: 0 - GURO_PAR_BARDENSETHRESH: 200 - # solver: - # name: cplex - # threads: 4 - # lpmethod: 4 # barrier - # solutiontype: 2 # non basic solution, ie no crossover - # barrier.convergetol: 1.e-5 - # feasopt.tolerance: 1.e-6 + options: gurobi-default + + solver_options: + highs-default: + # refer to https://ergo-code.github.io/HiGHS/options/definitions.html#solver + threads: 4 + solver: "ipm" + run_crossover: "off" + small_matrix_value: 1e-6 + large_matrix_value: 1e9 + primal_feasibility_tolerance: 1e-5 + dual_feasibility_tolerance: 1e-5 + ipm_optimality_tolerance: 1e-4 + parallel: "on" + random_seed: 123 + gurobi-default: + threads: 4 + method: 2 # barrier + crossover: 0 + BarConvTol: 1.e-6 + Seed: 123 + AggFill: 0 + PreDual: 0 + GURO_PAR_BARDENSETHRESH: 200 + seed: 10 # Consistent seed for all plattforms + gurobi-numeric-focus: + name: gurobi + NumericFocus: 3 # Favour numeric stability over speed + method: 2 # barrier + crossover: 0 # do not use crossover + BarHomogeneous: 1 # Use homogeneous barrier if standard does not converge + BarConvTol: 1.e-5 + FeasibilityTol: 1.e-4 + OptimalityTol: 1.e-4 + ObjScale: -0.5 + threads: 8 + Seed: 123 + gurobi-fallback: # Use gurobi defaults + name: gurobi + crossover: 0 + method: 2 # barrier + BarHomogeneous: 1 # Use homogeneous barrier if standard does not converge + BarConvTol: 1.e-5 + FeasibilityTol: 1.e-5 + OptimalityTol: 1.e-5 + Seed: 123 + threads: 8 + cplex-default: + threads: 4 + lpmethod: 4 # barrier + solutiontype: 2 # non basic solution, ie no crossover + barrier_convergetol: 1.e-5 + feasopt_tolerance: 1.e-6 + + cbc-default: {} # Used in CI + + mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2 + plotting: map: diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 4804a23c..75e1c601 100755 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -373,8 +373,9 @@ def extra_functionality(n, snapshots): def solve_network(n, config, opts="", **kwargs): - solver_options = config["solving"]["solver"].copy() - solver_name = solver_options.pop("name") + set_of_options = config['solving']['solver']['options'] + solver_options = config['solving']["solver_options"][set_of_options] if set_of_options else {} + solver_name = config['solving']['solver']['name'] cf_solving = config["solving"]["options"] track_iterations = cf_solving.get("track_iterations", False) min_iterations = cf_solving.get("min_iterations", 4) @@ -411,7 +412,7 @@ if __name__ == "__main__": from _helpers import mock_snakemake snakemake = mock_snakemake( - "solve_network", simpl="", clusters="5", ll="copt", opts="Co2L-BAU-CCL-24H" + "solve_network", simpl="", clusters="5", ll="v1.5", opts="" ) configure_logging(snakemake) @@ -419,7 +420,7 @@ if __name__ == "__main__": if tmpdir is not None: Path(tmpdir).mkdir(parents=True, exist_ok=True) opts = snakemake.wildcards.opts.split("-") - solve_opts = snakemake.config["solving"]["options"] + solve_opts = snakemake.config['solving']['options'] fn = getattr(snakemake.log, "memory", None) with memory_logger(filename=fn, interval=30.0) as mem: From 5ab10eae37cd71a4676478c79c79b520ff048d61 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 08:40:19 +0000 Subject: [PATCH 45/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- config.default.yaml | 16 ++++++++-------- scripts/solve_network.py | 10 ++++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/config.default.yaml b/config.default.yaml index 9e98ea01..dde27bfb 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -292,14 +292,14 @@ solving: min_iterations: 4 max_iterations: 6 keep_shadowprices: - - Bus - - Line - - Link - - Transformer - - GlobalConstraint - - Generator - - Store - - StorageUnit + - Bus + - Line + - Link + - Transformer + - GlobalConstraint + - Generator + - Store + - StorageUnit solver: name: gurobi diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 75e1c601..24269cb2 100755 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -373,9 +373,11 @@ def extra_functionality(n, snapshots): def solve_network(n, config, opts="", **kwargs): - set_of_options = config['solving']['solver']['options'] - solver_options = config['solving']["solver_options"][set_of_options] if set_of_options else {} - solver_name = config['solving']['solver']['name'] + set_of_options = config["solving"]["solver"]["options"] + solver_options = ( + config["solving"]["solver_options"][set_of_options] if set_of_options else {} + ) + solver_name = config["solving"]["solver"]["name"] cf_solving = config["solving"]["options"] track_iterations = cf_solving.get("track_iterations", False) min_iterations = cf_solving.get("min_iterations", 4) @@ -420,7 +422,7 @@ if __name__ == "__main__": if tmpdir is not None: Path(tmpdir).mkdir(parents=True, exist_ok=True) opts = snakemake.wildcards.opts.split("-") - solve_opts = snakemake.config['solving']['options'] + solve_opts = snakemake.config["solving"]["options"] fn = getattr(snakemake.log, "memory", None) with memory_logger(filename=fn, interval=30.0) as mem: From 03322168911d0a0e82c008501df83ab21a78fffa Mon Sep 17 00:00:00 2001 From: Fabian Date: Mon, 6 Mar 2023 09:46:18 +0100 Subject: [PATCH 46/48] update release notes --- doc/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index f5048ad0..7e7fab1f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,7 +10,7 @@ Release Notes Upcoming Release ================ -* new features +* The solver configuration in `config.default.yaml` are now modularized. To change the set of solver options, change to value in `solving`: `solver`: `options` to one of the keys `solving`: `solver_options`. PyPSA-Eur 0.7.0 (16th February 2023) From bf969424a2fe92514c0656b935f24ffd1a36a40c Mon Sep 17 00:00:00 2001 From: Fabian Date: Mon, 6 Mar 2023 15:41:02 +0100 Subject: [PATCH 47/48] ci modularization fix cutout retrieval and profile in dag --- Snakefile | 8 +++----- config.default.yaml | 2 +- scripts/add_electricity.py | 2 +- test/config.test1.yaml | 5 +++++ 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Snakefile b/Snakefile index 5c96c55d..d50dfe8e 100644 --- a/Snakefile +++ b/Snakefile @@ -319,7 +319,7 @@ rule retrieve_ship_raster: rule build_ship_raster: input: ship_density="data/shipdensity_global.zip", - cutouts=expand("cutouts/" + CDIR + "{cutouts}.nc", **config["atlite"]), + cutouts=expand("cutouts/" + CDIR + "{cutout}.nc", cutout=[config["renewable"][k]['cutout'] for k in config['electricity']['renewable_carriers']]) output: "resources/" + RDIR + "shipdensity_raster.nc", log: @@ -381,9 +381,7 @@ rule build_hydro_profile: input: country_shapes="resources/" + RDIR + "country_shapes.geojson", eia_hydro_generation="data/eia_hydro_annual_generation.csv", - cutout=f"cutouts/" + CDIR + config["renewable"]["hydro"]["cutout"] + ".nc" - if "hydro" in config["renewable"] - else [], + cutout=f"cutouts/" + CDIR + config["renewable"]["hydro"]["cutout"] + ".nc", output: "resources/" + RDIR + "profile_hydro.nc", log: @@ -398,7 +396,7 @@ rule add_electricity: input: **{ f"profile_{tech}": "resources/" + RDIR + f"profile_{tech}.nc" - for tech in config["renewable"] + for tech in config["electricity"]["renewable_carriers"] }, **{ f"conventional_{carrier}_{attr}": fn diff --git a/config.default.yaml b/config.default.yaml index 9e98ea01..dc785df4 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -356,8 +356,8 @@ solving: solutiontype: 2 # non basic solution, ie no crossover barrier_convergetol: 1.e-5 feasopt_tolerance: 1.e-6 - cbc-default: {} # Used in CI + glpk-default: {} # Used in CI mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2 diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 88ea2ada..6daf0111 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -720,7 +720,7 @@ if __name__ == "__main__": ppl = load_powerplants(snakemake.input.powerplants) if "renewable_carriers" in snakemake.config["electricity"]: - renewable_carriers = set(snakemake.config["renewable"]) + renewable_carriers = set(snakemake.config["electricity"]["renewable_carriers"]) else: logger.warning( "Missing key `renewable_carriers` under config entry `electricity`. " diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 5a44a394..5ab22d35 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -23,6 +23,8 @@ electricity: Store: [H2] Link: [H2 pipeline] + renewable_carriers: [solar, onwind, offwind-ac, offwind-dc] + atlite: cutouts: @@ -44,9 +46,12 @@ renewable: solar: cutout: be-03-2013-era5 + clustering: exclude_carriers: ["OCGT", "offwind-ac", "coal"] + solving: solver: name: glpk + options: "glpk-default" From 8db3780fce367aa9643d54eea7ca3e89646273cb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 14:43:45 +0000 Subject: [PATCH 48/48] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- Snakefile | 8 +++++++- doc/release_notes.rst | 2 +- test/config.test1.yaml | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Snakefile b/Snakefile index d50dfe8e..c26beb91 100644 --- a/Snakefile +++ b/Snakefile @@ -319,7 +319,13 @@ rule retrieve_ship_raster: rule build_ship_raster: input: ship_density="data/shipdensity_global.zip", - cutouts=expand("cutouts/" + CDIR + "{cutout}.nc", cutout=[config["renewable"][k]['cutout'] for k in config['electricity']['renewable_carriers']]) + cutouts=expand( + "cutouts/" + CDIR + "{cutout}.nc", + cutout=[ + config["renewable"][k]["cutout"] + for k in config["electricity"]["renewable_carriers"] + ], + ), output: "resources/" + RDIR + "shipdensity_raster.nc", log: diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 7e7fab1f..76a794ad 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,7 +10,7 @@ Release Notes Upcoming Release ================ -* The solver configuration in `config.default.yaml` are now modularized. To change the set of solver options, change to value in `solving`: `solver`: `options` to one of the keys `solving`: `solver_options`. +* The solver configuration in `config.default.yaml` are now modularized. To change the set of solver options, change to value in `solving`: `solver`: `options` to one of the keys `solving`: `solver_options`. PyPSA-Eur 0.7.0 (16th February 2023) diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 5ab22d35..cf8e06bc 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -46,7 +46,7 @@ renewable: solar: cutout: be-03-2013-era5 - + clustering: exclude_carriers: ["OCGT", "offwind-ac", "coal"]