【发布时间】:2020-09-03 13:47:47
【问题描述】:
我目前正在编写一个 Snakefile,它会进行大量的对齐后质量控制 (CollectInsertSizeMetics, CollectAlignmentSummaryMetrics, CollectGcBiasMetrics, ...)。
在 Snakefile 的最后,我正在运行 multiQC 以将所有指标合并到一个 html 报告中。
我知道如果我使用规则 A 的输出作为规则 B 的输入,规则 B 只会在规则 A 完成后执行。
我的问题是 multiQC 的输入是一个目录,它从一开始就存在。在此目录中,multiQC 将搜索某些文件,然后创建报告。
如果我当前正在执行我的 Snakemake 文件,则 multiQC 将在执行所有质量控制之前执行(例如 fastqc 需要相当长的时间),因此最终报告中缺少这些。
所以我的问题是,如果有一个选项,它指定最后执行某个规则。
我知道我可以使用--wait-for-files 等待某个fastqc 报告,但这似乎很不灵活。
最后一条规则目前如下所示:
rule multiQC:
input:
input_dir = "post-alignment-qc"
output:
output_html="post-alignment-qc/multiQC/mutliqc-report.html"
log:
err='post-alignment-qc/logs/fastQC/multiqc_stderr.err'
benchmark:
"post-alignment-qc/benchmark/multiQC/multiqc.tsv"
shell:
"multiqc -f -n {output.output_html} {input.input_dir} 2> {log.err}"
感谢任何帮助!
【问题讨论】: