Snakemake: соединение входов и выходов без общих подстановочных знаков

#python #snakemake

Вопрос:

У меня есть набор входных данных: [A, B, C, D]

И набор выходных данных: [1, 2, 3, 4]

Я хочу, чтобы пары ввода/вывода были: A1, B2, C3, D4 для правила.

Как мне это сделать в змеином файле?

Ответ №1:

Это помогло бы дать более подробную информацию и несколько примеров кода вашей проблемы. В любом случае, я бы поместил пары букв/чисел в словарь или фрейм данных и использовал лямбда-функцию для доступа к номеру, соответствующему букве:

 numbers = ['1', '2', '3', '4']
letters = ['A', 'B', 'C', 'D']

ln = dict(zip(numbers, letters))

rule all:
    input:
        expand('{number}.txt', number= numbers),

rule out:
    input:
        letter= lambda wc: ln[wc.number],
    output:
        '{number}.txt'
    shell:
        """
        echo {input.letter} > {output}
        """
 

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

1. Да, это сработало идеально! Я настроил его для своего варианта использования, но отображение ключей и значений в качестве вывода:ввод работало как заклинание.