python - 蛇形扩展没有输入文件
问题描述
我有一些不同的配置,我需要将它们全部组合起来才能运行 python 脚本
versions = ['lg', 'sm']
start_time = ['0', '1']
end_time = ['2']
我想要的是snakemake为我做这个:
python my_script.py -v lg -s 0 -e 2 > lg_0_2.out
python my_script.py -v lg -s 1 -e 2 > lg_1_2.out
python my_script.py -v sm -s 0 -e 2 > sm_0_2.out
python my_script.py -v sm -s 1 -e 2 > sm_1_2.out
但我似乎无法弄清楚如何在snakemake中做到这一点。有任何想法吗?
解决方案
Snakemake 有一种expand()
方法是通过外积扩展的简写,也就是您所描述的操作。通常,这将通过input
在第一条规则(默认规则)中生成输出文件字符串,然后提供myrule
解析此类字符串以生成用于生成输出的命令的规则(如下)来完成。在代码中,它会像
蛇文件
versions = ['lg', 'sm']
start_time = ['0', '1']
end_time = ['2']
rule all:
input:
expand("{version}_{start}_{end}.out",
version=versions, start=start_time, end=end_time)
rule myrule:
output: "{version,[^_]+}_{start,[0-9]+}_{end,[0-9]+}.out"
shell:
"""
python my_script.py -v {wildcards.version} -s {wildcards.start} -e {wildcards.end} > {output}
"""
snakemake
然后在它所在的目录中运行Snakefile
将生成所需的文件。
推荐阅读
- go - How to check if value is a float
- brightway - 数据库上的 apply_strategies() 找不到文件夹中存在的迁移
- python - idxmin 返回特定列
- html - 流体串联元件间隙间距
- nuxt.js - 如何在 Nuxt.js 中使用 GSAP 奖励插件?
- android - Android中Activity和Fragment的常用方法
- regex - 如果我编写 sed 来转义路径或更改脚本以在 dirs 上工作,则空格上的脚本会失败
- excel - Excel VBA - 编写引用单元格值的公式
- reactjs - 将道具传递给 hoc 包装器
- swift - Swift Firebase项目,如何只读节点的标题