小编Vin*_*bot的帖子

如何避免在输入或中间输出文件更新后运行 Snakemake 规则

即使 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 忽略文件更新?

workflow caching file build snakemake

13
推荐指数
2
解决办法
1614
查看次数

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

3
推荐指数
1
解决办法
3048
查看次数

将规则的可选输入文件全部放入 Snakemake 中

在我的 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 不应该以这种方式工作

提前致谢

python workflow pipeline snakemake

2
推荐指数
1
解决办法
1552
查看次数

标签 统计

snakemake ×3

workflow ×2

build ×1

caching ×1

file ×1

pipeline ×1

python ×1