使用Snakemake缺少目录中的输入文件

时间:2019-08-13 21:41:45

标签: python snakemake

我正在尝试为管道编写脚本,但是在声明目录输入规则时遇到了麻烦。

我在这些部分中的代码:

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

1 个答案:

答案 0 :(得分:1)

您的脚本代码肯定少于97行,因此异常描述不是很有用。无论如何,MissingInputException表示Snakemake已成功构建工作流DAG(这意味着input/output和通配符没有问题)并开始执行该工作流。在某个时候,它正在尝试执行规则,而该规则的预期输出在规则的shell脚本的末尾不存在。

现在,我们有第二个问题:您的脚本运行自己的Perl脚本和未知的taco_run可执行文件:我不知道这些程序的作用。我猜taco_run不会创建您指定为-o {output.taco_out}的目录。

我建议您使用--printshellcmds键运行Snakemake。这将向您显示正在运行的确切命令,并且您可以尝试分别运行这些命令。检查这些命令是否确实创建了预期的输出。