У меня есть файл-змея с десятками правил, и он обрабатывает тысячи файлов. Это биоинформатический конвейер для анализа последовательности ДНК. Сегодня я добавил еще два образца в свой набор образцов, и я ожидал, что смогу запустить snakemake, и он автоматически определит, какие правила запускать, для каких файлов обрабатывать новые файлы образцов и все файлы, которые зависят от них, по иерархии. на самый верхний уровень. Однако ничего не делает. И опция -R тоже этого не делает.
Проблема проиллюстрирована этим змеиным файлом:
> cat tst
rule A:
output: "test1.txt"
input: "test2.txt"
shell: "cp {input} {output}"
rule B:
output: "test2.txt"
input: "test3.txt"
shell: "cp {input} {output}"
rule C:
output: "test3.txt"
input: "test4.txt"
shell: "cp {input} {output}"
rule D:
output: "test4.txt"
input: "test5.txt"
shell: "cp {input} {output}"
Выполните это следующим образом:
> rm test*.txt
> touch test2.txt
> touch test1.txt
> snakemake -s tst -F
Выход:
Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
count jobs
1 A
1
rule A:
input: test2.txt
output: test1.txt
jobid: 0
Finished job 0.
1 of 1 steps (100%) done
Поскольку test5.txt не существует, я ожидал появления сообщения об ошибке, но этого не произошло. И, конечно же, test3.txt и test4.txt не существуют.
Более того, использование -R вместо -F приводит к «Ничего не нужно делать». Использование «-R A» запускает только правило A.
Это относится к моему проекту в том смысле, что он показывает, что Snakemake не анализирует все зависимое дерево, если вы укажете ему построить правило в верхней части дерева, а выходные и входные файлы этого правила уже существуют. И опция -R тоже не заставляет это делать. Когда я попробовал -F в своем проекте, он начал перестраивать все, включая файлы, которые не нужно было перестраивать.
Мне кажется, что это фундаментально для того, что должен делать Snakemake, и я просто этого не понимаю. Единственный способ заставить мой конвейер анализировать новые образцы - это индивидуально вызывать каждое правило, необходимое для новых файлов, по порядку. И это слишком утомительно, и это одна из причин, почему я вообще использовал Snakemake.
Помощь!