You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态导入模块时如何让Snakemake识别子模块的config.yml

Snakemake子工作流模块加载独立配置文件的问题

背景

我刚接触科学工作流,正在构建首个较复杂的Snakemake工作流。

配置与尝试操作

我正在动态导入模块。当前根目录下的config.yml内容如下:

subworkflows:
 - subwf-1
 - subwf-2
 - other-subwf

根目录Snakefile代码:

configfile: 'config.yml'

ALL_SUBWFS = config['subworkflows']

# <省略> 检查最低版本6.0

for MODULE in ALL_SUBWFS:
    module MODULE:
        snakefile:
            f'subworkflows/{MODULE}/Snakefile'

    use rule * from MODULE as f'{MODULE}_*'

这段代码目前运行正常,但我希望为每个子模块配置独立的config.yml,目录结构如下:

.
├── Snakefile
├── config.yml
└── subworkflows/
    ├── subwf-1/
    │   ├── Snakefile
    │   └── config.yml
    ├── subwf-2/
    │   ├── Snakefile
    │   └── config.yml
    └── other-subwf/
        ├── Snakefile
        └── config.yml

我尝试了两种方案均失败:

  • 方案1:主工作流定义configfile: config.yml,子工作流中尝试三种方式指定自身的config.yml:
# 写法1
cf = str(workflow.source_path('config.yml'))
# 写法2
cf = f'{workflow.basedir}/config.yml'
# 写法3
cf = 'config.yml'

configfile: cf

所有写法均报错:KeyError in <...>/Snakefile: 'config'。

  • 方案2:模块导入时传递全局配置,子工作流中读取对应字段:
    主工作流导入模块时添加config: config,子工作流中写VALUES = config['values'],报错KeyError in <...>/Snakefile: 'values'。

核心疑问

我的假设是否正确:Snakemake模块无法直接加载自身目录下的config.yml,必须依赖全局配置文件,比如在全局config.yml中为每个子工作流设置单独的键,再通过config: config['<子工作流配置键>']传递给子模块?

内容的提问来源于stack exchange,提问作者s.d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:15:33