Возможно, на этот вопрос уже был дан ответ, но я не смог найти правильный запрос, чтобы найти его ...
У меня есть большой файл, который необходимо проанализировать. Чтобы сделать это быстро, я сначала разбил большой файл на несколько маленьких файлов и параллельно анализировал каждый из них. Для этого у меня есть что-то вроде этого:
rule all:
input:
'bigfile.{wildcards.partnum}.out',
rule split_big_file:
input: 'bigfile'
output: touch('splitting_file.done')
shell: 'split {input}'
rule process_small_files:
input:
small_file = 'bigfile.{wildcards.partnum}',
done = 'splitting_file.done'
output: 'bigfile.{wildcards.partnum}.out'
shell:
'some_command {input.small_file} > {output}'
Правило split_big_file
использует команду split
и создает файлы с именами файлов, такими как bigfile.001, bigfile.002, etc
. Я использую touch('splitting_file.done')
в правиле split_big_file
, чтобы убедиться, что следующее правило process_small_files
не запускается до его завершения. Когда я пытаюсь запустить это, я получаю ошибку Missing input files for rule process_small_files
. Как я могу обойти это?