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

Snakemake样本重命名报错:无法确定输入通配符'barcode'

问题原因

你遇到的WildcardError是因为Snakemake的依赖解析逻辑是从输出反向推导输入,但原规则里输入的{barcode}通配符和输出的{params.value}没有直接关联——Snakemake无法从输出的样本名反推出对应的条码,自然没法确定输入文件。

解决方案

通过创建反向字典,让Snakemake能从目标输出的样本名,反向找到对应的条码输入文件,就能解决通配符无法推导的问题。

修改后的完整Snakefile代码:

mydictionary = {
    'BC01': 'bacteria_A',
    'BC02': 'bacteria_B'
}
# 生成反向字典:用样本名查找对应的条码
rev_dictionary = {v: k for k, v in mydictionary.items()}

rule all:
    input:
        expand('{bacteria}_trimmed.fastq.gz', bacteria=mydictionary.values())

rule changeName:
    input:
        # 利用通配符(样本名)从反向字典获取条码,动态生成输入文件名
        lambda wildcards: f"{rev_dictionary[wildcards.bacteria]}_trimmed.fastq.gz"
    output:
        '{bacteria}_trimmed.fastq.gz'
    shell:
        "mv {input} {output}"
修改说明
  1. 反向字典rev_dictionary:把原字典的键值对反转,实现从样本名到条码的映射,让Snakemake能明确每个输出文件对应的输入条码。
  2. 输入动态生成:用lambda函数结合通配符wildcards.bacteria(即目标样本名),通过反向字典拼接出正确的输入条码文件名,让Snakemake能准确追踪依赖关系。
  3. 输出通配符对齐:输出直接使用{bacteria}通配符,和rule all中的expand逻辑保持一致,确保任务触发路径清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:49:52