相关: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环境?
您可能需要将环境变量发送到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文件夹)