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

首次使用Snakemake构建工作流出现MissingInputException报错求助

错误原因排查

  • 核心错误:错误地将hmmsearch的命令参数写到了rule hmm的input字段中。Snakemake的input字段仅识别为需要读取的输入文件,会尝试查找名为hmmsearch --tblout output_tblout_egf --noali -E 99的文件,自然找不到抛出第一个MissingInputException。
  • 连锁错误:因为rule hmm执行失败,没有生成对应的output/{species}.out文件,所以rule create_archive依赖的输入文件不存在,抛出第二个缺失输入的报错。
  • 额外问题:你注释掉的另一版hmm规则写法也存在问题,直接写INPUT_FILE和OUTPUT_FILE不会自动解析通配符,无法匹配不同物种的输入输出文件。

修复方案

调整rule hmm的字段划分,将非文件类的命令参数放到专门的params字段即可,修改后完整的Snakefile如下:

ARCHIVE_FILE = 'output.tar.gz'

# 单个输出文件
OUTPUT_FILE = 'output/{species}.out'

# 单个输入文件
INPUT_FILE = 'proteins/{species}.fasta'

# 构建输入文件列表
INP = glob_wildcards(INPUT_FILE).species
print(INP)

# 所有输出文件列表
OUT = expand(OUTPUT_FILE, species=INP)
print(OUT)

# 伪规则,用于触发全流程执行
rule all:
    input: ARCHIVE_FILE

# hmmsearch执行规则
rule hmm:
    input:
        species=INPUT_FILE,
        hmm='hmm/EGF.hmm'
    params:
        cmd='hmmsearch --tblout output_tblout_egf --noali -E 99'
    output: OUTPUT_FILE
    shell: '{params.cmd} {input.hmm} {input.species} {output}'

# 打包所有结果
rule create_archive:
    input: OUT
    output: ARCHIVE_FILE
    shell: 'tar -czvf {output} {input}'

运行前请提前确认两个前提条件:

  1. hmm/EGF.hmm文件实际存在
  2. proteins目录下确实有匹配{species}.fasta命名格式的输入文件

内容的提问来源于stack exchange,提问作者Alex galvez morante

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:04