Snakemake: динамический + нединамический вывод
У меня есть случай использования, в котором правило генерирует произвольное количество файлов "контрольных точек" и один выходной файл. Например, "example.input" будет производить:
- example_000.checkpoint
- example_001.checkpoint
- ...
- example_093.checkpoint (произвольное число здесь)
- example.output (гарантированный не динамический вывод)
Контрольные точки предназначены для перезапуска с этой точки в расчете, но у меня есть дополнительное использование для них. Однако мне нужно только первое (например, example_000.checkpoint) и последнее (например, example_093.checkpoint). Как я могу построить правило так, чтобы мои выводы определялись как:
rule example:
input:
{id}.input
output:
non_dynamic = {id}.output
first = {id}_{first}.checkpoint
last = {id}_{last}.checkpoint
# OR
checkpoints = dynamic({id}_{checkpoint}.checkpoint)
Если я определяю новые символы подстановки, я получаю сообщение об ошибке "Не все выходные файлы примера правила содержат одинаковые символы подстановки". Если я пытаюсь использовать динамический вывод, я получаю сообщение об ошибке "Правило с динамическим выводом может не определять какие-либо не динамические выходные файлы".
Заранее благодарю за любую помощь!