如何在 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 代码都会首先执行,因此您可以在执行任何规则之前调试任何错误的配置。
我正在尝试了解具有多个配置和配置文件层的复杂 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 代码都会首先执行,因此您可以在执行任何规则之前调试任何错误的配置。