Давайте предположим, что у меня есть следующие файлы, на которые я хочу, чтобы автоматически применить некоторую обработку с использованием snakemake:Как использовать расширение в snakemake, когда некоторые особые комбинации подстановок не нужны?
test_input_C_1.txt
test_input_B_2.txt
test_input_A_2.txt
test_input_A_1.txt
Следующая snakefile использует expand
, чтобы определить все потенциальные окончательные результаты файла:
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
The причиной этой ошибки является то, что expand
использует itertools.product
под капотом для генерации комбинаций подстановочных знаков, некоторые из которых, как представляется, соответствуют отсутствующим файлам.
Как отфильтровать нежелательные сочетания символов?