Подстановочный знак Snakemake только в выходных данных - PullRequest
0 голосов
/ 17 мая 2018

У меня есть скрипт, который принимает большой входной файл, а затем разбивает его на несколько кусков от 1 до n, используя непредсказуемый алгоритм.

Затем следующий скрипт будет обрабатывать каждый из этих кусков итеративно.

Как я могу создать правило создания змеи, которое по существу утверждает, что выходные файлы будут существовать от 1 до n, и следующий сценарий должен быть запущен один раз для каждого из входных файлов от 1 до n.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 июля 2018

Ключевое слово dynamic . Его можно использовать так:

rule all:
    input:
        dynamic('{id}.png')


rule draw:
    input:
        '{id}.txt'
    output:
        '{id}.png'
    shell:
        'cp {input} {output}'


rule cluster:
    input:
        'input.csv'
    output:
        dynamic('{id}.txt')
    shell:
        'touch 1.txt 2.txt'
0 голосов
/ 18 мая 2018

Вы пытались установить подстановочный знак? Например, если вы перебираете правило для файлов с 1 по 22, вы можете установить подстановочный знак в верхней части файла змеиного мата:

num=range(1,23)

Затем используйте этот подстановочный знак в именах файлов вашего snakemake или ссылайтесь на него как в {wildcard.num}

...