即使 Snakemake 构建的输出文件已经存在,Snakemake 也希望重新运行我的整个管道,因为我修改了第一个输入或中间输出文件之一。
我通过做一个 Snakemake 空运行来解决-n这个问题,它为更新的输入文件提供了以下报告:
Reason: Updated input files: input-data.csv
Run Code Online (Sandbox Code Playgroud)
以及此消息用于更新中间文件
reason: Input files updated by another job: intermediary-output.csv
Run Code Online (Sandbox Code Playgroud)
如何强制 Snakemake 忽略文件更新?
我使用 Snakemake 执行一些规则,但我遇到了一个问题:
rule filt_SJ_out:
input:
"pass1/{sample}SJ.out.tab"
output:
"pass1/SJ.db"
shell:'''
gawk '$6==1 || ($6==0 && $7>2)' {input} >> {output};
'''
Run Code Online (Sandbox Code Playgroud)
在这里,我只想将一些文件合并到一个通用文件中,但是通过在谷歌上搜索,我发现输入中使用的通配符也必须在输出中使用。
但我找不到解决这个问题的解决方案..
提前致谢
在我的 Snakemake 项目中,我有一个 config.yaml 文件,它允许用户运行或不运行管道的某些步骤,例如:
DEG :
exec : True
Run Code Online (Sandbox Code Playgroud)
因此,在 Snakefile 中,我包含了与 DEG 相关的规则:
if config["DEG"]["exec"]:
include: "rules/classic_mapping.smk"
include: "rules/counts.smk"
include: "rules/run_DESeq2.smk"
Run Code Online (Sandbox Code Playgroud)
问题是,现在我想在“all”规则中动态指定输出文件,以便Snakemake知道根据用户输入的参数生成哪些文件。例如,我想按如下方式进行:
rule all:
input:
if config["DEG"]["exec"]:
"DEG/DEG.txt"
if config["DTU"]["exec"]:
"DTU/DTU.txt"
Run Code Online (Sandbox Code Playgroud)
但它不起作用:如果在规则定义中,则 Unexpected 关键字的第 58 行出现 SyntaxError (Snakefile,第 58 行)
我需要外部观点来找到替代方案,因为 Snakemake 不应该以这种方式工作
提前致谢