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

发布于 2025-01-11 16:32:43 字数 235 浏览 0 评论 0原文

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

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

I am aware that by adding the option --conda-create-envs-only you are able to create the conda environments for the workflow. However, would it be possible to force the creation of all conda environments under workflow/envs/ without knowing the workflow DAG in advance?

The reason is that I am planning to run snakemake on an HPC, and the compute nodes have no internet. As such I have to set up the environment in a build node with internet. The problem is that I can only access my input data in the compute nodes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

失眠症患者 2025-01-18 16:32:43

也许将创建 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 env,因为它需要 env1.done 作为输入

Maybe make the creation of the conda environments a target itself? Something like, not tested:

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: ...

Rule one will find the conda env created because it needs env1.done as input

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文