diff --git a/src/.docker_modules/deseq2-wrapper/1.0.0/Dockerfile b/src/.docker_modules/deseq2-wrapper/1.0.0/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..bf24a2dabe688156049f7b0a7bc89a95ecdcde4a --- /dev/null +++ b/src/.docker_modules/deseq2-wrapper/1.0.0/Dockerfile @@ -0,0 +1,17 @@ +FROM rocker/r-base:4.2.3 + +LABEL MAINTAINER "Xavier Grand <xavier.grand@ens-lyon.fr>" + +RUN apt update && apt-get install -y apt-transport-https +RUN apt install -y pandoc libfontconfig1-dev libcurl4-openssl-dev \ + libssl-dev libssh2-1-dev libxml2-dev zlib1g-dev \ + libharfbuzz-dev libfribidi-dev libfreetype6-dev \ + libpng-dev libtiff5-dev libjpeg-dev && \ + R -e "install.packages(c('devtools', 'testthat', 'roxygen2', 'BiocManager', 'plotly'))" && \ + R -e "BiocManager::install('DESeq2')" + +COPY *.R . + +RUN Rscript install_deseq2-wrapper.R + +CMD [ "bash" ] \ No newline at end of file diff --git a/src/.docker_modules/deseq2-wrapper/1.0.0/deseq2-wrapper.R b/src/.docker_modules/deseq2-wrapper/1.0.0/deseq2-wrapper.R new file mode 100755 index 0000000000000000000000000000000000000000..62b9783ba6fff4d54386f0765205036a6a4db03a --- /dev/null +++ b/src/.docker_modules/deseq2-wrapper/1.0.0/deseq2-wrapper.R @@ -0,0 +1,5 @@ +# deseq2-wrapper.R + +#!/bin/Rscript +library(DESeqwrapper) +cli_run_deseq2() diff --git a/src/.docker_modules/deseq2-wrapper/1.0.0/docker_init.sh b/src/.docker_modules/deseq2-wrapper/1.0.0/docker_init.sh new file mode 100755 index 0000000000000000000000000000000000000000..d581461f48102fd09a74734a67c76fc7515d2c1e --- /dev/null +++ b/src/.docker_modules/deseq2-wrapper/1.0.0/docker_init.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# docker pull xgrand/deseq2-wrapper:1.0.0 +docker build src/.docker_modules/deseq2-wrapper/1.0.0 -t 'xgrand/deseq2-wrapper:1.0.0' +docker push xgrand/deseq2-wrapper:1.0.0 +# docker buildx build --platform linux/amd64,linux/arm64 -t "xgrand/deseq2-wrapper:1.0.0" --push src/.docker_modules/deseq2-wrapper/1.0.0 \ No newline at end of file diff --git a/src/.docker_modules/deseq2-wrapper/1.0.0/install_deseq2-wrapper.R b/src/.docker_modules/deseq2-wrapper/1.0.0/install_deseq2-wrapper.R new file mode 100644 index 0000000000000000000000000000000000000000..9db139e2ebfad502795a3a7103bc7c396c0823f9 --- /dev/null +++ b/src/.docker_modules/deseq2-wrapper/1.0.0/install_deseq2-wrapper.R @@ -0,0 +1,4 @@ +#!/usr/bin/env Rscript +install.packages("devtools") +library(devtools) +install_gitlab("LBMC/regards/deseq2-wrapper", host = "https://gitbio.ens-lyon.fr", quiet = FALSE) diff --git a/src/arriba_fusion.nf b/src/arriba_fusion.nf index 0d5c7db8962cac5f2e9b589be7ac9bc3aaf17741..f183a8751850b73da60b483602e2fc486769274e 100644 --- a/src/arriba_fusion.nf +++ b/src/arriba_fusion.nf @@ -31,6 +31,7 @@ def helpMessage() { Input: --fastq [path] Path to fastq folder. --bam [path] Path to the bam folder (indexed and sorted). + --design [path] Path to the design file. References: Can be downloaded with download_references.sh (not implemented in pipeline). --genome [path] Path to genome reference fasta file. @@ -83,6 +84,8 @@ params.star_mapping2fusion_out = "06_mapping2fusion" params.filter_bam_quality_out = "07_Filtered_bam" params.arriba_out = "10_Arriba_results" params.draw_fusions_out = "11_drawn_fusions" +params.concat_fusion_out = "12_concat_fusions" +params.fusion_out = "13_DFG" /* **************************************************************** @@ -122,6 +125,10 @@ Channel .fromPath( params.gtf ) .set { gtf_file } +Channel + .fromPath( params.design ) + .set { design } + if(params.bam) { Channel .fromPath( bam_list ) @@ -162,6 +169,8 @@ include { index_bam } from './nf_modules/samtools/main.nf' include { htseq_count } from './nf_modules/htseq/main.nf' addParams(htseq_out: '09_htseq_count', htseq_param: "${params.htseq_param}" ) include { arriba } from "./nf_modules/arriba/main.nf" include { draw_fusions } from "./nf_modules/arriba/main.nf" +include { concat_fusion } from "./nf_modules/concatenate/main.nf" +include { parsefusion } from "./nf_modules/fusion_parser/main.nf" /* **************************************************************** @@ -232,4 +241,6 @@ workflow { **************************************************************** */ + concat_fusion(arriba.out.fusions, arriba.out.discarded) + parsefusion(concat_fusion.out.concatenated_fusions) } \ No newline at end of file diff --git a/src/nf_modules/concatenate/main.nf b/src/nf_modules/concatenate/main.nf new file mode 100755 index 0000000000000000000000000000000000000000..c67cf8a7d988c607e050f99577bdc90121ed9d02 --- /dev/null +++ b/src/nf_modules/concatenate/main.nf @@ -0,0 +1,48 @@ +version = "3.15.4" +container_url = "xgrand/alpine:${version}" + + +params.fastq_out = "" +process concatenate { + tag "fastq_folder" + label "big_mem_mono_cpus" + + if (params.fastq_out != "") { + publishDir "results/${params.fastq_out}", mode: 'copy' + } + + input: + path fastq + + output: + path "merged.fastq.gz", emit: merged_fastq + + script: +""" +zcat ${fastq}/*.fastq.gz > merged.fastq +gzip --quiet merged.fastq +""" +} + +params.concat_fusion_out = "" +process concat_fusion { + tag "concat_fusion" + label "big_mem_mono_cpus" + + if (params.fastq_out != "") { + publishDir "results/${concat_fusion_out}", mode: 'copy' + } + + input: + path fusions + path discarded_fusions + + output: + path "*_fusions.tsv", emit: concatenated_fusions + + script: +""" +cat ${fusions} > res_fusions.tsv +tail +2 ${discarded_fusions} >> res_fusions.tsv +""" +} \ No newline at end of file diff --git a/src/nf_modules/fusion_parser/main.nf b/src/nf_modules/fusion_parser/main.nf index ceac664d686eaa6b4d3cfe68cec00541797e351e..6023c3dad0b2f7b1839b785ef48e18fbd74d688b 100644 --- a/src/nf_modules/fusion_parser/main.nf +++ b/src/nf_modules/fusion_parser/main.nf @@ -1,6 +1,7 @@ version = "1.0" container_url = "xgrand/fusion_parser:${version}" +params.fusion_out = "" process parsefusion{ container = "${container_url}" label "big_mem_multi_cpus"