Snakemake 创建 conda 环境但不激活

时间:2021-01-04 23:49:17

标签: conda snakemake

我有一个带有规则的 Snakefile,可以使用 samtools 1.9 版从 yaml 文件创建和激活 conda 环境,然后检查版本:

rule environ:
    conda:
        "envs/samtools.yaml"
    shell:
        'samtools --version > version.txt'

还有 yaml 文件:

name: samtools
channels:
  - bioconda
dependencies:
  - samtools=1.9*

我使用:

snakemake --cores 1 --use-conda

似乎环境搭建成功了,当我查看.snakemake/conda/79eeda10/bin/samtools中的版本是1.9:

.snakemake/conda/79eeda10/bin/samtools --version
samtools 1.9
Using htslib 1.9
Copyright (C) 2018 Genome Research Ltd.

但是 version.txt 中的输出表明正在运行的 samtools 是 1.3:

samtools 1.3
Using htslib 1.3
Copyright (C) 2015 Genome Research Ltd.

当我使用此方法运行需要特定 samtools 参数(仅在 1.9 版中可用)的不同规则时,它也会因运行 1.3 版而失败。

最后,在运行此工作流程之前,我要激活一个包含 snakemake 的 conda 环境。但我认为为特定规则运行单独的环境没有问题/冲突吗?

谁能帮我确定为什么我的 conda 环境正在构建但没有针对这些规则激活? 任何帮助将不胜感激。

更新:

我意识到 samtools 1.3 是我集群上的默认版本,即使我激活安装了 samtools 1.9 的 conda 环境时也会调用该版本。为了解决这个问题,我需要在我的 conda 路径中专门调用 samtools 二进制文件,如下所示: /share/ClusterShare/thingamajigs/jamtor/local/lib/miniconda3/envs/py37/envs/snk/bin/samtools

然而,这并不能解决在snakemake规则中构建包含samtools 1.9的环境并使用此版本的问题。由于环境构建的唯一哈希,我不知道指定在 shell 命令中调用它的路径。有没有人知道解决这个问题的方法?

谢谢

1 个答案:

答案 0 :(得分:2)

我发现了问题 - 我的 .bashrc 中的 PATH 环境变量中有一条指向 samtools 1.3 的路径。我删除了它并解决了问题 - 构建了 samtools 1.9,并适当地使用了 snakemake 使用的环境。奇怪的是,我原以为 conda 环境会优先于 PATH 变量。