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

Snakemake中Wildcards对象报AttributeError:无'sample'属性求助

问题:Snakemake中触发AttributeError: 'Wildcards' object has no attribute 'sample'错误

我在Snakemake平台尝试了多种解决方案都没奏效,始终搞不懂为什么会出现这个错误:AttributeError: 'Wildcards' object has no attribute 'sample'

我的实现代码如下:

import pandas as pd
sample_csv = os.path.join(BASE_DIR, "samples.csv")
sample_table = pd.read_csv(sample_csv).set_index('sample', drop=False)
def get_fq1(wildcards):
    return sample_table.loc[wildcards.sample, 'fastq1']
def get_fq2(wildcards):
    return sample_table.loc[wildcards.sample, 'fastq2']
def get_fq_files_dict(wildcards):
    return {
        "r1" : sample_table.loc[wildcards.sample, 'fastq1'],
        "r2" : sample_table.loc[wildcards.sample, 'fastq2'],
    }

rule fastp:
    input:
        unpack(get_fq_files_dict)
    output:
        expand(base_dir + "/trimmed/{sample}_trimmed.{r}.fastq.gz", sample=SAMPLES_f, # This is refined elsewhere, r=['_1','_2'])
    shell:
        """
        echo {input} # This is just a decoy command
        """

执行代码时触发的错误:

AttributeError: 'Wildcards' object has no attribute 'sample'

问题原因与解决方案

核心原因

fastp规则的输出直接用expand()生成了所有样本的文件列表,导致规则本身没有{sample}通配符上下文。Snakemake调用输入函数get_fq_files_dict时,无法获取到对应的sample通配符值,因此报错找不到wildcards.sample。

修复方案

修改规则为单样本处理模式,用通配符定义输出,再通过顶层规则触发所有样本的任务:

rule fastp:
    input:
        unpack(get_fq_files_dict)
    output:
        r1=base_dir + "/trimmed/{sample}_trimmed._1.fastq.gz",
        r2=base_dir + "/trimmed/{sample}_trimmed._2.fastq.gz"
    shell:
        """
        echo {input.r1} {input.r2}
        """

# 新增顶层规则,触发所有样本的fastp任务
rule all:
    input:
        expand(base_dir + "/trimmed/{sample}_trimmed.{r}.fastq.gz", sample=SAMPLES_f, r=['_1','_2'])

额外说明

  • 直接在规则输出中使用expand()会让规则变成"聚合型"任务,失去单个样本的通配符上下文,输入函数无法获取wildcards.sample。
  • 正确的逻辑是让规则处理单个样本的任务,用通配符占位,再通过rule all聚合所有目标文件,自动触发所有样本的对应任务。
  • 使用unpack()配合字典输入时,输出最好也用对应的键(如r1、r2),能让输入输出的对应关系更清晰,也方便在shell命令中精准引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:04:58