Snakemake-在后续规则中进行资源使用

时间:2018-10-16 01:04:39

标签: python bioinformatics snakemake

对于给定规则,snakemake中具有资源使用永久性的最佳方法是什么?这意味着给定规则的resources会继承以下规则。一个示例是在随后的规则使用分区时,一次限制一个输入bam文件在分区(例如/dev/shm)中的大小:

samples = ["sample1", "sample2", "sample3"]
motifs = ["motif_1", ... , "motif_n"]

rule all:
    input: expand("output/{sample}.{motif}.out", sample=samples, motif=motifs)

rule copy_bam_to_shm:
    input: "{sample}.bam"
    output: temporary("/dev/shm/{sample}.bam")
    resources: shm_usage = 1
    shell: "cp {input} {output}"

rule process_motif:
    input:
        bam = rules.copy_bam_to_shm.output,
        motif = "{motif}.bed"
    output: "output/{sample}.{motif}.out"
    shell: "run_bed_bam_and_beyond.py {input.bam} {input.bed} > {output}"

我想要的是,shm_usage中声明的copy_bam_to_shm资源约束在我为当前样本运行所有后续的process_motif步骤时仍保持不变-使用以下命令执行后一个规则尽可能多的并发作业。仅在完成 sample1.bam 后,才会将 sample2.bam 复制到/dev/shm并进行处理,依此类推。如果不清楚,请参阅下面的伪代码以了解我需要的行为:

# Pseudocode
for sample in samples
    copy sample.bam to /dev/shm
    for motif in motifs
        process motif (in parallel with as many motifs as possible)
    remove sample.bam from /dev/shm
done

0 个答案:

没有答案