在 Snakemake 规则中迭代 2 个参数
Iterate over 2 parameters in a Snakemake rule
我有 2 个参数,我试图在 Snakemake 中对其进行迭代。这通常使用 expand 是可行的,但是,我想将 expand 中的参数用于命令行:
STEPSMSA=["0","10","20","30","40"]
LENGTHS=["30","35","40","45","50"]
rule sim:
input: expand("simulations/gen_{step}.fa",step=STEPSMSA)
output: expand("simulations/gen_{step}_n1000000_l{len}.fa",step=STEPSMSA,len=LENGTHS)
shell: expand("simulate -n 10000000 -l {len} {input} |gzip > {output}",len=LENGTHS)
请注意,“模拟”是一个可访问的内部 UNIX 程序。我想要的是 运行:
simulate -n 10000000 -l 30 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l30.fa
simulate -n 10000000 -l 35 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l35.fa
simulate -n 10000000 -l 40 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l40.fa
...
simulate -n 10000000 -l 50 simulations/gen_40.fa |gzip > simulations/gen_40_n1000000_l50.fa
有什么方法可以使用 Snakemake 来指定它吗?
所以您希望 simulations/gen_{step}_n1000000_l{len}.fa
用于 step 和 len 的所有组合,对吗?如果是这样,你可以这样做:
STEPSMSA=["0","10","20","30","40"]
LENGTHS=["30","35","40","45","50"]
rule all:
input:
expand("simulations/gen_{step}_n1000000_l{len}.fa", step=STEPSMSA, len=LENGTHS)
rule sim:
input:
"simulations/gen_{step}.fa"
output:
"simulations/gen_{step}_n1000000_l{len}.fa"
shell:
"simulate -n 10000000 -l {wildcards.len} {input} | gzip > {output}"
我有 2 个参数,我试图在 Snakemake 中对其进行迭代。这通常使用 expand 是可行的,但是,我想将 expand 中的参数用于命令行:
STEPSMSA=["0","10","20","30","40"]
LENGTHS=["30","35","40","45","50"]
rule sim:
input: expand("simulations/gen_{step}.fa",step=STEPSMSA)
output: expand("simulations/gen_{step}_n1000000_l{len}.fa",step=STEPSMSA,len=LENGTHS)
shell: expand("simulate -n 10000000 -l {len} {input} |gzip > {output}",len=LENGTHS)
请注意,“模拟”是一个可访问的内部 UNIX 程序。我想要的是 运行:
simulate -n 10000000 -l 30 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l30.fa
simulate -n 10000000 -l 35 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l35.fa
simulate -n 10000000 -l 40 simulations/gen_0.fa |gzip > simulations/gen_0_n1000000_l40.fa
...
simulate -n 10000000 -l 50 simulations/gen_40.fa |gzip > simulations/gen_40_n1000000_l50.fa
有什么方法可以使用 Snakemake 来指定它吗?
所以您希望 simulations/gen_{step}_n1000000_l{len}.fa
用于 step 和 len 的所有组合,对吗?如果是这样,你可以这样做:
STEPSMSA=["0","10","20","30","40"]
LENGTHS=["30","35","40","45","50"]
rule all:
input:
expand("simulations/gen_{step}_n1000000_l{len}.fa", step=STEPSMSA, len=LENGTHS)
rule sim:
input:
"simulations/gen_{step}.fa"
output:
"simulations/gen_{step}_n1000000_l{len}.fa"
shell:
"simulate -n 10000000 -l {wildcards.len} {input} | gzip > {output}"