使用script param在Snakemake中指定Python版本

2024-05-23 13:35:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码,我正在合并到一个蛇形管道。我还希望能够独立于Snakemake运行代码,所以我想编写灵活的代码。我有一个可以被Snakemake读取的配置文件,还有一个备用的配置文件,如果代码在Snakemake之外运行,它将被解析。在

我在我的蛇形文件中的一条规则中有以下结构:

rule some_rule:
    input:
        input_file
    output:
        output_file
    script:
        runfile.py

然后在runfile.py中,我测试脚本是否在Snakemake中运行,如下所示:

^{pr2}$

这很好,只是我在一个虚拟环境中工作,我想要使用的Python版本与Snakemake默认使用的版本不同。 因此,我不得不对规则进行如下调整:

rule some_rule:
    input:
        input_file
    output:
        output_file
    shell:
        /path/to/python runfile.py

但是现在因为我使用的是shell而不是script,我无法访问python文件中的global参数“snakemake”。在

所以我的问题是

(i)我可以指定一个Python版本并且仍然使用script?在

或者

(ii)我可以使用shell但仍然访问脚本中的“snakemake”对象,该对象将允许我测试脚本是否正在snakemake管道中运行?在


Tags: 代码py版本脚本inputoutput管道script
1条回答
网友
1楼 · 发布于 2024-05-23 13:35:34

您可以使用Conda—它既可以提供对执行上下文的细粒度控制,又可以提高管道的可重复性。见Documentation。在

首先,您需要一个环境定义YAML文件。例如

envs/py37.yml

channels:
  - defaults
dependencies:
  - python=3.7

在该文件中添加您需要的任何其他要求。那你的规则是

蛇形文件

^{pr2}$

最后,您现在需要在启动此作业时使用附加标志 use-conda,例如

外壳

snakemake  use-conda output_file

相关问题 更多 >