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

遵循Snakemake教程时wildcards使用报错求助

解决Snakemake Wildcards MissingInputException问题

核心逻辑纠正

你对wildcard的理解搞反了——Snakemake是从你要生成的输出文件路径里提取wildcard值,再反向推导对应的输入文件,而不是从已有的输入文件自动推断wildcard去生成输出。

比如你有输入data/samples/{sample}.fastq,规则里定义输出为mapped/{sample}.bam,你得明确告诉Snakemake要生成哪些具体的bam文件(比如mapped/A.bam、mapped/B.bam),它才会自动把sample这个wildcard替换成A、B,然后匹配到对应的输入fastq文件。

常见错误场景及修复

  1. 未指定目标输出
    只写了带wildcard的规则,但运行时没明确要生成的输出文件,Snakemake不知道该处理哪些样本。
    修复方式:

    • 直接指定目标文件运行:snakemake mapped/A.bam mapped/B.bam
    • 或者通过rule all定义总目标,结合配置文件批量处理:
      configfile: "config.yaml"
      rule all:
          input:
              expand("mapped/{sample}.bam", sample=config["samples"])
      
      在config.yaml里写samples: ["A", "B"],之后直接运行snakemake即可,rule all会触发所有对应样本的规则执行。
  2. 输入输出wildcard命名不匹配
    规则里输入和输出的wildcard名称必须完全一致,比如输入用{sample},输出也得用{sample},不能一边是{id}一边是{sample},否则Snakemake无法关联输入输出。
    错误示例:

    rule map_reads:
        input: "data/samples/{sample}.fastq"
        output: "mapped/{id}.bam"
        shell: "bwa mem ref.fa {input} > {output}"
    

    修复:统一wildcard名称,比如都改为{sample}。

  3. 输入路径模式与实际文件不匹配
    即便文件命名正确,也要检查规则里的输入路径模式是否和实际文件完全对应。比如实际文件是data/samples/A_R1.fastq,但规则里写的是data/samples/{sample}.fastq,wildcard会匹配失败,触发MissingInputException。

验证方法

运行snakemake --dry-run mapped/A.bam,查看输出中显示的输入文件是否正确指向data/samples/A.fastq。如果路径错误,调整规则里的通配符模式;如果提示找不到输入,说明wildcard未正确关联到目标输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:07:05