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

使用Snakemake调用fastq-dump拆分SRA文件报错求助

Snakemake调用fastq-dump报错排查

问题场景

当前/atac_seq/{srr}/目录下仅存放对应SRR编号的.sra文件,直接通过bash执行fastq-dump命令可成功拆分文件,但使用以下Snakemake脚本运行时出现报错:

fastq-dump.3.1.1 err: item not found while constructing within virtual database module - the path 'SRRXXXXX.sra' cannot be opened as database or table

原始Snakemake脚本

SRRs = [
      "SRR11111111",
      "SRR22222222",
      "SRR33333333",
      "SRR44444444",
      "SRR55555555",
      "SRR66666666",
      "SRR77777777"
      ]


rule all:
  input:
    expand("../atac_seq/{srr}/{srr}_1.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_2.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_3.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_4.fastq.gz", srr=SRRs)

rule fastq_dump:
  output:        
    "../atac_seq/{n}/{n}_1.fastq.gz",
    "../atac_seq/{n}/{n}_2.fastq.gz",
    "../atac_seq/{n}/{n}_3.fastq.gz",
    "../atac_seq/{n}/{n}_4.fastq.gz"
  shell:
    """
    fastq-dump --split-files --gzip {wildcards.n}.sra 
    """

问题原因

报错核心是fastq-dump无法定位到目标.sra文件:

  • Snakemake默认以Snakefile所在目录作为工作目录,脚本中{wildcards.n}.sra仅指定了文件名,未包含完整路径,导致fastq-dump在当前工作目录下查找,而非实际存放.sra文件的/atac_seq/{srr}/目录。
  • 未给fastq_dump规则添加输入依赖,Snakemake无法确认.sra文件的存在状态,也无法利用路径信息辅助定位。

解决方案

修改脚本,明确.sra文件的完整路径,并添加输入依赖:

SRRs = [
      "SRR11111111",
      "SRR22222222",
      "SRR33333333",
      "SRR44444444",
      "SRR55555555",
      "SRR66666666",
      "SRR77777777"
      ]


rule all:
  input:
    expand("../atac_seq/{srr}/{srr}_1.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_2.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_3.fastq.gz", srr=SRRs),
    expand("../atac_seq/{srr}/{srr}_4.fastq.gz", srr=SRRs)

rule fastq_dump:
  input:
    "/atac_seq/{n}/{n}.sra"  # 明确指定sra文件的完整路径
  output:        
    "../atac_seq/{n}/{n}_1.fastq.gz",
    "../atac_seq/{n}/{n}_2.fastq.gz",
    "../atac_seq/{n}/{n}_3.fastq.gz",
    "../atac_seq/{n}/{n}_4.fastq.gz"
  shell:
    """
    fastq-dump --split-files --gzip {input} 
    """

修改说明

  1. 添加输入依赖:通过input字段指定.sra文件的完整路径,让Snakemake先确认文件存在再执行规则,同时传递正确的路径信息。
  2. 修正shell命令:用{input}替代原有的{wildcards.n}.sra,直接引用输入文件的完整路径,确保fastq-dump能精准定位到目标.sra文件。

如果Snakefile所在目录与/atac_seq是相对路径关系,可将input中的绝对路径改为相对路径(如"../atac_seq/{n}/{n}.sra"),需根据实际目录结构调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:06:20