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}'
我正在尝试创建一个简单的 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}'