prepare_sector: automatically interpolate in config get() function
This commit is contained in:
parent
4e0b69b3fa
commit
26b202f463
@ -7,9 +7,11 @@
|
||||
Release Notes
|
||||
##########################################
|
||||
|
||||
.. Upcoming Release
|
||||
.. ================
|
||||
..
|
||||
Upcoming Release
|
||||
================
|
||||
|
||||
* Linearly interpolate missing investment periods in year-dependent
|
||||
configuration options.
|
||||
|
||||
PyPSA-Eur 0.10.0 (19th February 2024)
|
||||
=====================================
|
||||
|
@ -215,7 +215,32 @@ def get(item, investment_year=None):
|
||||
"""
|
||||
Check whether item depends on investment year.
|
||||
"""
|
||||
return item[investment_year] if isinstance(item, dict) else item
|
||||
if not isinstance(item, dict):
|
||||
return item
|
||||
elif investment_year in item.keys():
|
||||
return item[investment_year]
|
||||
else:
|
||||
logger.warning(
|
||||
f"Investment key {investment_year} not found in dictionary {item}."
|
||||
)
|
||||
keys = sorted(item.keys())
|
||||
if investment_year < keys[0]:
|
||||
logger.warning(f"Lower than minimum key. Taking minimum key {keys[0]}")
|
||||
return item[keys[0]]
|
||||
elif investment_year > keys[-1]:
|
||||
logger.warning(f"Higher than maximum key. Taking maximum key {keys[0]}")
|
||||
return item[keys[-1]]
|
||||
else:
|
||||
logger.warning(
|
||||
"Interpolate linearly between the next lower and next higher year."
|
||||
)
|
||||
lower_key = max(k for k in keys if k < investment_year)
|
||||
higher_key = min(k for k in keys if k > investment_year)
|
||||
lower = item[lower_key]
|
||||
higher = item[higher_key]
|
||||
return lower + (higher - lower) * (investment_year - lower_key) / (
|
||||
higher_key - lower_key
|
||||
)
|
||||
|
||||
|
||||
def co2_emissions_year(
|
||||
|
Loading…
Reference in New Issue
Block a user