相关: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环境?
答案 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之前创建日志文件夹)