如何在 Snakefile 中调试配置变量

How to debug config variable in Snakefile

我正在尝试了解具有多个配置和配置文件层的复杂 Snakemake 工作流程。

在Snakefile中,引用了一个未导入的变量config,前几行如下:

import datetime

if "builds" not in config:
    config["builds"] = {}

这个config变量在运行时从哪里来?我可以调试 Snakefile,就像调试普通 Python 脚本以使 Snakemake 在断点处停止,从而允许我检查变量一样吗?

注意:标志 --verbose 有助于包含堆栈跟踪。

config python 字典是一个特殊变量,可以通过三种方式填充:

  • 直接在 Snakefile 中使用关键字“configfile”将从 json 或 python 字典中的 yaml 文件导入所有 keys/values config:
configfile: "myConfig.json"
  • 从命令行指定一个 json 或 yaml 文件,它将导入 python 字典中的所有 key/value 对 config:
snakemake --configfile myconfig.json ...
  • 从命令行指定一个(或多个)key/value 对:
snakemake --config builds="mybuilds" ...

对于您的情况,我的猜测是 snakemake 管道的用户应该在命令行上提供配置文件。不要忘记规则之外的所有 python 代码都会首先执行,因此您可以在执行任何规则之前调试任何错误的配置。