我正在尝试为管道编写脚本,但是在声明目录输入规则时遇到了麻烦。
我在这些部分中的代码:
rule taco:
input:
all_gtf = GTF_DIR + "path_samplesGTF.txt"
output:
taco_out = TACO_DIR
shell:
"taco_run -v -p 20 -o {output.taco_out} \
--filter-min-expr 1 --gtf-expr-attr RPKM {input.all_gtf}"
rule feelnc_filter:
input:
assembly = TACO_DIR + "assembly.gtf",
annotation = GTF
output:
candidate_lncrna = FEELNC_FILTER + "candidate_lncrna.gtf"
shell:
"./FEELnc_filter.pl -i {input.assembly} -a {input.annotation} > {output.candidate_lncrna}"
这是我的错误:
/ pdir / Snakefile的第97行中的MissingInputException:
缺少规则feelnc_filter的输入文件:
谢谢! /workdir/pipeline-v01/TACO/assembly.gtf
答案 0 :(得分:1)
您的脚本代码肯定少于97行,因此异常描述不是很有用。无论如何,MissingInputException表示Snakemake已成功构建工作流DAG(这意味着input/output
和通配符没有问题)并开始执行该工作流。在某个时候,它正在尝试执行规则,而该规则的预期输出在规则的shell脚本的末尾不存在。
现在,我们有第二个问题:您的脚本运行自己的Perl脚本和未知的taco_run
可执行文件:我不知道这些程序的作用。我猜taco_run
不会创建您指定为-o {output.taco_out}
的目录。
我建议您使用--printshellcmds
键运行Snakemake。这将向您显示正在运行的确切命令,并且您可以尝试分别运行这些命令。检查这些命令是否确实创建了预期的输出。