如何解决在 Snakemake 规则中迭代 2 个参数
我有 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}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。