Snakemake: «подстановочные знаки во входных файлах не могут быть определены из выходных файлов»

#snakemake

#snakemake

Вопрос:

Я использую Snakemake для выполнения некоторых правил, и у меня возникла проблема с одним:

 rule filt_SJ_out:
input: 
    "pass1/{sample}SJ.out.tab"

output:
    "pass1/SJ.db"

shell:''' 
gawk '$6==1 || ($6==0 amp;amp; $7>2)' {input} >> {output};


'''
  

Здесь я просто хочу объединить некоторые файлы в общий файл, но, выполнив поиск в Google, я увидел, что подстановочные знаки, используемые во входных данных, также должны использоваться в выходных данных.

Но я не могу найти решение , чтобы обойти эту проблему ..

Заранее благодарим

Ответ №1:

Если вы знаете значения sample до запуска скрипта, вы могли бы сделать следующее:

 SAMPLES = [... define the possible values of `sample` ...]

rule filt_SJ_out:
    input: 
        expand("pass1/{sample}SJ.out.tab", sample=SAMPLES)
    output:
        "pass1/SJ.db"
    shell:
        """ 
        gawk '$6==1 || ($6==0 amp;amp; $7>2)' {input} >> {output};
        """
  

На input шаге это сгенерирует список файлов, каждый из которых имеет форму pass1/<XYZ>SJ.out.tab .

Комментарии:

1. Нет проблем. Не могли бы вы принять ответ, если он устранил вашу проблему. Всего наилучшего