#snakemake
#snakemake
Вопрос:
localrules
может использоваться для локального запуска определенных правил вместо того, чтобы запускать их как задание кластера. Возможно ли дополнительно определить это специфичным для подстановочных знаков образом?
Например, в приведенном ниже примере правило summer
должно запускаться локально для создания файла short_job.txt
и выполняться как задание кластера для файла long_job.txt
.
rule all:
input:
"long_job.txt",
"short_job.txt",
localrules: summer
rule summer:
output:
"{sample}.txt"
shell:
"touch {output}"
Ответ №1:
Для решения этой задачи я бы использовал два отдельных правила:
rule all:
input:
"long_job.txt",
"short_job.txt",
rule summer:
output:
"{sample}.txt"
wildcard_constraints:
sample=".*long.*"
shell:
"touch {output}"
localrules: summer_local
rule summer_local:
output:
"{sample}.txt"
wildcard_constraints:
sample=".*short.*"
shell:
"touch {output}"
Комментарии:
1. Спасибо! Это мой текущий подход. Но с несколькими правилами рабочий процесс становился все более и более трудным для чтения, и поэтому мне было интересно, есть ли лучший подход.
2. Я предполагаю, что ответ отрицательный. По крайней мере, не с
localrules
: вы указываете список правил для запуска локально, и нет способа запустить одно и то же правило в обоих режимах.