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

Snakemake执行报错:规则定义中出现意外关键字filePath

Snakemake语法错误修复方案

执行命令

$snakemake -s bsmooth_Snakefile.smk -np --forcerun

报错信息

SyntaxError in file /scripts/bsmooth_snakemake/bsmooth_Snakefile.smk, line 9:
Unexpected keyword filePath in rule definition (bsmooth_Snakefile.smk, line 9)

相关文件内容

Snakefile 文件 (bsmooth_Snakefile.smk)

$ cat bsmooth_Snakefile.smk

configfile: "config/config.yaml"
configfile: "config/samples.yaml"

rule all:
    input: 
        expand("results/bsmooth_fit/{sample}/{sample}.fitted.rda", sample=config["samples"])
rule bsmooth_fit:
    input:
        filePath=lambda wildcards: config["samples"][wildcards.samples]
    output:
        bsfit="results/{rule}/{sample}/{sample}.fitted.rda"
    params:
        rscript=config["BSmooth_fit"]
    log:
        "logs/{rule}/{sample}.log"
    shell:
        "Rscript {params.rscript} --sample {wildcards.samples} --file {input.filePath} --outfile {output.bsfit} 2> {log}"

样本配置文件 (sample.yaml)

$cat sample.yaml

samples:
    Sample1Tumor: methylation_coverage/Sample1Tumor.bismark.cov.gz
    Sample1Norm: methylation_coverage/Sample1Norm.bismark.cov.gz

全局配置文件 (config.yaml)

$cat config.yaml
BSmooth_fit: scripts/bsmooth_snakemake.r

问题原因与修复方案

报错由两处问题共同导致:

  1. 通配符名称不匹配:规则中定义的通配符是{sample},但在lambda表达式和shell命令中却引用了wildcards.samples,正确的变量名应为wildcards.sample。
  2. rule all中的expand参数错误:config["samples"]是一个字典,直接传入expand会使用键值对而非样本名称,需要改为取字典的keys。

修正后的完整代码如下:

修正后的rule all

rule all:
    input: 
        expand("results/bsmooth_fit/{sample}/{sample}.fitted.rda", sample=config["samples"].keys())

修正后的rule bsmooth_fit

rule bsmooth_fit:
    input:
        filePath=lambda wildcards: config["samples"][wildcards.sample]
    output:
        bsfit="results/{rule}/{sample}/{sample}.fitted.rda"
    params:
        rscript=config["BSmooth_fit"]
    log:
        "logs/{rule}/{sample}.log"
    shell:
        "Rscript {params.rscript} --sample {wildcards.sample} --file {input.filePath} --outfile {output.bsfit} 2> {log}"

应用以上修改后,重新执行Snakemake命令即可解决该语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:43:11