0

我正在尝试运行一个带有集群提交的蛇形程序以进行 RNAseq 分析。这是我的脚本:

#path to gff 
GFF = "RNASeq/data/ref_GRCh38.p2_top_level.gff3"

#sample names and classes
CTHP = 'CTHP1 CTHP2'.split()
CYP = 'CYP1 CYP2'.split()

samples = CTHP + CYP

rule all:
	input:
		'CTHP1/mapping_results/out_summary.gtf',
		'CTHP2/mapping_results/out_summary.gtf',
		'CYP2/mapping_results/out_summary.gtf',
		'CYP1/mapping_results/out_summary.gtf',
		
rule order_sam:
	input:
		'{samples}/mapping_results/mapped.sam'
	output:
		'{samples}/mapping_results/ordered.mapped.bam'
	threads: 12
	params: ppn="nodes=1:ppn=12"
	shell:
		'samtools view -Su {input} | samtools sort > {output}'

rule count_sam:
	input:
		bam='{samples}/mapping_results/ordered.mapped.bam'
	output:
		summary='{samples}/mapping_results/out_summary.gtf',
		abun='{samples}/mapping_results/abun_results.tab',
		cover='{samples}/mapping_results/coveraged.gtf'
	threads: 12
	params: ppn="nodes=1:ppn=12"
	shell:
		'stringtie -o {output.summary} -G {GFF} -C {output.cover} '
		'-A {output.abun} -p {threads} -l {samples} {input.bam}'

```

我想将每个提交rule到一个集群。因此,在工作目录的终端中,我这样做:

snakemake --cluster "qsub -V -l {params.ppn}" -j 6

但是,作业未提交,并且出现以下错误: Unable to run job: attribute "m_numa_nodes" is not a integer value. Exiting. Error submitting jobscript (exit code 1): 我还尝试在运行蛇文件时直接设置节点变量,如下所示:

snakemake --cluster "qsub -V -l nodes=1:ppn=16" -j 6 正如预期的那样,它给了我同样的错误。在这一点上,我不确定它是本地集群设置还是我在蛇文件中没有做的事情。任何帮助都会很棒。

谢谢

4

2 回答 2

2

该错误看起来与 Snakemake 无关。我不是 SGE/Univa 专家,所以我无法真正帮助您,但 m_numa_nodes 是引擎的一个参数。Snakemake 不会以任何方式设置它,因此它必须是您的本地配置或您提供给 qsub 的参数之一。

于 2017-04-13T07:23:50.707 回答
0

编辑:2017 年 4 月 12 日——在 Google 网上论坛帖子中发现了一个错误。从“全部”规则中的最后一行输入中删除逗号。

**编辑:2017/04/13——被告知逗号不是问题**

Snakemake 的美妙之处在于将其发送到集群只需要额外的参数。要确定它是集群问题还是 Snakemake 问题,我建议运行一个dryrun,通过

snakemake -n

Dryrun 不会提交任何作业,但会返回作业列表。如果它是 Snakemake 问题或提交问题,这是一个强有力的指标。我总是在开发过程中执行空运行,以确保我的 Snakemake 代码在我开始尝试将其提交到集群之前工作,因为集群提交可能是一个完全不同的问题篮子。

根据您的提交问题,我使用 Snakemake 中的“--drmaa”标志来处理我对集群的提交。我意识到这不是您所要求的,但我真的很喜欢它的功能,我想我只是建议它作为您当前方法的强大替代方案。 https://pypi.python.org/pypi/drmaahttps://anaconda.org/anaconda/drmaa

snakemake --jobs 10 --cluster-config input/config.json --drmaa "{cluster.clusterSpec}"

在config.json里面,我的规则大多都是提供这个参数集:

{
    "__default__": {
        "clusterSpec": "-V -S /bin/bash -o log/varScan -e log/varScan -l h_vmem=10G -pe ncpus 1"
    }
}

SGE 集群参数= "-V -S /bin/bash -l h_vmem=10G -pe ncpus 1"

DRMAA 参数= "-o log/varScan -e log/varScan"

PS 我认为您还必须发布您正在使用的操作系统(例如 CentOS5)和您的集群类型(例如 SGE)。

于 2017-04-12T20:47:00.030 回答