Merge branch 'master' into fix-snakemake-bug

This commit is contained in:
Fabian Hofmann 2024-03-19 11:09:53 +01:00 committed by GitHub
commit 2728bd4780
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 22 additions and 14 deletions

View File

@ -1,6 +1,6 @@
,Unit,Values,Description ,Unit,Values,Description
year,--,YYYY; e.g. '2030',Year for which to retrieve cost assumptions of ``resources/costs.csv``. year,--,YYYY; e.g. '2030',Year for which to retrieve cost assumptions of ``resources/costs.csv``.
version,--,vX.X.X; e.g. 'v0.5.0',Version of ``technology-data`` repository to use. version,--,vX.X.X or <user>/<repo>/vX.X.X; e.g. 'v0.5.0',Version of ``technology-data`` repository to use. If this string is of the form <user>/<repo>/<version> then costs are instead retrieved from ``github.com/<user>/<repo>`` at the <version> tag.
rooftop_share,--,float,Share of rooftop PV when calculating capital cost of solar (joint rooftop and utility-scale PV). rooftop_share,--,float,Share of rooftop PV when calculating capital cost of solar (joint rooftop and utility-scale PV).
social_discountrate,p.u.,float,Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%. social_discountrate,p.u.,float,Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.
fill_values,--,float,Default values if not specified for a technology in ``resources/costs.csv``. fill_values,--,float,Default values if not specified for a technology in ``resources/costs.csv``.

1 Unit Values Description
2 year -- YYYY; e.g. '2030' Year for which to retrieve cost assumptions of ``resources/costs.csv``.
3 version -- vX.X.X; e.g. 'v0.5.0' vX.X.X or <user>/<repo>/vX.X.X; e.g. 'v0.5.0' Version of ``technology-data`` repository to use. Version of ``technology-data`` repository to use. If this string is of the form <user>/<repo>/<version> then costs are instead retrieved from ``github.com/<user>/<repo>`` at the <version> tag.
4 rooftop_share -- float Share of rooftop PV when calculating capital cost of solar (joint rooftop and utility-scale PV).
5 social_discountrate p.u. float Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.
6 fill_values -- float Default values if not specified for a technology in ``resources/costs.csv``.

View File

@ -82,6 +82,8 @@ Upcoming Release
* Upgrade default techno-economic assumptions to ``technology-data`` v0.8.1. * Upgrade default techno-economic assumptions to ``technology-data`` v0.8.1.
* Add possibility to download cost data from custom fork of ``technology-data``.
* Linearly interpolate missing investment periods in year-dependent * Linearly interpolate missing investment periods in year-dependent
configuration options. configuration options.

View File

@ -50,7 +50,7 @@ if config["enable"].get("retrieve_irena"):
onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv", onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv",
solar="data/existing_infrastructure/solar_capacity_IRENA.csv", solar="data/existing_infrastructure/solar_capacity_IRENA.csv",
log: log:
logs("retrieve_irena.log"), "logs/retrieve_irena.log",
resources: resources:
mem_mb=1000, mem_mb=1000,
retries: 2 retries: 2
@ -115,7 +115,7 @@ if config["enable"]["retrieve"] and config["enable"].get(
mem_mb=5000, mem_mb=5000,
retries: 2 retries: 2
run: run:
move(input[0], output[0]) copyfile(input[0], output[0])
validate_checksum(output[0], input[0]) validate_checksum(output[0], input[0])

View File

@ -145,7 +145,7 @@ def disable_grid_expansion_if_limit_hit(n):
for name, glc in glcs.iterrows(): for name, glc in glcs.iterrows():
total_expansion = ( total_expansion = (
( (
n.lines.query("p_nom_extendable") n.lines.query("s_nom_extendable")
.eval(f"s_nom_min * {cols[limit_type]}") .eval(f"s_nom_min * {cols[limit_type]}")
.sum() .sum()
) )

View File

@ -184,12 +184,13 @@ def sanitize_carriers(n, config):
def sanitize_locations(n): def sanitize_locations(n):
n.buses["x"] = n.buses.x.where(n.buses.x != 0, n.buses.location.map(n.buses.x)) if "location" in n.buses.columns:
n.buses["y"] = n.buses.y.where(n.buses.y != 0, n.buses.location.map(n.buses.y)) n.buses["x"] = n.buses.x.where(n.buses.x != 0, n.buses.location.map(n.buses.x))
n.buses["country"] = n.buses.country.where( n.buses["y"] = n.buses.y.where(n.buses.y != 0, n.buses.location.map(n.buses.y))
n.buses.country.ne("") & n.buses.country.notnull(), n.buses["country"] = n.buses.country.where(
n.buses.location.map(n.buses.country), n.buses.country.ne("") & n.buses.country.notnull(),
) n.buses.location.map(n.buses.country),
)
def add_co2_emissions(n, costs, carriers): def add_co2_emissions(n, costs, carriers):

View File

@ -202,9 +202,10 @@ if __name__ == "__main__":
contained_years = pd.date_range(freq="YE", **snakemake.params.snapshots).year contained_years = pd.date_range(freq="YE", **snakemake.params.snapshots).year
norm_year = config_hydro.get("eia_norm_year") norm_year = config_hydro.get("eia_norm_year")
missing_years = contained_years.difference(eia_stats.index)
if norm_year: if norm_year:
eia_stats.loc[contained_years] = eia_stats.loc[norm_year] eia_stats.loc[contained_years] = eia_stats.loc[norm_year]
elif missing_years := eia_stats.index.difference(contained_years): elif missing_years.any():
eia_stats.loc[missing_years] = eia_stats.median() eia_stats.loc[missing_years] = eia_stats.median()
inflow = cutout.runoff( inflow = cutout.runoff(

View File

@ -537,5 +537,8 @@ if __name__ == "__main__":
# set carbon constraints # set carbon constraints
n = set_carbon_constraints(n) n = set_carbon_constraints(n)
# update meta
n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards)))
# export network # export network
n.export_to_netcdf(snakemake.output[0]) n.export_to_netcdf(snakemake.output[0])

View File

@ -25,9 +25,10 @@ if __name__ == "__main__":
set_scenario_config(snakemake) set_scenario_config(snakemake)
version = snakemake.params.version version = snakemake.params.version
baseurl = ( if "/" in version:
f"https://raw.githubusercontent.com/PyPSA/technology-data/{version}/outputs/" baseurl = f"https://raw.githubusercontent.com/{version}/outputs/"
) else:
baseurl = f"https://raw.githubusercontent.com/PyPSA/technology-data/{version}/outputs/"
filepath = Path(snakemake.output[0]) filepath = Path(snakemake.output[0])
url = baseurl + filepath.name url = baseurl + filepath.name