开发Snakemake模块时,如何在规则外部读取GitHub相对配置文件?
Snakemake模块中区分用户可配置与内部不可修改配置的问题
我正在开发多个可被其他项目导入的Snakemake模块,需要区分两类配置:
- 用户可修改的配置:
config/config.yaml - 模块内部不可修改的设置:
resources/internal-settings.yaml
希望能像使用常规配置文件那样,将这两类内容作为参数传递给规则,示例用法如下:
rule some_rule: params: protected = internal_settings["not_altered"], unprotected = config["may_be_altered"]
但目前没找到可行的实现方式。我曾在rules.smk文件的规则外部尝试以下代码加载内部配置:
import yaml from pathlib import Path with open(Path(workflow.current_basedir) / "resources/internal-config.yaml", "r") as f: internal_config = yaml.safe_load(f)
运行时触发如下错误:
TypeError in file https://raw.githubusercontent.com/hydro/modules/hydro/workflow/rules/hydro.smk, line 6: expected str, bytes or os.PathLike object, not GithubFile
我原本预期Snakemake能相对于GitHub仓库中的模块文件路径读取该内部配置文件,但实际并未实现。
内容的提问来源于stack exchange,提问作者IRM
相关产品推荐
相关产品推荐

