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

使用Paramspace出现MissingInputException,参数已正确展开仍报错

Snakemake Paramspace 无法关联规则输入输出的问题修复

问题背景

使用Paramspace管理QC参数时,运行snakemake -np出现MissingInputException,Snakemake无法识别filter_snp_stats规则应生成目标文件,报错路径如下:

Missing input files for rule all:
    affected files:
        /mnt/storage/project/project_folder/snp-stats/post-qc/hwe_p~1e-06/info~0.99/by_chr/data.chr22.snp-stats
        ...

核心问题

Paramspace生成的路径结构与规则输出的通配符格式不匹配,加上路径前缀TEMP_DIR可能未正确应用,导致Snakemake无法建立输入输出的关联。

修复方案

方案一:统一Paramspace的参数分隔符

默认情况下,Paramspace.instance_patterns用路径分隔符/拆分参数为嵌套目录(如hwe_p~1e-06/info~0.8),但filter_snp_stats规则中的{paramspace.wildcard_pattern}是用下划线_连接的单个通配符(如hwe_p~1e-06_info~0.8),两者结构冲突。

修改主Snakefile中的Paramspace初始化代码,指定分隔符为下划线:

paramspace = Paramspace(
    pd.read_csv("config/qc_values.tsv", sep="\t"),
    sep="_"  # 让参数用下划线连接,而非路径分隔符
)

修改后,rule all生成的路径与filter_snp_stats的输出路径格式完全一致,Snakemake可正确关联。

方案二:改用显式参数通配符(保留嵌套目录)

若需要保留嵌套目录结构,可修改filter_snp_stats规则,用显式通配符对应每个QC参数:

rule filter_snp_stats:
    input:
        f"{TEMP_DIR}/snp-stats/pre-qc/by_chr/data.chr{{chr}}.snp-stats"
    output:
        # 用显式通配符匹配每个参数的路径片段
        f"{TEMP_DIR}/snp-stats/post-qc/hwe_p~{{hwe_p}}/info~{{info}}/by_chr/data.chr{{chr}}.snp-stats",
    params:
        # 直接从通配符提取参数值
        hwe_p=lambda wildcards: wildcards.hwe_p,
        info=lambda wildcards: wildcards.info
    script:
        "../scripts/filter_snpstats.R"

此方案无需修改rule all的instance_patterns,Snakemake会通过hwe_p和info两个通配符匹配目标路径。

额外检查:确保路径前缀TEMP_DIR生效

  • 确认主Snakefile中TEMP_DIR = "temp"的定义在include: rules/rules.smk之前,保证rules.smk能访问该变量。
  • 运行snakemake时避免用--config参数覆盖TEMP_DIR的值。

验证

修改后执行snakemake -np,若DAG成功生成,说明修复生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:29:54