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

Snakemake使用fasterq-dump wrapper报Wildcards无accession属性错误

报错原因

核心触发点是fasterq-dump wrapper对通配符命名有强制要求:SRA登录号对应的通配符必须命名为accession。你编写规则时将该位置的通配符自定义为sample,wrapper内部执行时读取不到wildcards.accession字段,直接触发AttributeError。你在规则output部分的注释已经标注了这个命名要求,但实际代码未做对应匹配。

修复方法
  • 统一修改规则中所有SRA登录号对应的通配符名,将{sample}替换为{accession},覆盖rule all的输入路径、下载规则的输出路径、日志路径三个位置,同时同步修改expand函数的参数名。
    修改后的正确Snakefile示例:
# read a .txt file including many SRR* accession number
import pandas as pd
df = pd.read_csv('SraRunTable.txt', sep=',', header=0)

# append all accession number to a list
SAMPLES = []

for i in df['Run']:
    SAMPLES.append(i)

# snakemake workflow starts here
rule all:
    input:
        expand("/data/fastq/{accession}_1.fastq.gz", accession=SAMPLES)

rule get_fastq_pe_gz:
    output:
        "/data/fastq/{accession}_1.fastq.gz",
        "/data/fastq/{accession}_2.fastq.gz",
    log:
        "/data/logs/{accession}.log"
    params:
        extra="--skip-technical"
    threads: 20
    wrapper:
        "v1.7.0/bio/sra-tools/fasterq-dump"
  • 清理之前失败任务的缓存:执行命令前先删除.snakemake目录下对应失败任务的临时文件,或者直接运行snakemake -s fasterq-dump.snake --cores 20 --use-conda --cleanup-metadata SRR8750458清理单个失败任务的元数据,再重新执行原运行命令即可。

如果你不想修改现有通配符命名,也可以在下载规则的params字段中显式指定accession的取值映射,添加一行accession=lambda wildcards: wildcards.sample即可适配原有命名,但直接修改通配符名是兼容性最高、最不易触发其他隐藏问题的方案。

内容的提问来源于stack exchange,提问作者Yao-Chung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:01:29