allow additional functionality for solving to be added by file

To add this, overwrite the rule with a new argument:

snakemake.input.additional_functionality
This commit is contained in:
Tom Brown 2023-12-15 14:57:03 +01:00
parent 830019a6e5
commit c5a123b4f4

View File

@ -44,6 +44,7 @@ from pypsa.descriptors import get_switchable_as_dense as get_as_dense
from prepare_sector_network import emission_sectors_from_opts from prepare_sector_network import emission_sectors_from_opts
def add_land_use_constraint(n, planning_horizons, config): def add_land_use_constraint(n, planning_horizons, config):
if "m" in snakemake.wildcards.clusters: if "m" in snakemake.wildcards.clusters:
_add_land_use_constraint_m(n, planning_horizons, config) _add_land_use_constraint_m(n, planning_horizons, config)
@ -899,6 +900,13 @@ def extra_functionality(n, snapshots):
logger.info(f"Add CO2 limit for each country") logger.info(f"Add CO2 limit for each country")
add_co2limit_country(n, limit_countries, nyears) add_co2limit_country(n, limit_countries, nyears)
if "additional_functionality" in snakemake.input.keys():
import importlib, os, sys
sys.path.append(os.path.dirname(snakemake.input.additional_functionality))
additional_functionality = importlib.import_module(os.path.splitext(os.path.basename(snakemake.input.additional_functionality))[0])
additional_functionality.additional_functionality(n, snapshots, snakemake.wildcards.planning_horizons)
def solve_network(n, config, solving, opts="", **kwargs): def solve_network(n, config, solving, opts="", **kwargs):
set_of_options = solving["solver"]["options"] set_of_options = solving["solver"]["options"]