* Implemented which uses the overpass API to download power features for individual countries. * Extended rule by input. * Bug fixes and improvements to clean_osm_data.py. Added in retrieve_osm_data.py. * Updated clean_osm_data and retrieve_osm_data to create clean substations. * Finished clean_osm_data function. * Added check whether line is a circle. If so, drop it. * Extended build_electricity.smk by build_osm_network.py * Added build_osm_network * Working osm-network-fast * Bug fixes. * Finalised and cleaned including docstrings. * Added try catch to retrieve_osm_data. Allows for parallelisation of downloads. * Updated cleaning process. * Set maximum number of threads for retrieving to 4, wrt. fair usage policy and potential request errors. * Intermediate update on clean_osm_data.py. Added docstrings. * Bug fix. * Bug fix. * Bug fixes in data types out of clean_osm_data * Significant improvements to retrieve_osm_data, clean_osm_data. Cleaned code. Speed improvements * Cleaned config. * Fixes. * Bug fixes. * Updated default config * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Removed overpass from required packages. Not needed anymore. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added links_relations (route = power, frequency = 0) to retrieval. This will change how HVDC links are extracted in the near future. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Work-in-progress clean_osm_data * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added clean links output to clean_osm_data. Script uses OSM relations to retrieve clean HVDC links. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * New code for integrating HVDC links. Using relations. Base network implementation functioning. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * removed manual line dropping. * Updated clean script * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * reverted Snakefile to default: sync settings * added prebuilt functionality. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Updated build_electricity.smk to work with scenario management. * removed commented-out code. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * removed commented-out code. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixed bug in pdf export by substituting pdf export with svg. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Bug-fix Snakefile * dropped not needed columns from build_osm_network. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Updated build_shapes, config.default and clean_osm_data. * pre-commit changes. * test * Added initial prepare_osm_network_release.py script * Finalised prepare_osm_network_release script to build clean and stable OSM base_network input files. * Added new rules/development.smk * Updated clean_osm_data to add substation_centroid to linestrings * Updated clean_osm_data to add substation_centroid to linestrings * Updated clean_osm_data to add substation_centroid to linestrings * Updated clean_osm_data to add substation_centroid to linestrings * Added osm-prebuilt functionality and zenodo sandbox repository. * Updated clean_osm_data to geopandas v.1.01 * Made base_network and build_osm_network function more robust for empty links. * Made base_network and build_osm_network function more robust for empty links. * Bug fix in base_network. Voltage level null is now kept (relevant e.g. for Corsica) * Merge with hcanges in upstream PR 1146. Fixing UA and MD. * Updated Zenodo and fixed prepare_osm_network_release * Updated osm network release. * Updated prepare osm network release. * Updated MD, UA scripts. * Cleaned determine_availability_matrix_MD_UA.py, removed redundant code * Bug fixes. * Bug fixes for UA MD scripts. * Rename of build script. * Bug fix: only distribute load to buses with substation. * Updated zenodo sandbox repository. * Updated config.default * Cleaned config.default.yaml: Related settings grouped together and redundant voltage settings aggregated. * Cleaned config.default.yaml: Related settings grouped together and redundant voltage settings aggregated. Added release notes. * Updated Zenodo repositories for OSM-prebuilt to offcial publication. * Updated configtables * Updated links.csv: Under_construction lines to in commission. * Updated link 8394 and parameter_corrections: Continuation of North-Sea-Link. * Major update: fix simplify_network, fix Corsica, updated build_osm_network to include lines overpassing nodes. * remove config backup * Bug fix: Carrier type of all supernodes corrected to 'AC' * Bug fix: Carrier type of all supernodes corrected to 'AC' * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Updated rules and base_network for compatibility with TYNDP projects. * Updated Zenodo repository and prebuilt network to include 150 kV HVDC connections. * Removed outdated config backup. * Implemented all comments from PR #1079. Cleaned up OSM implementation. * Bug fix: Added all voltages, 200 kV-750 kV, to default config. * Cleaning and bugfixes. * Updated Zenodo repository to https://zenodo.org/records/13358976. Added converter voltages, 'underground' property for DC lines/cables, and included Konti-Skan HVDC (DK-SE). Added compatibility with https://github.com/PyPSA/pypsa-eur/pull/1079 and https://github.com/PyPSA/pypsa-eur/pull/1085 * Apply suggestions from code review * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * simplify_network: handle complicated transformer topologies * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * syntax fix --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
142 lines
3.6 KiB
Plaintext
142 lines
3.6 KiB
Plaintext
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
from pathlib import Path
|
|
import yaml
|
|
from os.path import normpath, exists
|
|
from shutil import copyfile, move, rmtree
|
|
from snakemake.utils import min_version
|
|
|
|
min_version("8.11")
|
|
|
|
from scripts._helpers import path_provider, copy_default_files, get_scenarios, get_rdir
|
|
|
|
|
|
copy_default_files(workflow)
|
|
|
|
|
|
configfile: "config/config.default.yaml"
|
|
configfile: "config/config.yaml"
|
|
|
|
|
|
run = config["run"]
|
|
scenarios = get_scenarios(run)
|
|
RDIR = get_rdir(run)
|
|
|
|
shared_resources = run["shared_resources"]["policy"]
|
|
exclude_from_shared = run["shared_resources"]["exclude"]
|
|
logs = path_provider("logs/", RDIR, shared_resources, exclude_from_shared)
|
|
benchmarks = path_provider("benchmarks/", RDIR, shared_resources, exclude_from_shared)
|
|
resources = path_provider("resources/", RDIR, shared_resources, exclude_from_shared)
|
|
|
|
CDIR = "" if run["shared_cutouts"] else RDIR
|
|
RESULTS = "results/" + RDIR
|
|
|
|
|
|
localrules:
|
|
purge,
|
|
|
|
|
|
wildcard_constraints:
|
|
simpl="[a-zA-Z0-9]*",
|
|
clusters="[0-9]+(m|c)?|all",
|
|
ll=r"(v|c)([0-9\.]+|opt)",
|
|
opts=r"[-+a-zA-Z0-9\.]*",
|
|
sector_opts=r"[-+a-zA-Z0-9\.\s]*",
|
|
|
|
|
|
include: "rules/common.smk"
|
|
include: "rules/collect.smk"
|
|
include: "rules/retrieve.smk"
|
|
include: "rules/build_electricity.smk"
|
|
include: "rules/build_sector.smk"
|
|
include: "rules/solve_electricity.smk"
|
|
include: "rules/postprocess.smk"
|
|
include: "rules/validate.smk"
|
|
include: "rules/development.smk"
|
|
|
|
|
|
if config["foresight"] == "overnight":
|
|
|
|
include: "rules/solve_overnight.smk"
|
|
|
|
|
|
if config["foresight"] == "myopic":
|
|
|
|
include: "rules/solve_myopic.smk"
|
|
|
|
|
|
if config["foresight"] == "perfect":
|
|
|
|
include: "rules/solve_perfect.smk"
|
|
|
|
|
|
rule all:
|
|
input:
|
|
expand(RESULTS + "graphs/costs.svg", run=config["run"]["name"]),
|
|
default_target: True
|
|
|
|
|
|
rule create_scenarios:
|
|
output:
|
|
config["run"]["scenarios"]["file"],
|
|
conda:
|
|
"envs/retrieve.yaml"
|
|
script:
|
|
"config/create_scenarios.py"
|
|
|
|
|
|
rule purge:
|
|
run:
|
|
import builtins
|
|
|
|
do_purge = builtins.input(
|
|
"Do you really want to delete all generated resources, \nresults and docs (downloads are kept)? [y/N] "
|
|
)
|
|
if do_purge == "y":
|
|
rmtree("resources/", ignore_errors=True)
|
|
rmtree("results/", ignore_errors=True)
|
|
rmtree("doc/_build", ignore_errors=True)
|
|
print("Purging generated resources, results and docs. Downloads are kept.")
|
|
else:
|
|
raise Exception(f"Input {do_purge}. Aborting purge.")
|
|
|
|
|
|
rule dag:
|
|
message:
|
|
"Creating DAG of workflow."
|
|
output:
|
|
dot=resources("dag.dot"),
|
|
pdf=resources("dag.pdf"),
|
|
png=resources("dag.png"),
|
|
conda:
|
|
"envs/environment.yaml"
|
|
shell:
|
|
r"""
|
|
snakemake --rulegraph all | sed -n "/digraph/,\$p" > {output.dot}
|
|
dot -Tpdf -o {output.pdf} {output.dot}
|
|
dot -Tpng -o {output.png} {output.dot}
|
|
"""
|
|
|
|
|
|
rule doc:
|
|
message:
|
|
"Build documentation."
|
|
output:
|
|
directory("doc/_build"),
|
|
shell:
|
|
"make -C doc html"
|
|
|
|
|
|
rule sync:
|
|
params:
|
|
cluster=f"{config['remote']['ssh']}:{config['remote']['path']}",
|
|
shell:
|
|
"""
|
|
rsync -uvarh --ignore-missing-args --files-from=.sync-send . {params.cluster}
|
|
rsync -uvarh --no-g {params.cluster}/resources . || echo "No resources directory, skipping rsync"
|
|
rsync -uvarh --no-g {params.cluster}/results . || echo "No results directory, skipping rsync"
|
|
rsync -uvarh --no-g {params.cluster}/logs . || echo "No logs directory, skipping rsync"
|
|
"""
|