Ошибка MissingOutputException и задержки ожидания с помощью snakemake - PullRequest
1 голос
/ 11 декабря 2019

Я пытаюсь создать базу данных makeblastdb в snakemake:

workdir: "/path/to/workdir/"

(SAMPLES,) =glob_wildcards('/path/to/workdir/{sample}.fasta')

rule all:
    input: 
        expand("{sample}.fasta.{ext}", sample=SAMPLES, ext=["nhr", "nin", "nsq"])

rule makeblastdb:
    input:
        reference = "/path/to/workdir/{sample}.fasta"
    output:
        out = "{sample}.fasta.{ext}"
    shell:
        /Tools/ncbi-blast-2.9.0+/bin/makeblastdb -in {input.reference} -out {output.out} -dbtype nucl"

Я получаю эту ошибку:

MissingOutputException in line 11:
Missing files after 10 seconds:
This might be due to filesystem latency. If that is the case, consider to increase the wait time with --latency-wait.

В чем проблема?

1 Ответ

2 голосов
/ 11 декабря 2019

Как вы указали в комментариях, вы не знаете, сколько файлов вы получите в качестве вывода. Есть два варианта:

  • Использовать выходные каталоги .
  • Использовать контрольных точек , однако это довольно сложно правильнопонимаю (на мой взгляд).

Не проверено, но может просто работать:

Правило makeblastdb: input: reference = "/path/to/workdir/ndomsample отпуска.fasta" output: out = "{sample} .fasta. {ext}" Оболочка: /Tools/ncbi-blast-2.9.0+/bin/makeblastdb -in {input.reference} -out {output.out} -dbtype nucl "

Здесь мы помечаем вывод как выходной каталог с именем sample-ext, и вывод ncbi-blast будет находиться в этом каталоге с именем sample.ext.


edit :

Если нам не нужны все эти выходные каталоги, мы можем сказать, что ожидаем как минимум 1 выходной файл, и если он существует, мы предполагаем, что все прошло нормально:

rule makeblastdb:
    input:
        reference = "/path/to/workdir/{sample}.fasta"
    output:
        out = "{sample}.fasta.00.{ext}
    shell:
        /Tools/ncbi-blast-2.9.0+/bin/makeblastdb -in {input.reference} -out {wildcards.sample}.fasta.{wildcards.ext} -dbtype nucl"
...