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
作为输入
我知道通过添加选项 --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
作为输入