在远程 snakedeploy-ed 工作流中访问文件

Accessing files in a remotely snakedeploy-ed workflow

当将 snakedeploy 与远程存储在 github 上的工作流一起使用时,该远程工作流从其自己的“workflow/scripts/”或“resources/”目录访问文件的当前最佳实践是什么?


例如:运行宁

snakedeploy deploy-workflow --tag ${some_branch_or_tag} https://github.com/cbg-ethz/V-pipe .

将产生一个 workflow/Snakemake 指向远程:

configfile: "config/config.yaml"


# declare https://github.com/cbg-ethz/V-pipe as a module
module V_pipe:
    snakefile:
        "https://github.com/cbg-ethz/V-pipe/raw/${some_branch_or_tag}/workflow/Snakefile"

    config:
        config


# use all rules from https://github.com/cbg-ethz/V-pipe
use rule * from V_pipe

我们应该如何修改这些远程 workflow/Snakefileworkflow/rules/*.smk,以便它们可以:

?

到目前为止,这是通过使用 srcdir() 然后直接使用其输出来实现的。但这显然会中断,因为 srcdir 现在可以生成 URLs.

通过检查 validate 是如何做到这一点的,在我看来,策略是:

所以我的问题是:

从 snakemake 版本 6.8.1 开始,文档得到了更新,现在有一个用于获取此类文件的官方文档函数: https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#accessing-auxiliary-source-files

这个 function internally 确实依赖于 infer_source / sourcecache.open 序列。

它 return 有一个元组:

  • 路径
  • 文件内容(来自缓存内容)
  • 自动类型识别
  • 文件是否是本地文件。