我猜这是蛇形v5.1之后的重复出现的问题 看到了几个线程,但无法找出问题所在。请帮助。
rule all:
input:
[OUT_DIR + "/" + x for x in expand('{sample}', sample = SAMPLES)]
rule star_mapping:
input:
dna= DNA,
r1 = lambda wildcards: FILES[wildcards.sample]['R1'],
r2 = lambda wildcards: FILES[wildcards.sample]['R2'],
output:
directory(join(OUT_DIR, '{sample}'))
log:
'logs/{sample}_star_mapping.log'
run:
shell(
'STAR --runMode alignReads'
' --runThreadN 10'
' --genomeDir {input.dna}'
' --genomeLoad LoadAndKeep'
' --limitBAMsortRAM 8000000000'
' --readFilesIn {input.r1} {input.r2}'
' --outSAMtype BAM SortedByCoordinate'
' --quantMode GeneCounts'
' --readFilesCommand zcat'
' --outFileNamePrefix {output}_'
' &> {log}'
)
错误: 规则star_mapping中的MissingOutputException。
答案 0 :(得分:0)
我认为您对directory()
函数的理解不正确。
通过指定directory(join(OUT_DIR, '{sample}'))
,snakemake期望创建OUTDIR/{sample}/
目录。
但是,规则star_mapping
将创建以下文件:
OUTDIR/{sample}_Aligned.sortedByCoord.out.bam
OUTDIR/{sample}_Log.final.out
OUTDIR/{sample}_Log.out
etc...
根据
https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#directories-as-outputs
directory()
应该用于时间戳查询issus。该文档指出:
始终考虑是否无法使用常规方式制定工作流程 文件,然后再使用directory()。
所以我想您应该考虑定义文件,例如:
"OUTDIR/{sample}_Aligned.sortedByCoord.out.bam"
作为星级规则的输出,
--outFileNamePrefix {OUTDIR}/{wildcards.sample}_
(STAR选项)