Как определить рабочий процесс Snakemake с неизвестным количеством выходных файлов? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть рабочий процесс, в котором, возможно, нет вывода для некоторых моих образцов. Snakemake ест мой Snakefile с dynamic("{sample}...") входами и выходами. Однако он также пытается создать файл, называемый буквально "{sample} .out", который не создается ни одним правилом, поскольку подстановочные знаки заменены.

Это мой пример Snakefile для демонстрации рабочего процесса. Существует только одно правило с неизвестным количеством выходных файлов, следующие должны работать с файлами, которые были созданы первым.

rule all:
        input: dynamic(expand("{sample}.out", sample = [ "a", "b", "c", "d" ]))

rule first:
        output:
                dynamic("{sample}.intermediate")
        shell:
                "(( $RANDOM % 2 )) && touch {output} || true"

rule second:
        input:
                dynamic("{sample}.intermediate")
        output:
                "{sample}.out"
        shell:
                "echo 'processed' > {output}"

После одного раунда Snakemake не все выходные файлы присутствует из-за случайного фактора в первом правиле (возможно, возможно , что все произведены; просто удалите их и перезапустите пример). Snakemake завершается с ошибкой MissingOutputException:

MissingOutputException in line 4 of Snakefile:
Job completed successfully, but some output files are missing. Missing files after 5 seconds:
{sample}.intermediate

В моих реальных данных нет случайности, но я не могу предсказать окончательное количество выходных файлов. У меня есть список возможных примеров имен, которые я расширяю до списка целевых файлов, но не могу узнать, какой (если таковой имеется) приведет к выводу.

Я видел ответ на this другой вопрос , и он помог понять, что для каждого вывода dynamic() должно быть другое правило, которое принимает dynamic() ввода. Я не понимаю, почему Snakemake пытается создать файлы "{sample} .out". Как я могу это исправить и получить непредсказуемый набор выходных файлов?

...