Как использовать расширение в snakemake, когда некоторые конкретные комбинации символов подстановки не желательны?
Предположим, у меня есть следующие файлы, к которым я хочу применить некоторую обработку автоматически, используя snakemake:
test_input_C_1.txt
test_input_B_2.txt
test_input_A_2.txt
test_input_A_1.txt
Следующее использование snakefileexpand
чтобы определить все возможные файлы окончательных результатов:
rule all:
input: expand("test_output_{text}_{num}.txt", text=["A", "B", "C"], num=[1, 2])
rule make_output:
input: "test_input_{text}_{num}.txt"
output: "test_output_{text}_{num}.txt"
shell:
"""
md5sum {input} > {output}
"""
Выполнение приведенного выше файла snakefile приводит к следующей ошибке:
MissingInputException in line 4 of /tmp/Snakefile:
Missing input files for rule make_output:
test_input_B_1.txt
Причина этой ошибки в том, чтоexpand
использованияitertools.product
под капотом, чтобы генерировать подстановочные комбинации, некоторые из которых соответствуют отсутствующим файлам.
Как отфильтровать нежелательные комбинации символов?