В какой-то момент мой рабочий процесс snakemake создает файл ovlp.txt, из которого я не знаю заранее, сколько строк он будет содержать. Затем я wi sh разделю этот файл на более мелкие файлы по 25000 строк, которые все называются ovlp_split {s} .txt. Для этого у меня есть правило разделения (см. Ниже). Затем каждый из этих файлов будет обработан с использованием правила предвидения (см. Ниже), в качестве входных данных которого используются все файлы ovlp_split {s} .txt. Наконец, все файлы обрабатываются вместе в правиле merge_predict ниже. Как видите, несколько раз мне нужно было расширить список входных или выходных файлов по всем разделениям. Однако, поскольку я не знаю размер файла ovlp.txt, пока он не будет создан по более раннему правилу, я не знаю, сколько будет разделений. Как я могу решить эту проблему?
Надеюсь, это было достаточно ясно, пожалуйста, дайте мне знать, если есть детали, которых нет.
Спасибо!
Марлин
rule split:
input:
'ovlp.txt'
output:
expand('ovlp_split{s}.txt', s=splits)
run:
shell('split -l '+str(lines_per_file)+' -a 4 --numeric-suffixes=1 --additional-suffix=.txt ovlp.txt ovlp_split')
rule predict:
input:
'ovlp_split{s}.txt',
output:
'ovlp_predict_split{s}.txt',
run:
(command that processes the file)
rule merge_predict:
input:
expand('ovlp_predict_split{s}.txt', s=splits)
output:
'ovlp_merged.txt'
run:
(command that processed the separate files and creates one final output file)