Merge branch 'master' into readthedocs-apt
This commit is contained in:
commit
9385eb7076
@ -30,7 +30,7 @@ repos:
|
|||||||
|
|
||||||
# Find common spelling mistakes in comments and docstrings
|
# Find common spelling mistakes in comments and docstrings
|
||||||
- repo: https://github.com/codespell-project/codespell
|
- repo: https://github.com/codespell-project/codespell
|
||||||
rev: v2.2.5
|
rev: v2.2.6
|
||||||
hooks:
|
hooks:
|
||||||
- id: codespell
|
- id: codespell
|
||||||
args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words-list=fom,appartment,bage,ore,setis,tabacco,berfore'] # Ignore capital case words, e.g. country codes
|
args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words-list=fom,appartment,bage,ore,setis,tabacco,berfore'] # Ignore capital case words, e.g. country codes
|
||||||
|
29
Snakefile
29
Snakefile
@ -46,12 +46,6 @@ wildcard_constraints:
|
|||||||
sector_opts="[-+a-zA-Z0-9\.\s]*",
|
sector_opts="[-+a-zA-Z0-9\.\s]*",
|
||||||
|
|
||||||
|
|
||||||
rule all:
|
|
||||||
input:
|
|
||||||
RESULTS + "graphs/costs.pdf",
|
|
||||||
default_target: True
|
|
||||||
|
|
||||||
|
|
||||||
include: "rules/common.smk"
|
include: "rules/common.smk"
|
||||||
include: "rules/collect.smk"
|
include: "rules/collect.smk"
|
||||||
include: "rules/retrieve.smk"
|
include: "rules/retrieve.smk"
|
||||||
@ -72,13 +66,26 @@ if config["foresight"] == "myopic":
|
|||||||
include: "rules/solve_myopic.smk"
|
include: "rules/solve_myopic.smk"
|
||||||
|
|
||||||
|
|
||||||
|
rule all:
|
||||||
|
input:
|
||||||
|
RESULTS + "graphs/costs.pdf",
|
||||||
|
default_target: True
|
||||||
|
|
||||||
|
|
||||||
rule purge:
|
rule purge:
|
||||||
message:
|
|
||||||
"Purging generated resources, results and docs. Downloads are kept."
|
|
||||||
run:
|
run:
|
||||||
rmtree("resources/", ignore_errors=True)
|
import builtins
|
||||||
rmtree("results/", ignore_errors=True)
|
|
||||||
rmtree("doc/_build", ignore_errors=True)
|
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:
|
rule dag:
|
||||||
|
@ -20,6 +20,13 @@ Upcoming Release
|
|||||||
|
|
||||||
* Files extracted from sector-coupled data bundle have been moved from ``data/`` to ``data/sector-bundle``.
|
* Files extracted from sector-coupled data bundle have been moved from ``data/`` to ``data/sector-bundle``.
|
||||||
|
|
||||||
|
* It is now possible to specify years for biomass potentials which do not exist
|
||||||
|
in the JRC-ENSPRESO database, e.g. 2037. These are linearly interpolated.
|
||||||
|
|
||||||
|
* In pathway mode, the biomass potential is linked to the investment year.
|
||||||
|
|
||||||
|
* Rule ``purge`` now initiates a dialog to confirm if purge is desired.
|
||||||
|
|
||||||
|
|
||||||
**Bugs and Compatibility**
|
**Bugs and Compatibility**
|
||||||
|
|
||||||
|
@ -280,15 +280,16 @@ rule build_biomass_potentials:
|
|||||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||||
output:
|
output:
|
||||||
biomass_potentials_all=RESOURCES
|
biomass_potentials_all=RESOURCES
|
||||||
+ "biomass_potentials_all_s{simpl}_{clusters}.csv",
|
+ "biomass_potentials_all_s{simpl}_{clusters}_{planning_horizons}.csv",
|
||||||
biomass_potentials=RESOURCES + "biomass_potentials_s{simpl}_{clusters}.csv",
|
biomass_potentials=RESOURCES
|
||||||
|
+ "biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.csv",
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
LOGS + "build_biomass_potentials_s{simpl}_{clusters}.log",
|
LOGS + "build_biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
BENCHMARKS + "build_biomass_potentials_s{simpl}_{clusters}"
|
BENCHMARKS + "build_biomass_potentials_s{simpl}_{clusters}_{planning_horizons}"
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -735,7 +736,12 @@ rule prepare_sector_network:
|
|||||||
dsm_profile=RESOURCES + "dsm_profile_s{simpl}_{clusters}.csv",
|
dsm_profile=RESOURCES + "dsm_profile_s{simpl}_{clusters}.csv",
|
||||||
co2_totals_name=RESOURCES + "co2_totals.csv",
|
co2_totals_name=RESOURCES + "co2_totals.csv",
|
||||||
co2="data/bundle-sector/eea/UNFCCC_v23.csv",
|
co2="data/bundle-sector/eea/UNFCCC_v23.csv",
|
||||||
biomass_potentials=RESOURCES + "biomass_potentials_s{simpl}_{clusters}.csv",
|
biomass_potentials=RESOURCES
|
||||||
|
+ "biomass_potentials_s{simpl}_{clusters}_"
|
||||||
|
+ "{}.csv".format(config["biomass"]["year"])
|
||||||
|
if config["foresight"] == "overnight"
|
||||||
|
else RESOURCES
|
||||||
|
+ "biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.csv",
|
||||||
heat_profile="data/heat_load_profile_BDEW.csv",
|
heat_profile="data/heat_load_profile_BDEW.csv",
|
||||||
costs="data/costs_{}.csv".format(config["costs"]["year"])
|
costs="data/costs_{}.csv".format(config["costs"]["year"])
|
||||||
if config["foresight"] == "overnight"
|
if config["foresight"] == "overnight"
|
||||||
|
@ -7,9 +7,15 @@ Compute biogas and solid biomass potentials for each clustered model region
|
|||||||
using data from JRC ENSPRESO.
|
using data from JRC ENSPRESO.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
import geopandas as gpd
|
import geopandas as gpd
|
||||||
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
|
AVAILABLE_BIOMASS_YEARS = [2010, 2020, 2030, 2040, 2050]
|
||||||
|
|
||||||
|
|
||||||
def build_nuts_population_data(year=2013):
|
def build_nuts_population_data(year=2013):
|
||||||
pop = pd.read_csv(
|
pop = pd.read_csv(
|
||||||
@ -208,13 +214,41 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("build_biomass_potentials", simpl="", clusters="5")
|
snakemake = mock_snakemake(
|
||||||
|
"build_biomass_potentials",
|
||||||
|
simpl="",
|
||||||
|
clusters="5",
|
||||||
|
planning_horizons=2050,
|
||||||
|
)
|
||||||
|
|
||||||
|
overnight = snakemake.config["foresight"] == "overnight"
|
||||||
params = snakemake.params.biomass
|
params = snakemake.params.biomass
|
||||||
year = params["year"]
|
investment_year = int(snakemake.wildcards.planning_horizons)
|
||||||
|
year = params["year"] if overnight else investment_year
|
||||||
scenario = params["scenario"]
|
scenario = params["scenario"]
|
||||||
|
|
||||||
enspreso = enspreso_biomass_potentials(year, scenario)
|
if year > 2050:
|
||||||
|
logger.info("No biomass potentials for years after 2050, using 2050.")
|
||||||
|
max_year = max(AVAILABLE_BIOMASS_YEARS)
|
||||||
|
enspreso = enspreso_biomass_potentials(max_year, scenario)
|
||||||
|
|
||||||
|
elif year not in AVAILABLE_BIOMASS_YEARS:
|
||||||
|
before = int(np.floor(year / 10) * 10)
|
||||||
|
after = int(np.ceil(year / 10) * 10)
|
||||||
|
logger.info(
|
||||||
|
f"No biomass potentials for {year}, interpolating linearly between {before} and {after}."
|
||||||
|
)
|
||||||
|
|
||||||
|
enspreso_before = enspreso_biomass_potentials(before, scenario)
|
||||||
|
enspreso_after = enspreso_biomass_potentials(after, scenario)
|
||||||
|
|
||||||
|
fraction = (year - before) / (after - before)
|
||||||
|
|
||||||
|
enspreso = enspreso_before + fraction * (enspreso_after - enspreso_before)
|
||||||
|
|
||||||
|
else:
|
||||||
|
logger.info(f"Using biomass potentials for {year}.")
|
||||||
|
enspreso = enspreso_biomass_potentials(year, scenario)
|
||||||
|
|
||||||
enspreso = disaggregate_nuts0(enspreso)
|
enspreso = disaggregate_nuts0(enspreso)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user