我正在尝试运行一个带有群集提交的snakemake进行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):
我还尝试在运行snake文件时直接设置节点变量,如下所示:
snakemake --cluster "qsub -V -l nodes=1:ppn=16" -j 6
正如预期的那样,它给了我同样的错误。此时我不确定它是本地群集设置还是我在snake文件中没有做的事情。任何帮助都会很棒。
由于
答案 0 :(得分:2)
该错误与Snakemake无关。我不是SGE / Univa专家,所以我无法真正帮助你,但m_numa_nodes是引擎的参数。 Snakemake没有以任何方式设置它,因此它必须是您的本地配置或您提供给qsub的参数之一。
答案 1 :(得分:0)
编辑:2017/04/12 - 抓住了Google网上论坛帖子中的一个错误。从“所有”规则中的最后一行输入中删除逗号。
**编辑:2017/04/13 - 被告知逗号不是问题**
Snakemake将它发送到集群只需要额外的参数。为了确定它是集群问题还是Snakemake问题,我建议运行一个dryrun,通过
snakemake -n
Dryrun不会提交任何工作,但会返回工作列表。如果是Snakemake问题或提交问题,这是一个强有力的指标。我总是在开发过程中执行dryruns,以确保我的Snakemake代码在我开始尝试将其提交到集群之前工作,因为集群提交可能是一堆完全不同的问题。
根据您的提交问题,我使用Snakemake中的“--drmaa”标志来处理我对群集的提交。我意识到这不是你要求的,但我真的很喜欢它的功能,我想我只是建议它作为你当前方法的强大替代品。 https://pypi.python.org/pypi/drmaa或https://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”
P.S。我认为您还必须发布您正在使用的操作系统(例如CentOS5)和您的群集类型(例如SGE)。