Snakemake:缺少输入异常

Snakemake: MissingInputException

我正在尝试创建一个简单的 Snakemake 工作流程,但遇到了一些问题。我的文件生成以下错误:

MissingInputException in line 29 of /home/agalvez/data/workflow-workshop/test/Snakefile: Missing input files for rule hmm: hmmsearch --tblout output_tblout_egf --noali -E 99

MissingInputException in line 49 of /home/agalvez/data/workflow-workshop/test/Snakefile: Missing input files for rule create_archive: output/EP00771_Trimastix_marina.out output/EP00759_Prokinetoplastina_sp_PhF-6.out

这是我第一次尝试使用 Snakemake 或任何与 Python 相关的东西,所以我不明白为什么会失败。任何帮助将非常感激。提前致谢!

ARCHIVE_FILE = 'output.tar.gz'

# a single output file
OUTPUT_FILE = 'output/{species}.out'

# a single input file
INPUT_FILE = 'proteins/{species}.fasta'

# Build the list of input files.
INP = glob_wildcards(INPUT_FILE).species
print(INP)

# The list of all output files
OUT = expand(OUTPUT_FILE, species=INP)
print(OUT)

# pseudo-rule that tries to build everything.
# Just add all the final outputs that you want built.
rule all:
    input: ARCHIVE_FILE

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

# hmmsearch
#rule hmm:
#     shell: 'hmmsearch --tblout output_tblout_egf --noali -E 99 hmm/EGF.hmm INPUT_FILE OUTPUT_FILE'

# create an archive with all results
rule create_archive:
    input: OUT
    output: ARCHIVE_FILE
    shell: 'tar -czvf {output} {input}'

你有:

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

cmd 是一个包含命令的字符串,而不是输入文件,因此出现错误。也许你想要这样的东西:

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