首页 > 解决方案 > 蛇形扩展没有输入文件

问题描述

我有一些不同的配置,我需要将它们全部组合起来才能运行 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中做到这一点。有任何想法吗?

标签: pythonworkflowsnakemake

解决方案


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将生成所需的文件。


推荐阅读