Snakemake - переносит использование ресурсов через последующие правила - PullRequest
0 голосов
/ 16 октября 2018

Каков наилучший способ для змеиного мейкера иметь постоянство использования ресурсов для данного правила?Это означает, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...