在 Snakefile 中访问 --default-remote-prefix

Accessing the --default-remote-prefix within the Snakefile

当我在 google 生命科学执行器上 运行 snakemake 时,我 运行 类似于:

snakemake  --google-lifesciences --default-remote-prefix my_bucket_name  --preemption-default 10 --use-conda

现在,my_bucket_name 将添加到所有输入和输出路径。

但是由于 原因 我需要在 Snakefile 代码中重新创建完整路径,因此我希望能够访问代码中传递给 --default-remote-prefix 的任何内容

有办法吗?

I want to be able to access whatever is passed to --default-remote-prefix within the code

您可以像这样使用 workflow 对象:

print(workflow.default_remote_prefix) # Will print my_bucket_name in your example

rule all:
    input: ...

我不是 100% 确定 workflow 对象是否应该由用户使用,或者它是否是 snakemake 私有的,如果是这样的话,它可能会在未来没有警告的情况下被更改。不过我觉得还可以,我一直用workflow.basedir来获取Snakefile所在的目录。

或者您可以解析 sys.argv 列表,但我认为这更 hacky。


另一种选择:

bucket_name=foo
snakemake --default-remote-prefix $bucket_name --config bucket_name=$bucket_name ...

然后在代码中使用 config["bucket_name"] 来获取值 foo。但我还是更喜欢 workflow 解决方案。