Snakemake,以前缀作为输出,包括路径

标签 snakemake

如何在规则中确保输出文件夹已正确创建? 我应该添加每个预期结果文件吗?

以某种方式与snakemake define folder as output相关但在我的例子中,指定的“输出”是目录路径和所有结果文件的前缀的组合(它们将是多个)

以下命令创建文件夹路径 Analysis/MosDepth 并将文件添加到该路径:

 gt0.mosdepth.global.dist.txt
 gt0.mosdepth.region.dist.txt
 gt0.per-base.bed.gz
 gt0.per-base.bed.gz.csi
 gt0.regions.bed.gz
 gt0.regions.bed.gz.csi


rule MosDepth:
    input:
        bam = "Analysis/Minimap2/"+UnpackedRawFastq+".bam",
        bed = "ReferenceData/"+UnpackedGenomeGFF+"_exons.bed"
    output:
        pfx = "Analysis/MosDepth/gt0"
    threads: config["threads"]
    shell:
        "mosdepth -t {threads} -b {input.bed} {output.pfx} {input.bam}"

我目前只有规则 all: 中的一个文件,这是否足够,或者是否有更好的方法来确保最深度运行良好,并且不会在以后重新运行时重做?

rule all:
  input:
    "Analysis/MosDepth/gt0.regions.bed.gz"

最佳答案

我会推荐这样的东西:

mos_out = ['gt0.mosdepth.global.dist.txt', 'gt0.mosdepth.region.dist.txt', 'gt0.per-base.bed.gz', 'gt0.per-base.bed.gz.csi', 'gt0.regions.bed.gz', 'gt0.regions.bed.gz.csi']

rule MosDepth:
    input:
        bam = "Analysis/Minimap2/"+UnpackedRawFastq+".bam",
        bed = "ReferenceData/"+UnpackedGenomeGFF+"_exons.bed"
    output:
        expand("Analysis/MosDepth/{mos_out}", mos_out=mos_out) 
    params:
       pfx = "Analysis/MosDepth/gt0"
    threads: config["threads"]
    shell:
        "mosdepth -t {threads} -b {input.bed} {params.pfx} {input.bam}"

如果规则未创建其中一个输出文件,snakemake 将为您删除所有输出文件,并抛出错误。

关于Snakemake,以前缀作为输出,包括路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612042/

相关文章:

python - Snakemake:通配符不存在时出错

Snakemake:你能扩展两个因变量吗?

Snakemake:未输入的依赖项

python - 如何在 snakemake 管道中使用 pandas

makefile - Snakemake:命名规则而不是目标文件

snakemake - Snakemake中如何表达显式和隐式规则?

wildcard - 如何获取snakemake输出规则中通配符值的基本名称?

python - Snakemake 无法将多个文件识别为输入

snakemake - 根据提供给 snakemake 管道的参数有条件地执行一个或另一个规则

python - 在 Snakemake 中使用 cutadapt 适配器文件输入