У меня есть большой файл змейки, который выглядит так (после значительного упрощения).
rule a:
input: '{path}.csv'
output: '{path}.a.csv'
shell: 'cp {input} {output}'
rule b:
input: '{path}.csv'
output: '{path}.b.csv'
shell: 'cp {input} {output}'
rule c:
input: '{path}.csv'
output: '{path}.c.csv'
shell: 'cp {input} {output}'
rule d:
input: '{path}.csv'
output: '{path}.d.csv'
shell: 'cp {input} {output}'
rule all:
input: 'raw1.a.b.c.a.d.csv',
'raw2.a.b.c.d.a.csv'
(Эта настройка позволяет мне использовать такие правила, как функции, путем связывания их суффиксов имени файла в правиле all
.)
Начальное состояние:
$ ls -tr1
Snakefile
raw1.csv
raw2.csv
$ snakemake all
...
После:
$ ls -tr1
Snakefile
raw1.csv
raw2.csv
raw2.a.csv
raw2.a.b.csv
raw2.a.b.c.csv
raw2.a.b.c.d.csv
raw1.a.csv
raw1.a.b.csv
raw1.a.b.c.csv
raw1.a.b.c.a.csv
raw1.a.b.c.a.d.csv
raw2.a.b.c.d.a.csv
Теперь я хотел бы добавить правило, которое удаляет определенные промежуточные файлы (например, raw1.a.csv
и raw2.a.b.csv
), потому что они мне не нужны, и они занимают много места на диске. Я не могу пометить выходы с помощью temp()
из-за подстановочного знака {path}
.
Какие-нибудь советы? Спасибо.
temp
действительно работает для выходных данных, содержащих подстановочные знаки. - person j08lue   schedule 31.05.2019