Мой 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?