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

Snakemake WorkflowError排查:目标规则含通配符问题

Snakemake报错WorkflowError: Target rules may not contain wildcards的原因及解决方法

错误原因

  1. 直接运行带通配符的规则:你用命令snakemake ... A_checkm指定运行A_checkm规则,但这个规则包含通配符{genome},Snakemake无法自动解析通配符对应的具体样本,因此抛出该错误。
  2. rule all定义不规范:你的rule all输入使用了通配符{genome},但未提供具体的基因组列表,Snakemake无法明确需要生成哪些输出文件/目录。

解决步骤

1. 提取所有待处理的基因组名称

在Snakefile最开头添加代码,自动从输入文件目录中提取所有基因组名称:

import glob

# 从../data/genomesFna/下的文件名中提取genome标识符
genomes = [
    filename.split("/")[-1].replace("_genomic.fna.gz", "")
    for filename in glob.glob("../data/genomesFna/*_genomic.fna.gz")
]

2. 修正rule all规则

用expand()函数生成具体的输出路径列表,替换原来的通配符输入:

rule all:
    input:
        expand("../data/A_checkm/{genome}", genome=genomes)

3. 正确运行Workflow

不要直接指定A_checkm作为运行目标,而是运行默认的rule all,它会自动触发所有需要的A_checkm任务:

snakemake -s Snakefile --cores 10

如果需要单独处理某个基因组,直接指定对应的输出目录作为目标:

snakemake -s Snakefile --cores 10 ../data/A_checkm/你的基因组名称

额外优化建议

  • 可以在rule A_checkm的输入中添加glob_wildcards来更稳健地匹配输入文件,避免手动提取可能出现的错误。
  • 临时目录的处理可以考虑使用Snakemake内置的temp()函数,但当前的手动清理方式也能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:35:13