在SnakeMake中使用Conda环境解决SGE集群问题

问题描述 投票:0回答:1

相关: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环境?

python conda qsub sungridengine snakemake
1个回答
0
投票

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

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

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

是个.是

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

{exec_job}

您当然可以使用其他选项,如-q,然后使用snakemake,如下所示:

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

(在调用snakemake之前不要忘记创建logs文件夹)

© www.soinside.com 2019 - 2024. All rights reserved.