From a366ef20575c1446452e545534a33c939bfd208b Mon Sep 17 00:00:00 2001 From: Laurent Modolo <laurent.modolo@ens-lyon.fr> Date: Wed, 25 Jul 2018 17:36:35 +0200 Subject: [PATCH] MultiQC: add nf, test, and fix Dockerfile --- src/docker_modules/MultiQC/1.0/Dockerfile | 8 +++- src/nf_modules/MultiQC/multiqc.config | 38 ++++++++++++++++ src/nf_modules/MultiQC/multiqc.nf | 25 +++++++++++ .../MultiQC/tests/multiqc_paired.nf | 43 +++++++++++++++++++ .../MultiQC/tests/multiqc_single.nf | 43 +++++++++++++++++++ src/nf_modules/MultiQC/tests/tests.sh | 9 ++++ 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 src/nf_modules/MultiQC/multiqc.config create mode 100644 src/nf_modules/MultiQC/multiqc.nf create mode 100644 src/nf_modules/MultiQC/tests/multiqc_paired.nf create mode 100644 src/nf_modules/MultiQC/tests/multiqc_single.nf create mode 100755 src/nf_modules/MultiQC/tests/tests.sh diff --git a/src/docker_modules/MultiQC/1.0/Dockerfile b/src/docker_modules/MultiQC/1.0/Dockerfile index 09b218a..d351f1c 100644 --- a/src/docker_modules/MultiQC/1.0/Dockerfile +++ b/src/docker_modules/MultiQC/1.0/Dockerfile @@ -6,10 +6,16 @@ ENV PACKAGES build-essential=12.4* \ python3-pip=9.0.1* \ python3-setuptools=39.0.1* \ python3-dev=3.6.5* \ - python3-wheel=0.30.0* + python3-wheel=0.30.0* \ + locales RUN apt-get update && \ apt-get install -y --no-install-recommends ${PACKAGES} && \ apt-get clean +RUN locale-gen en_US.UTF-8 +ENV LC_ALL=en_US.utf-8 +ENV LANG=en_US.utf-8 + RUN pip3 install multiqc==${MULTIQC_VERSION} + diff --git a/src/nf_modules/MultiQC/multiqc.config b/src/nf_modules/MultiQC/multiqc.config new file mode 100644 index 0000000..c1bda95 --- /dev/null +++ b/src/nf_modules/MultiQC/multiqc.config @@ -0,0 +1,38 @@ +profiles { + docker { + docker.temp = 'auto' + docker.enabled = true + process { + $fastqc_fastq { + container = "fastqc:0.11.5" + } + $multiqc { + container = "multiqc:1.0" + } + } + } + sge { + process{ + $fastqc_fastq { + beforeScript = "module purge; module load FastQC/0.11.5" + executor = "sge" + cpus = 1 + memory = "5GB" + time = "6h" + queueSize = 1000 + pollInterval = '60sec' + queue = 'monointeldeb128' + } + $multiqc { + beforeScript = "module purge; module load FastQC/1.0" + executor = "sge" + cpus = 1 + memory = "5GB" + time = "6h" + queueSize = 1000 + pollInterval = '60sec' + queue = 'monointeldeb128' + } + } + } +} diff --git a/src/nf_modules/MultiQC/multiqc.nf b/src/nf_modules/MultiQC/multiqc.nf new file mode 100644 index 0000000..eae20b5 --- /dev/null +++ b/src/nf_modules/MultiQC/multiqc.nf @@ -0,0 +1,25 @@ +/* +* multiqc : +* Imputs : report files +* Output : multiqc report +*/ + +/* MultiQC */ + +process multiqc { + tag "$repport.baseName" + publishDir "results/fastq/multiqc/", mode: 'copy' + cpus = 1 + + input: + file repport from fastqc_repport.collect() + + output: + file "*multiqc_*" into multiqc_report + + script: +""" +multiqc -f . +""" +} + diff --git a/src/nf_modules/MultiQC/tests/multiqc_paired.nf b/src/nf_modules/MultiQC/tests/multiqc_paired.nf new file mode 100644 index 0000000..7db2ea3 --- /dev/null +++ b/src/nf_modules/MultiQC/tests/multiqc_paired.nf @@ -0,0 +1,43 @@ +params.fastq = "$baseDir/data/fastq/*_{1,2}.fastq" + +log.info "fastq files : ${params.fastq}" + +Channel + .fromFilePairs( params.fastq ) + .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" } + .set { fastq_files } + +process fastqc_fastq { + tag "$pair_id" + publishDir "results/fastq/fastqc/", mode: 'copy' + + input: + set pair_id, file(reads) from fastq_files + + output: + file "*.{zip,html}" into fastqc_repport + + script: +""" +fastqc --quiet --threads ${task.cpus} --format fastq --outdir ./ \ +${reads[0]} ${reads[1]} +""" +} + +process multiqc { + tag "$repport[0].baseName" + publishDir "results/fastq/multiqc/", mode: 'copy' + cpus = 1 + + input: + file repport from fastqc_repport.collect() + + output: + file "*multiqc_*" into multiqc_report + + script: +""" +multiqc -f . +""" +} + diff --git a/src/nf_modules/MultiQC/tests/multiqc_single.nf b/src/nf_modules/MultiQC/tests/multiqc_single.nf new file mode 100644 index 0000000..30edc7b --- /dev/null +++ b/src/nf_modules/MultiQC/tests/multiqc_single.nf @@ -0,0 +1,43 @@ +params.fastq = "$baseDir/data/fastq/*.fastq" + +log.info "fastq files : ${params.fastq}" + +Channel + .fromPath( params.fastq ) + .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" } + .set { fastq_files } + +process fastqc_fastq { + tag "$reads.baseName" + publishDir "results/fastq/fastqc/", mode: 'copy' + cpus = 1 + + input: + file reads from fastq_files + + output: + file "*.{zip,html}" into fastqc_repport + + script: +""" +fastqc --quiet --threads ${task.cpus} --format fastq --outdir ./ ${reads} +""" +} + +process multiqc { + tag "$repport[0].baseName" + publishDir "results/fastq/multiqc/", mode: 'copy' + cpus = 1 + + input: + file repport from fastqc_repport.collect() + + output: + file "*multiqc_*" into multiqc_report + + script: +""" +multiqc -f . +""" +} + diff --git a/src/nf_modules/MultiQC/tests/tests.sh b/src/nf_modules/MultiQC/tests/tests.sh new file mode 100755 index 0000000..8aaa83c --- /dev/null +++ b/src/nf_modules/MultiQC/tests/tests.sh @@ -0,0 +1,9 @@ +nextflow src/nf_modules/MultiQC/tests/multiqc_paired.nf \ + -c src/nf_modules/MultiQC/multiqc.config \ + -profile docker \ + --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq" + +nextflow src/nf_modules/MultiQC/tests/multiqc_single.nf \ + -c src/nf_modules/MultiQC/multiqc.config \ + -profile docker \ + --fastq "data/tiny_dataset/fastq/tiny_S.fastq" -- GitLab