Используйте локальные правила snakemake в соответствии с шаблоном

#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 : вы указываете список правил для запуска локально, и нет способа запустить одно и то же правило в обоих режимах.