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

Snakemake修改输出目录后出现MissingOutput Exception错误

Snakemake MissingOutputException 问题修复:多组基因组核心分析任务拆分

问题根源

当前Snakefile把3组基因组分析任务打包到同一个job里执行,但你的corecruncher_master.py脚本单次运行只能处理一个基因组列表文件,生成一个对应输出目录。原规则中同时传入3个-list和3个-out参数,脚本只会处理第一个参数对应的任务,导致另外两个输出目录根本没生成,Snakemake检测到缺失后抛出MissingOutputException。

修复方案:拆分独立任务

修改Snakefile,让每个基因组组对应一个独立的Snakemake任务,通过通配符实现参数化:

修复后的完整Snakefile

configfile: "config_cand.yaml"

# 汇总规则:依赖所有核心基因组分析任务的输出
rule Gene_flow_between_species_all:
    input:
        expand("{dir_path}/core_genome", dir_path=config["dirname"])

# 参数化规则:每个config中的dirname对应一个独立任务
rule Gene_flow_between_species:
    input:
        dir="Campylobacter/genomes",
        liste="{dir_path}/path_to_genome_list.txt"
    output:
        directory("{dir_path}/core_genome")
    shell:
        '''python pipelines/CoreCruncher/corecruncher_master.py \
            -in {input.dir} \
            -out {output} \
            -list {input.liste} \
            -freq 85 -prog usearch -ext .fa -length 80 -score 70 -align mafft'''

关键修改说明

  • 移除全局变量:删掉原代码中的dirname = config["dirname"],直接在expand中调用config["dirname"],避免路径打包
  • 使用通配符{dir_path}:Snakemake会自动遍历config里的3个dirname条目,生成3个独立的job,每个job对应一组基因组分析
  • 输入输出一一绑定:每个任务的输入列表文件和输出目录严格对应,确保脚本单次只处理一组数据,生成对应的输出目录

验证与优化

  1. 先执行 dry-run 检查任务生成情况:
    snakemake Gene_flow_between_species_all -n
    
    应该看到3个Gene_flow_between_species任务,每个对应不同的dir_path
  2. 如果文件系统存在延迟问题,运行时增加等待时间:
    snakemake Gene_flow_between_species_all --latency-wait 30
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:00:54