簡體   English   中英

蛇形擴展無輸入文件

[英]snakemake expansion no input files

我有一些不同的配置,我需要將它們全部組合起來運行 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 有一個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}
    """

在此Snakefile所在的目錄中運行snakemake將生成所需的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM