在SGE群集问题上的SnakeMake中使用Conda环境

时间:2018-09-10 12:14:21

标签: python conda qsub sungridengine snakemake

相关:SnakeMake rule with Python script, conda and cluster

我一直在尝试设置SnakeMake管道以在SGE群集(qsub)上运行。使用直接安装到计算节点的简单命令或工具,就没有问题。 但是,当我尝试设置SnakeMake来通过SGE节点上的Conda下载工具时出现问题。

我测试的Snakefile是:

rule bwa_sge_c_test:
    conda:
        "bwa.yaml"
    shell:
        "bwa > snaketest.txt"

“ bwa.yaml”文件为:

channels:
    - bioconda
dependencies:
    - bwa=0.7.17

我使用以下命令运行SnakeMake:

snakemake -d "/home/<username>" --use-conda --cluster "qsub -cwd -q testing-nod08" --jobs 1

结果,我在SGE计算节点中收到此错误:

/usr/bin/python3: No module named snakemake.__main__; 'snakemake' is a package and cannot be directly executed
touch: cannot touch '/home/krampl/.snakemake/tmp.7le8izvw/0.jobfailed': No such file or directory

我尝试将“ snakemake = 5.2.2”附加到“ bwa.yaml”(如同事建议),但错误仍然存​​在。

我的问题是:是什么导致此错误,以及如何解决此问题,以便我可以在SGE群集中从SnakeMake运行Conda环境?

1 个答案:

答案 0 :(得分:0)

您可能需要将环境变量发送到qsub。

snakemake -d "/home/<username>" --use-conda --cluster "qsub -V -cwd -q testing-nod08" --jobs 1

-V将把所有环境变量(包括PATH)发送到qsub作业。 我通常通过SGE发送工作的方法是构建一个脚本,以封装我的工作:

sge.sh

#$ -cwd
#$ -V
#$ -e ./logs/
#$ -o ./logs/

{exec_job}

您当然可以使用其他选项,例如-q,然后按照以下方式使用snakemake:

snakemake --cluster "qsub" --jobscript sge.sh ....

(不要忘了在调用snakemake之前创建日志文件夹)