You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Snakemake scatter/gather中配置的拆分总项数?

解决Snakemake scatter/gather获取拆分总数的问题

你遇到的KeyError是因为scattergather块的配置并不属于Snakemake的config字典,直接通过config["scattergather"]访问自然会报错。以下是两种正确获取拆分总数的方法:

方法1:直接在规则中引用scatter的split属性

Snakemake的scatter对象本身可以直接访问拆分数量,你可以在规则的shell命令中直接使用{scatter.split}:

scattergather:
    split=8

rule split:
    input: "input.txt"
    output: scatter.split("splitted/{scatteritem}.txt")
    shell: "split -l {scatter.split} {input} splitted/"

如果需要通过params传递,可借助lambda函数获取scatter属性:

rule split:
    input: "input.txt"
    output: scatter.split("splitted/{scatteritem}.txt")
    params: split_total = lambda wildcards, scatter: scatter.split
    shell: "split -l {params.split_total} {input} splitted/"

方法2:将拆分数量统一存在config中

把拆分总数先定义在配置文件(如config.yaml)里,让scattergather和规则都引用这个配置值,保证参数统一:

  1. 在config.yaml中添加:
scatter_config:
    split: 8
  1. 在Snakemake规则文件中:
scattergather:
    split=config["scatter_config"]["split"]

rule split:
    input: "input.txt"
    output: scatter.split("splitted/{scatteritem}.txt")
    params: split_total = config["scatter_config"]["split"]
    shell: "split -l {params.split_total} {input} splitted/"

后续不管是通过CLI传递配置(如--config scatter_config.split=12)还是修改配置文件,所有引用的地方都会同步更新。

内容的提问来源于stack exchange,提问作者Cornelius Roemer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:01:17