Snakemake:如何强制创建所有 conda 环境

Snakemake: How to force the creation of all conda environments

我知道通过添加选项 --conda-create-envs-only,您可以为工作流创建 conda 环境。但是,是否可以在事先不知道工作流DAG的情况下强制创建workflow/envs/下的所有conda环境?

原因是我打算在 HPC 上 运行 snakemake,而计算节点没有互联网。因此,我必须在具有互联网的构建节点中设置环境。问题是我只能在计算节点中访问我的输入数据。

也许将 conda 环境的创建作为目标本身?类似的东西,未经测试:

localrules: all, make_envs

rule all:
    input:
        # Maybe not needed:
        expand('{env}.done', env= ['env1', 'env2'])


rule make_envs:
    conda:
        'workflow/envs/{env}.yaml',
    output:
        touch('{env}.done'),


rule one:
    input:
        'env1.done',
    conda:
        'workflow/envs/env1.yaml',
    output: ...
    shell: ...

规则 one 将找到创建的 conda 环境,因为它需要 env1.done 作为输入