use mock_snakemake from pypsa-eur
This commit is contained in:
parent
93d9e13f52
commit
3bdf3b6f5e
@ -125,7 +125,7 @@ def add_brownfield(n, n_p, year):
|
||||
# %%
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"add_brownfield",
|
||||
|
@ -606,7 +606,7 @@ def add_heating_capacities_installed_before_baseyear(
|
||||
# %%
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"add_existing_baseyear",
|
||||
|
@ -35,7 +35,7 @@ country_to_alpha2 = {
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_ammonia_production")
|
||||
|
||||
|
@ -206,7 +206,7 @@ def convert_nuts2_to_regions(bio_nuts2, regions):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_biomass_potentials", simpl="", clusters="5")
|
||||
|
||||
|
@ -14,7 +14,7 @@ import xarray as xr
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_clustered_population_layouts",
|
||||
|
@ -27,7 +27,7 @@ def coefficient_of_performance(delta_T, source="air"):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_cop_profiles",
|
||||
|
@ -751,7 +751,7 @@ def build_transport_data(countries, population, idees):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_energy_totals")
|
||||
|
||||
|
@ -80,7 +80,7 @@ def build_gas_input_locations(lng_fn, entry_fn, prod_fn, countries):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_gas_input_locations",
|
||||
|
@ -144,7 +144,7 @@ def prepare_dataset(
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_gas_network")
|
||||
|
||||
|
@ -16,7 +16,7 @@ from dask.distributed import Client, LocalCluster
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_heat_demands",
|
||||
|
@ -138,7 +138,7 @@ def build_nodal_distribution_key(hotmaps, regions):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_industrial_distribution_key",
|
||||
|
@ -196,7 +196,7 @@ def industrial_energy_demand(countries):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_industrial_energy_demand_per_country_today")
|
||||
|
||||
|
@ -11,7 +11,7 @@ import pandas as pd
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_industrial_energy_demand_per_node",
|
||||
|
@ -69,7 +69,7 @@ def build_nodal_industrial_energy_demand():
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_industrial_energy_demand_per_node_today",
|
||||
|
@ -294,7 +294,7 @@ def separate_basic_chemicals(demand):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_industrial_production_per_country")
|
||||
|
||||
|
@ -12,7 +12,7 @@ from prepare_sector_network import get
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_industrial_production_per_country_tomorrow")
|
||||
|
||||
|
@ -66,7 +66,7 @@ def build_nodal_industrial_production():
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_industrial_production_per_node",
|
||||
|
@ -1462,7 +1462,7 @@ def other_industrial_sectors():
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_industry_sector_ratios")
|
||||
|
||||
|
@ -21,7 +21,7 @@ import xarray as xr
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("build_population_layouts")
|
||||
|
||||
|
@ -11,7 +11,7 @@ import pandas as pd
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_population_weighted_energy_totals",
|
||||
|
@ -1032,7 +1032,7 @@ def sample_dE_costs_area(
|
||||
# %% --- MAIN --------------------------------------------------------------
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_retro_cost",
|
||||
|
@ -77,7 +77,7 @@ def salt_cavern_potential_by_region(caverns, regions):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_salt_cavern_potentials", simpl="", clusters="37"
|
||||
|
@ -30,7 +30,7 @@ def allocate_sequestration_potential(
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_sequestration_potentials", simpl="", clusters="181"
|
||||
|
@ -14,7 +14,7 @@ import pandas as pd
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_shipping_demand_per_node",
|
||||
|
@ -16,7 +16,7 @@ from dask.distributed import Client, LocalCluster
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_solar_thermal_profiles",
|
||||
|
@ -16,7 +16,7 @@ from dask.distributed import Client, LocalCluster
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_temperature_profiles",
|
||||
|
@ -159,7 +159,7 @@ def bev_dsm_profile(snapshots, nodes, options):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"build_transport_demand",
|
||||
|
@ -108,7 +108,7 @@ def aggregate_parallel_pipes(df):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("cluster_gas_network", simpl="", clusters="37")
|
||||
|
||||
|
@ -17,7 +17,7 @@ files = {
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("copy_config")
|
||||
|
||||
|
@ -55,74 +55,6 @@ def override_component_attrs(directory):
|
||||
return attrs
|
||||
|
||||
|
||||
# from pypsa-eur/_helpers.py
|
||||
def mock_snakemake(rulename, **wildcards):
|
||||
"""
|
||||
This function is expected to be executed from the 'scripts'-directory of '
|
||||
the snakemake project. It returns a snakemake.script.Snakemake object,
|
||||
based on the Snakefile.
|
||||
|
||||
If a rule has wildcards, you have to specify them in **wildcards.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rulename: str
|
||||
name of the rule for which the snakemake object should be generated
|
||||
**wildcards:
|
||||
keyword arguments fixing the wildcards. Only necessary if wildcards are
|
||||
needed.
|
||||
"""
|
||||
import os
|
||||
|
||||
import snakemake as sm
|
||||
from packaging.version import Version, parse
|
||||
from pypsa.descriptors import Dict
|
||||
from snakemake.script import Snakemake
|
||||
|
||||
script_dir = Path(__file__).parent.resolve()
|
||||
assert (
|
||||
Path.cwd().resolve() == script_dir
|
||||
), f"mock_snakemake has to be run from the repository scripts directory {script_dir}"
|
||||
os.chdir(script_dir.parent)
|
||||
for p in sm.SNAKEFILE_CHOICES:
|
||||
if os.path.exists(p):
|
||||
snakefile = p
|
||||
break
|
||||
kwargs = dict(rerun_triggers=[]) if parse(sm.__version__) > Version("7.7.0") else {}
|
||||
workflow = sm.Workflow(snakefile, overwrite_configfiles=[], **kwargs)
|
||||
workflow.include(snakefile)
|
||||
workflow.global_resources = {}
|
||||
rule = workflow.get_rule(rulename)
|
||||
dag = sm.dag.DAG(workflow, rules=[rule])
|
||||
wc = Dict(wildcards)
|
||||
job = sm.jobs.Job(rule, dag, wc)
|
||||
|
||||
def make_accessable(*ios):
|
||||
for io in ios:
|
||||
for i in range(len(io)):
|
||||
io[i] = os.path.abspath(io[i])
|
||||
|
||||
make_accessable(job.input, job.output, job.log)
|
||||
snakemake = Snakemake(
|
||||
job.input,
|
||||
job.output,
|
||||
job.params,
|
||||
job.wildcards,
|
||||
job.threads,
|
||||
job.resources,
|
||||
job.log,
|
||||
job.dag.workflow.config,
|
||||
job.rule.name,
|
||||
None,
|
||||
)
|
||||
# create log and output dir if not existent
|
||||
for path in list(snakemake.log) + list(snakemake.output):
|
||||
Path(path).parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
os.chdir(script_dir)
|
||||
return snakemake
|
||||
|
||||
|
||||
# from pypsa-eur/_helpers.py
|
||||
def progress_retrieve(url, file):
|
||||
import urllib
|
||||
|
@ -673,7 +673,7 @@ def to_csv(df):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("make_summary")
|
||||
|
||||
|
@ -911,7 +911,7 @@ def plot_series(network, carrier="AC", name="test"):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"plot_network",
|
||||
|
@ -541,7 +541,7 @@ def plot_carbon_budget_distribution(input_eurostat):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("plot_summary")
|
||||
|
||||
|
@ -3227,7 +3227,7 @@ def set_temporal_aggregation(n, opts, solver_name):
|
||||
# %%
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"prepare_sector_network",
|
||||
|
@ -18,7 +18,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake("retrieve_gas_network_data")
|
||||
rootpath = ".."
|
||||
|
@ -318,7 +318,7 @@ def solve_network(n, config, opts="", **kwargs):
|
||||
# %%
|
||||
if __name__ == "__main__":
|
||||
if "snakemake" not in globals():
|
||||
from helper import mock_snakemake
|
||||
from _helpers import mock_snakemake
|
||||
|
||||
snakemake = mock_snakemake(
|
||||
"solve_network_myopic",
|
||||
|
Loading…
Reference in New Issue
Block a user