Я работаю над реализацией очень простого конвейера в snakemake в надежде заменить цепочку надоедливых скриптов bash одним связным Snakefile.
У меня проблемы с написанием правила, которое разбивает файл на более мелкие части (используя GNU split), а затем приводит ко второму правилу, где вывод объединяется вместе.
Я не знаю, что написать для ввода в шаге concat, так как я не знаю, как определить все файлы, соответствующие шаблону bam_files/test*
.Я попробовал с glob, но это определенно не работает (кажется, что он фактически пропускает разделение вместе с включенным glob).Есть ли лучший способ, которым я мог бы сделать это?
# test snakemake pipeline
import glob
SAMPLE_IDS = ["test"]
rule all:
input:
expand("bam_files/{FASTQ}.out", FASTQ=SAMPLE_IDS)
rule split:
input:
expand("{FASTQ}.txt", FASTQ=SAMPLE_IDS)
output:
"bam_files/{FASTQ}."
shell:
"cat {input} | split -l 1000 -d - {output}."
rule concat:
input:
split_files = glob.glob("bam_files/{FASTQ}.*")
output:
"bam_files/{FASTQ}.out"
shell:
"cat {input} > {output}"