问题描述
我希望能够编写工作流程,以便我可以选择要在config.json文件中运行的可选规则。例如,如果我有一个包含2条规则的Snakefile,即rule_a和rule_b,每个规则具有相同的输入但输出不同:
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?
解决方法
由于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}"