【问题标题】:Snakemake multiple Config Files?Snakemake 多个配置文件?
【发布时间】:2020-10-23 00:55:13
【问题描述】:

关于 snakemake 和使用多个配置文件的快速问题。

我正在为基因组预处理创建一个相当大的管道,其想法是它是用户友好的,并且在用户能力方面占最低公分母。

因此,不允许用户在主配置文件中定义某些工具使用的线程。我想实现snakemake的“workflow.cores * percent”功能,即;我可以为每个工具指定总内核的百分比(在命令行中使用 --cores # 定义)。

这让事情变得简单,不会让用户对主配置文件中的所有选项感到困惑。但我仍然希望允许用户根据需要微调线程数。这个想法是我有一个没有线程号的主配置文件,还有一个带有线程号的第二个配置文件。

如果用户决定要使用自己确定的线程数,他们将简单地(在主配置中)提供一个肯定的键,类似于:manualThreadChoice: "yes"

并且在 Snakefile 中有一个简单的 if 语句,如果 manualThreadChoice 是肯定的,则相应地为相应的规则提供线程数,否则只使用自动定义的线程百分比。

根据这个关于biostars的问题:https://github.com/yanailab/celseq2/issues/33

现在可以定义多个配置文件。

见评论:

“感谢您报告此问题。这是因为snakemake 更新了他们现在支持多个配置文件的 API。根据他们的日志,配置文件已更改为配置文件。请参阅:snakemake/snakemake@23624ee#diff-88e96378bf2405c8a8f8ac971519039e。”

所以不要用

调用我们的配置文件
configfile: "path/to/config.yaml"

我们可以使用:

configfiles: 

我的问题是,我们是否会提供两个单独的路径作为文件列表的一部分: 即

configfiles: ["path/to/config1.yaml", "path/to/config2.yaml"]

然后我们如何从不同的配置中访问密钥。由于我们将使用单个配置文件:

config['key']

我尝试通过索引访问不同的配置文件:

config[0]['key']

但这不起作用。

我正在使用 Snakemake 5.7.0,我相信它是一个具有这种多配置文件功能的版本。

【问题讨论】:

  • 如果打印配置,输出是什么?我的猜测是他们只是互相覆盖。
  • 根据我在源代码中看到的评论 (# get values to override. Later configfiles override earlier ones.) 我相信 @Maarten-vd-Sande 是对的。 config dict 将包含在解析连续配置文件时最后获得的条目。

标签: python multithreading configuration config snakemake


【解决方案1】:

您可以在 Snakefile 的顶部指定多个 config 文件,如下所示:

configfile: "path/to/config1.yaml"
configfile: "path/to/config2.yaml" 

然后,Snakemake 将所有配置文件合并为 1 个配置字典,可通过全局变量 config 访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多