Snakemake: расширить список, созданный правилом - PullRequest
0 голосов
/ 31 января 2020

Мой snakemake выглядит следующим образом (это просто выдержка, но он работает хорошо):

import os
configfile : "config.json"
name_NGS = config["name_NGS"]
OUTDIR = os.path.abspath(config["outdir"])
DIR_TPL = config["DIR_TPL"]
w = config["w"]
Q = config["Q"]
m = config["m"]
SAMPLES, = glob_wildcards(DIR_FASTQ+"/{smp}.fastq.gz")

rule all:
     input:
        expand(OUTDIR+"/FastQC/{smp}_fastqc.zip", smp=SAMPLES),
        expand(OUTDIR+"/Trimmomatic/{smp}_trim.fastq.gz", smp=SAMPLES),
        OUTDIR+"/multiQC/multiQC-PL-NGS_"+name_NGS+".html"

rule fastQC:
    input: 
        DIR_FASTQ+"/{smp}.fastq.gz"
    output: 
        "{OUTDIR}/FastQC/{smp}_fastqc.zip",
        "{OUTDIR}/FastQC/{smp}_fastqc.html"
    shell:
        "fastqc {input} -o {OUTDIR}/FastQC/"

rule trimmomatic:
    input:
        DIR_FASTQ+"/{smp}.fastq.gz"
    output:
        "{OUTDIR}/Trimmomatic/{smp}_trim.fastq.gz
    shell:
        "trimmomatic SE -phred33 {input} {output} SLIDINGWINDOW:{w}:{Q} MINLEN:{m}"

rule multiQC:
    input:
        expand(OUTDIR+"/FastQC/{smp}_fastqc.zip", smp=SAMPLES),
        expand(OUTDIR+"/Trimmomatic/{smp}_trim.fastq.gz", smp=SAMPLES),
        tpl_plNGS=DIR_TPL+"/template-PL-NGS_multiqc_config.yaml"
    output:
        "{OUTPUT}/multiQC/multiQC-PL-NGS_{name_NGS}.html"
    shell:
        "multiqc -f -c {OUTDIR}/multiQC/PL-NGS_multiqc_config.yaml -n {output} {OUTDIR}/"

Как вы можете видеть, все мои правила расширены на моих примерах (файлах fastq), которые перечислены в SAMPLES

Я создаю эти файлы fastq перед запуском этого snakemake с помощью следующей команды

bcl2fastq -R path/to/BCL/directory/ --sample-sheet path/to/BCL/directory/samplesheet.csv -o path/to/BCL/directory_fastq -p 16 --no-lane-splitting

Поскольку мне приходится делать это вручную каждый раз, когда я хочу запустить свое snakemake, я бы Я хотел бы добавить его в мое змеиное мастерство в качестве первого правила:

rule bcl2fastq:
    input:
        DIR_BCL+"/samplesheet.csv"
    output:
        expand(DIR_FASTQ+"/{smp}.fastq.gz", smp=SAMPLES)
    shell:
        "bcl2fastq -R {DIR_BCL} --sample-sheet {input} -o {DIR_BCL}_fastq -p 16 --no-lane-splitting"

Но именно это правило определяет мой список образцов, я не могу знать его раньше. Именно bcl2fastq создает папку DIR_FASTQ.

Как я могу создать свой список образцов из вывода bcl2fastq rule?

...