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

Snakemake执行BaseRecalibrator规则时报TypeError: all()无关键字参数求助

Snakemake运行报错:TypeError: all() takes no keyword arguments

报错日志

Using shell: /usr/bin/bash
Provided remote nodes: 21
Job stats:
job                 count
----------------  -------
BaseRecalibrator        2
all                     1
total                   3

Select jobs to execute...
InputFunctionException in rule BaseRecalibrator in file /cluster/home/me/WES/workflow/rules/align.smk, line 104:
Error:
  TypeError: all() takes no keyword arguments

相关代码片段

align.smk中BaseRecalibrator规则(第104行起)

rule BaseRecalibrator:
  input:
    bam="/cluster/projects/lab/WES/alignment/{sample}/{sample}.sortfixtag.bam"
  output:
    metrics="/cluster/projects/lab/WES/alignment/{sample}/{sample}.recal_data.csv"
  params:
    ref = config['ref_index']['genome'],
    dbsnp = config['snvdb']['dbsnp'],
    dbmills = config['snvdb']['indels'],
    dbindel = config['snvdb']['indels2']
  threads: 21
  shell:
    """
    module load gatk/4.2.5.0
    
    gatk --java-options "-Xmx25g" \
      BaseRecalibrator \
      -R {params.ref} \
      -I {input.bam} \
      --use-original-qualities \
      -O {output.metrics} \
      --known-sites {params.dbsnp} \
      --known-sites {params.dbmills} \
      --known-sites {params.dbindel}
    """

主Snakefile

workdir: "/cluster/home/me/WES"

##### load rules #####
include: "rules/common.smk"
include: "rules/align.smk"

##### target rules #####
rule all:
  input:
    expand("/cluster/projects/lab/WES/alignment/{sample}/{sample}.recal_data.csv", sample=samples["sample_name"])

Config.yaml

ref_index:
  bwa-index: "/cluster/projects/lab/data/genomes_BWA"
  genome: "/cluster/projects/lab/data/genomes_BWA/GCA_000001405.29_GRCh38.p14_genomic.fa"
 
snvdb:
  dbsnp: "/cluster/projects/lab/data/snv_indel_db/dbsnp/All_20180418.vcf.gz"
  indels: "/cluster/projects/lab/data/snv_indel_db/indels2/Mills_and_1000G_gold_standard.indels.hg38.vcf.gz"
  indels2: "/cluster/projects/lab/data/snv_indel_db/indels/Homo_sapiens_assembly38.known_indels.vcf.gz"

错误根源排查方向

报错提示TypeError: all() takes no keyword arguments,说明代码中存在误用Python内置函数all()的情况——all()仅接受一个可迭代对象参数,不支持关键字参数(比如all(..., key=xxx)这种写法是错误的)。

虽然报错指向BaseRecalibrator规则,但提供的该规则代码中并未直接调用all(),因此需要检查以下几个地方:

  1. 检查common.smk文件:

    • 查找是否有使用all()并传入关键字参数的代码,比如错误写法:
      all(my_list, key=lambda x: x.startswith("sample"))
      
    • 正确写法应该用map配合all():
      all(map(lambda x: x.startswith("sample"), my_list))
      
  2. 检查样本列表samples的定义:

    • 主Snakefile中使用了samples["sample_name"],需确认samples的生成逻辑(大概率在common.smk中),看是否在筛选或转换样本时误用了all()并传入关键字参数。
  3. 检查其他规则的输入函数:

    • 若有其他规则使用了动态输入函数(比如input=lambda wildcards: ...),排查其中是否有错误调用all()的情况,因为Snakemake在解析依赖关系时可能触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:22:02