我是snakemake和使用集群的新手,所以我将不胜感激!
我有一个可以在服务器上正常运行的蛇文件,但是当我尝试在集群上运行它时,我没有找到合适的命令来提交作业并让它执行。它像其他用户发现的那样“停滞不前”。https://groups.google.com/forum/#!searchin/snakemake/cluster|sort:relevance/snakemake/dFxRIgKDxUU/od9az3MuBAAJ
我在一个 SGE 集群上运行它,其中只有一个节点(头节点)我们通过它提交作业。我们不能以交互方式运行作业或在头节点上运行密集的命令。通常我会像这样运行 bwa 命令:
qsub -V -b y 'bwa mem -t 20 /reference/hg38.fa in/R_1.fastq in/R_2.fastq |samtools view -S -bh -@ 7 > aln_R.bam'
因此,我遵循了关于通过头节点在集群上提交作业的常见问题解答,其中建议了以下代码:
qsub -N PIPE -cwd -j yes python snakemake --cluster "ssh user@headnode_address 'qsub -N pipe_task -j yes -cwd -S /bin/sh ' " -j
这对我不起作用,因为我的终端期望 python 是一个文件。要实际调用程序的命令,我必须使用它:
qsub -V -N test -cwd -j y -b y snakemake --cluster "qsub " -j 1
-by 允许二进制或脚本。如果我运行它,qstat 将显示程序正在运行,但是有一个内部错误并且它永远不会完成。
此外,“qsub”中的内容被视为蛇形命令。当我尝试使用 sge 标志(例如 -jy)时,snakemake 出现以下错误:
qsub -V -N test -cwd -j y -b y snakemake --cluster "qsub -j y" -j 1
snakemake: error: argument --cores/--jobs/-j: invalid int value: 'y'
我可以完美地提交 tmp 文件中的蛇形外壳脚本,但我不能使用 -by 标志并添加了 -S /bin/bash 标志。因此脚本本身可以工作,但我认为它们从头节点推送到集群的方式无法以某种方式工作。我也可能完全偏离目标!我很想知道如何向我的系统管理员谈论 SGE,因为我真的不知道该向他们询问我的问题。
结论:有没有其他人遇到过需要调用 -by for snakemake --cluster 在 SGE 上运行?它是否也将“qsub”视为蛇形命令?或者是否有人有另一种解决方法来在 SGE 的头节点上提交作业?我应该问我的 SGE 系统管理员什么问题?