有关的:使用 Python 脚本、conda 和 cluster 的 SnakeMake 规则 https://stackoverflow.com/questions/45801643/snakemake-rule-with-python-script-conda-and-cluster
我一直在尝试设置 SnakeMake 管道以在 SGE 集群(qsub)上运行。使用直接安装到计算节点的简单命令或工具,没有问题。
但是,当我尝试在 SGE 节点上设置 SnakeMake 通过 Conda 下载工具时出现问题。
我的测试蛇文件是:
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”(正如同事建议的那样),但错误仍然存在。
我的问题是: 是什么原因导致此错误以及如何解决此问题以便我可以在 AGE 集群中从 SnakeMake 运行 Conda 环境?
您可能需要将环境变量发送到 qsub。
snakemake -d "/home/<username>" --use-conda --cluster "qsub -V -cwd -q testing-nod08" --jobs 1
The -V
会将您的所有环境变量发送到 qsub 作业,包括您的 PATH。
我通常通过 SGE 发送作业的做法是构建一个脚本来封装我的作业:
sge.sh
#$ -cwd
#$ -V
#$ -e ./logs/
#$ -o ./logs/
{exec_job}
您当然可以使用其他选项,例如-q
然后使用snakemake如下:
snakemake --cluster "qsub" --jobscript sge.sh ....
(不要忘记在调用snakemake之前创建logs文件夹)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)