我不明白如何使用Snakemake規則刪除一個無用的Snakemake輸出文件。Snakemake:刪除輸出文件
具體而言,我有一個規則bwa_mem_sam
,它創建一個名爲{sample}.sam
的文件。 我有這個其他規則,bwa_mem_bam
創建一個名爲{sample.bam}
的文件。
這兩個文件包含不同格式的相同信息,我想刪除第一個不能成功做到這一點。
任何幫助將非常感激。 本。
rule bwa_mem_map:
input:
sam="{sample}.sam",
bam="{sample}.bam"
shell:
"rm {input.sam}"
# Convert SAM to BAM.
rule bwa_mem_map_bam:
input:
rules.sam_to_bam.output
# Use bwa mem to map reads on a reference genome.
rule bwa_mem_map_sam:
input:
reference=reference_genome(),
index=reference_genome_index(),
fastq=lambda wildcards: config["units"][SAMPLE_TO_UNIT[wildcards.sample]],
output:
"mapping/{sample}.sam"
threads: 12
log:
"mapping/{sample}.log"
shell:
"{BWA} mem -t {threads} {input.reference} {input.fastq} > {output} 2> {log} "\
"|| (rc=$?; cat {log}; exit $rc;)"
rule sam_to_bam:
input:
"{prefix}.sam"
output:
"{prefix}.bam"
threads: 8
shell:
"{SAMTOOLS} view --threads {threads} -b {input} > {output}"
謝謝您的回答。我想到了這一點,但我認爲在建立一個完整的圖書館的背景下它不那麼靈活。基本上我認爲每個規則都應該是最小的,應該實施自治規則來增加更多的功能。因此,在這種情況下,我認爲可能需要使用SAM輸出,這就是爲什麼我想保留能夠請求SAM的選項,並且如果用戶要求提供BAM,那麼SAM將被刪除。 – blaurent
@blaurent不用客氣。如果它能解決您的問題,您可以將其標記爲已接受! –
抱歉我們的信息重疊。 – blaurent