【发布时间】:2021-10-24 21:39:34
【问题描述】:
我想知道如何处理下游规则中的空输出文件。 使用 SHOVILL 组装短读取 fastq 数据可能会失败并生成 0 字节 contigs.fa
如果使用 PROKKA 对 0 字节文件运行基因组注释,则会返回错误:
'input.fasta' is not a readable non-empty FASTA file
Snakemake的组装和注释规则:
rule shovill:
input:
fw="input/{fastq}_R1.fastq.gz",
rv="input/{fastq}_R2.fastq.gz"
output:
directory("results/shovill/{sample}")
threads: 16
shell:
"shovill --cpus {threads} --R1 {input.fw} --R2 {input.rv} --outdir {output}\
2> {log}"
我目前的解决方案是使用 || true 并初步生成结果目录。
rule prokka:
input:
"results/shovill/{sample}/contigs.fa"
output:
directory("results/prokka/{sample}")
threads: 8
params:
prefix="{sample}",
gcode=config["genetic_code"],
outdir="results/prokka/{sample}"
shell:
"""
mkdir -p {params.outdir}
prokka --cpus {threads} --force {input} &> {log} || true
"""
【问题讨论】:
-
您能否说明您希望实现的目标?似乎您希望下游作业即使在它们的依赖项产生错误时也能运行?
-
我想避免 snakemake 工作流在数百个作业中的一个产生错误时停止。这实际上是通过 -k 参数实现的