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

Snakemake工作流报错:tuple index out of range 求助

问题排查与解决

错误根源

  1. SAMPLES变量处理不当:将样本列表转为空格分隔字符串再拆分,易引入空字符串(如文件末尾换行),导致expand生成无效的通配符匹配项,触发索引越界。
  2. FastQC输入/输出通配符匹配错误:
    • 输入使用*.fastq通配符,FastQC wrapper需要明确的输入文件路径,且配对端文件未区分,Snakemake无法正确解析依赖关系。
    • 输出文件命名不符合FastQC实际生成的格式(FastQC会输出{sample}_{pair}_fastqc.html/zip,而非{sample}*.html),导致规则间依赖匹配失败。

修正后的完整代码

# 正确读取样本列表,过滤空行
with open("./input/SRR_Acc_List.txt") as f:
    SAMPLES = [line.rstrip() for line in f if line.strip()]

# 定义配对端后缀
PAIRED = ["1", "2"]

rule all:
    input:
        # 展开所有配对端的FastQC输出文件
        expand("qc/pretrim_fastqc/{sample}_{pair}_fastqc.html", sample=SAMPLES, pair=PAIRED),
        expand("qc/pretrim_fastqc/{sample}_{pair}_fastqc.zip", sample=SAMPLES, pair=PAIRED),
        "plots/quals.svg"

# Step 1: Pre-trim Quality Check
rule pretrim_fastqc:
    input:
        # 明确配对端输入文件
        "./input/{sample}_{pair}.fastq"
    output:
        # 匹配FastQC实际生成的输出文件名
        html="qc/pretrim_fastqc/{sample}_{pair}_fastqc.html",
        zip="qc/pretrim_fastqc/{sample}_{pair}_fastqc.zip"
    params: "--quiet"
    log:
        "logs/pretrim_fastqc/{sample}_{pair}.log"
    threads: 1
    wrapper:
        "v1.25.0/bio/fastqc"

关键修改说明

  • 样本列表读取:直接保留列表格式,添加空行过滤,避免引入无效的空字符串元素。
  • 配对端处理:新增PAIRED变量区分双端文件,让Snakemake能为每个样本的两个配对端分别生成FastQC任务。
  • 输入/输出路径:替换模糊的*通配符为明确的配对端后缀,确保Snakemake能准确匹配输入输出文件,建立正确的依赖关系。
  • rule all调整:同步更新expand的参数,覆盖所有配对端的输出文件,确保工作流能完整触发所有任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:13:14