snakemake - Snakemake 基于配置执行规则
问题描述
我希望能够编写一个工作流,以便我可以选择在 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}"
推荐阅读
- android - 如何让 OkHttpClient.Dispatcher 以 LIFO(后进先出)顺序使用 okhttp3.Request?
- python - 如何从视频中提取前景蒙版并将其混合到背景视频中?
- r - 切割树状图/簇:函数“cuttree”中的错误:树不正确(复合“合并”)
- answer-set-programming - Clingo 答案集编程线交叉点
- javascript - 从对象获取值总是返回 undefined
- django - 在 DRF 中更新到非标准数据库
- javascript - 从具有相同类名的按钮中获取不同的值
- python - 根据值从 DataReader 中选择行并传输到 DataFrame
- c++ - 为什么程序没有暂停就关闭?(C++)
- swagger - Nestjs/Swagger @ApiImplicitBody() 不工作