尤其是,当且仅当notemp选项为False时,我想访问notemp选项以删除“ onsucces”附加临时文件。
我要这样做是因为我对bgzip vcf文件有一个非常基本的规则,并且我不能将其输出定义为temp()
,因为该规则既用于生成临时文件,也用于生成最终的输出文件。
临时文件与另一个规则的输入相对应并且该规则执行了某些操作(而不是规则all
),则不会删除它们。
这是一个示例:
rule all:
input: "output2.gz"
rule zcat:
input : "output.gz"
output: temp("output2")
shell:
"zcat {input} > {output}"
rule cp:
input : "input"
output: temp("output")
shell:
"cp {input} {output}"
rule gzip :
input:"{file}"
output: temp("{file}.gz")
shell:
"gzip -c {input} > {output}"
答案 0 :(得分:0)
您可以扫描列表sys.argv
中是否存在notemp标志,请注意,如果在命令行中可以明确指定选项,则可以用较短的形式指定这些选项。例如。 --not
与--notemp
相同。
最重要的是
我无法将其输出定义为temp(),因为该规则用于生成临时文件,但也用于生成最终输出文件
这向我表明您没有在规则中正确指定输入和输出文件,因为snakemake不会删除仍然需要的临时文件。可能是在输出中产生了必要的文件,但在必要时未将其列出为输入。例如,以下规则parse_bam
将失败,因为samtools需要.bai索引。该索引已在规则bam
中正确创建,但是由于temp
标志而被立即删除。解决方案是将a.bam.bai
列为规则parse_bam
rule bam:
output:
temp('a.bam'),
temp('a.bam.bai'),
shell:
"code to make bam and bai"
rule parse_bam:
input:
'a.bam'
output:
'b.bam'
shell:
"""
samtools view {input} chr1 > {output}
"""