Snakemake 根据配置文件执行规则。

3

我希望能编写一个工作流程,以便在 config.json 文件中选择要运行的可选规则。例如,如果我有一个包含 2 个规则 rule_a 和 rule_b 的 Snakefile,它们都有相同的输入但不同的输出:

rule_a:
  input: input.txt
  output: out_a.txt
  run: ...

rule_b:
  input: input.txt
  output: out_b.txt
  run: ...

我在json文件中有以下配置:

{
"run_a": "T",
"run_b": "F"
}

如何编写Snakefile,以便在这种情况下仅运行rule_a而忽略rule_b?

你可以使第一条规则的输入依赖于配置中的变量。 - tsnorri
1个回答

3
作为Python可以在SnakeMake脚本中使用,因此您可以使用Python代码来识别需要创建哪些文件。
配置文件config.json:
{
    "run_a": true,
    "run_b": false
}

Snakefile:

configfile: "config.json"

if config['run_a']:
    target = 'out_a.txt'
elif config['run_b']:
    target = 'out_b.txt'


rule all:
    input:
        target

rule a:
  input: 'input.txt'
  output: 'out_a.txt'
  shell:
    "touch {output}"

rule b:
  input: 'input.txt'
  output: 'out_b.txt'
  shell:
    "touch {output}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接