snakefile: move copy_default_files and process_run_config to helpers
This commit is contained in:
parent
f6f18e1868
commit
2565a7db4f
30
Snakefile
30
Snakefile
@ -2,26 +2,18 @@
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from os.path import normpath, exists
|
||||
from shutil import copyfile, move, rmtree
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
|
||||
from os.path import normpath
|
||||
from shutil import move, rmtree
|
||||
from snakemake.utils import min_version
|
||||
|
||||
min_version("8.5")
|
||||
|
||||
from scripts._helpers import path_provider
|
||||
from scripts._helpers import path_provider, copy_default_files, process_run_config
|
||||
|
||||
default_files = {
|
||||
"config/config.default.yaml": "config/config.yaml",
|
||||
"config/scenarios.template.yaml": "config/scenarios.yaml",
|
||||
}
|
||||
for template, target in default_files.items():
|
||||
target = os.path.join(workflow.current_basedir, target)
|
||||
template = os.path.join(workflow.current_basedir, template)
|
||||
if not exists(target) and exists(template):
|
||||
copyfile(template, target)
|
||||
|
||||
copy_default_files(workflow)
|
||||
|
||||
|
||||
configfile: "config/config.default.yaml"
|
||||
@ -29,17 +21,7 @@ configfile: "config/config.yaml"
|
||||
|
||||
|
||||
run = config["run"]
|
||||
scenarios = run.get("scenarios", {})
|
||||
if run["name"] and scenarios.get("enable"):
|
||||
fn = Path(scenarios["file"])
|
||||
scenarios = yaml.safe_load(fn.read_text())
|
||||
RDIR = "{run}/"
|
||||
if run["name"] == "all":
|
||||
config["run"]["name"] = list(scenarios.keys())
|
||||
elif run["name"]:
|
||||
RDIR = run["name"] + "/"
|
||||
else:
|
||||
RDIR = ""
|
||||
RDIR = process_run_config(run)
|
||||
|
||||
logs = path_provider("logs/", RDIR, run["shared_resources"])
|
||||
benchmarks = path_provider("benchmarks/", RDIR, run["shared_resources"])
|
||||
|
@ -11,7 +11,9 @@ import os
|
||||
import re
|
||||
import urllib
|
||||
from functools import partial
|
||||
from os.path import exists
|
||||
from pathlib import Path
|
||||
from shutil import copyfile
|
||||
|
||||
import pandas as pd
|
||||
import pytz
|
||||
@ -25,6 +27,33 @@ logger = logging.getLogger(__name__)
|
||||
REGION_COLS = ["geometry", "name", "x", "y", "country"]
|
||||
|
||||
|
||||
def copy_default_files(workflow):
|
||||
default_files = {
|
||||
"config/config.default.yaml": "config/config.yaml",
|
||||
"config/scenarios.template.yaml": "config/scenarios.yaml",
|
||||
}
|
||||
for template, target in default_files.items():
|
||||
target = os.path.join(workflow.current_basedir, target)
|
||||
template = os.path.join(workflow.current_basedir, template)
|
||||
if not exists(target) and exists(template):
|
||||
copyfile(template, target)
|
||||
|
||||
|
||||
def process_run_config(run):
|
||||
scenarios = run.get("scenarios", {})
|
||||
if run["name"] and scenarios.get("enable"):
|
||||
fn = Path(scenarios["file"])
|
||||
scenarios = yaml.safe_load(fn.read_text())
|
||||
RDIR = "{run}/"
|
||||
if run["name"] == "all":
|
||||
run["name"] = list(scenarios.keys())
|
||||
elif run["name"]:
|
||||
RDIR = run["name"] + "/"
|
||||
else:
|
||||
RDIR = ""
|
||||
return RDIR
|
||||
|
||||
|
||||
def get_run_path(fn, dir, rdir, shared_resources):
|
||||
"""
|
||||
Dynamically provide paths based on shared resources and filename.
|
||||
|
Loading…
Reference in New Issue
Block a user