Посмотрите еще раз на учебник по змеиному мастерству о том, как вывод выводится из вывода, в любом случае, я думаю, что проблема заключается в следующем фрагменте кода:
output:
expand("aligned/{sample}.bam", sample = SAMPLES)
И его необходимо изменить на
output:
"aligned/{sample}.bam"
То, что у вас не работало, потому что раньше expand("aligned/{sample}.bam", sample = SAMPLES)
в основном становилось списком, подобным этому ["aligned/sample0.bam","aligned/sample1.bam"]
. Когда вы удаляете раскрытие, вы даете только «описание» того, как должен выглядеть вывод, и, следовательно, snakemake может вывести подстановочные знаки и ввод.
edit:
Это сложно чтобы проверить это, так как у меня нет реальных файлов, но вы должны сделать что-то вроде этого. Не будет работать, если существует несколько S -го вещей.
def get_reads(wildcards):
R1 = FQDIR + f"{wildcards.sample}_S{{s}}_R1_001.fastq.gz"
R2 = FQDIR + f"{wildcards.sample}_S{{s}}_R2_001.fastq.gz"
globbed = glob_wildcards(R1)
R1, R2 = expand([R1, R2], s=globbed.s)
return {"R1": R1, "R2": R2}
rule bwa_map:
input:
unpack(get_reads),
REF = config['ref']
output:
"aligned/{sample}.bam"
shell:
"bwa mem {input.REF} {input.R1} {input.R2}| samtools view -Sb - > {output}"