diff --git a/src/10_ribowave.nf b/src/10_ribowave.nf new file mode 100644 index 0000000000000000000000000000000000000000..a9c41c33314c05275354d84f1cc6475614a7e04b --- /dev/null +++ b/src/10_ribowave.nf @@ -0,0 +1,121 @@ +/* +* Ribowave : +* Inputs : gtf genome files +* Inputs : bam file +* Inputs : genome size file +*/ + +/* PARAMETERS */ + +params.gtf = "" +params.genome = "" +params.bam = "" +params.genomesize = "" + +log.info "gtf file : ${params.gtf}" +log.info "genome fasta file : ${params.genome}" +log.info "bam file(s) : ${params.bam}" +log.info "genomesize file : ${params.genomesize}" + +Channel + .fromPath( params.gtf ) + .ifEmpty { error "Cannot find any fasta files matching: ${params.gtf}" } + .set { gtf_file } +Channel + .fromPath( params.genome ) + .ifEmpty { error "Cannot find any fasta files matching: ${params.genome}" } + .set { genome_file } +Channel + .fromPath( params.bam ) + .ifEmpty { error "Cannot find any fastq files matching: ${params.bam}" } + .set { bam_files } +bam_files.into {bam_deter_P_site ; bam_track_P_site} +Channel + .fromPath( params.genomesize ) + .ifEmpty { error "Cannot find any index files matching: ${params.genomesize}" } + .set { genomesize_file } + + +/* CREATE ANNOTATION */ + +process create_annot { + publishDir "results/ribowave/annotation", mode: 'copy' + + input: + file gtf from gtf_file + file genome from genome_file + + output: + file "*" into annot_file + file "start_codon.bed" into start_codon_channel + file "final.ORFs" into finalORF_channel + file "exons.gtf" into exon_gtf_channel + + script: +""" +/Ribowave/scripts/create_annotation.sh -G ${gtf} -f ${genome} -o ./ -s /Ribowave/scripts +""" +} + + +/* P-site determination */ + +process determination_P_site { + tag "$bam.baseName" + publishDir "results/ribowave", mode: 'copy' + + input: + file bam from bam_deter_P_site + file start from start_codon_channel + + output: + file "*" into p_site_channel + file "*psite1nt.txt" into psite1nt_channel + + script: +""" +/Ribowave/scripts/P-site_determination.sh -i ${bam} -S ${start} -o ./ -n ${bam.baseName} -s /Ribowave/scripts +""" +} + +/* P-site track */ + +process track_P_site { + tag "$bam.baseName" + publishDir "results/ribowave", mode: 'copy' + + input: + file bam from bam_track_P_site + file exon from exon_gtf_channel + file genomesize from genomesize_file + file p_site from psite1nt_channel + + output: + file "*" into track_p_site_channel + file "final.psite" into psite_channel + + + script: +""" +/Ribowave/scripts/create_track_Ribo.sh -i ${bam} -G ${exon} -g ${genomesize} -P ${p_site} -o ./ -n ${bam.baseName} -s /Ribowave/scripts +""" +} + +/* ribowave Identifying translated ORF */ + +process ribowave_transORF { + publishDir "results/ribowave", mode: 'copy' + + input: + file psite from psite_channel + file finalORF from finalORF_channel + + output: + file "*" into ribowave_channel + + script: +""" +/Ribowave/scripts/Ribowave -PD -a ${psite} -b ${finalORF} -o ./ -n ${bam.baseName} -s /Ribowave/scripts -p 2 +""" +} + diff --git a/src/docker_modules/FastQC/0.11.5/Dockerfile b/src/docker_modules/FastQC/0.11.5/Dockerfile index f7b999e418fc358eaf063989e0ff058820164a95..d8956a1507345f7177657dbb7e86ab9f52d46f12 100644 --- a/src/docker_modules/FastQC/0.11.5/Dockerfile +++ b/src/docker_modules/FastQC/0.11.5/Dockerfile @@ -2,7 +2,8 @@ FROM ubuntu:18.04 MAINTAINER Laurent Modolo ENV FASTQC_VERSION=0.11.5 -ENV PACKAGES fastqc=${FASTQC_VERSION}* +ENV PACKAGES fastqc=${FASTQC_VERSION}* \ + perl RUN apt-get update && \ apt-get install -y --no-install-recommends ${PACKAGES} && \ diff --git a/src/nf_modules/FastQC/fastqc.config b/src/nf_modules/FastQC/fastqc.config new file mode 100644 index 0000000000000000000000000000000000000000..e7b3280aee724da4fcb20dca1c2af4f433344d74 --- /dev/null +++ b/src/nf_modules/FastQC/fastqc.config @@ -0,0 +1,18 @@ +profiles { + docker { + docker.temp = 'auto' + docker.enabled = true + process { + $fastqc { + container = "fastqc:0.11.5" + } + } + } + sge { + process{ + $fastqc { + beforeScript = "source /home/elabaron/.bashrc ; module load FastQC/0.11.5" + } + } + } +} diff --git a/src/nf_modules/FastQC/fastqc.nf b/src/nf_modules/FastQC/fastqc.nf new file mode 100644 index 0000000000000000000000000000000000000000..5725497ddf29585107beeecd18d10efee218f5e4 --- /dev/null +++ b/src/nf_modules/FastQC/fastqc.nf @@ -0,0 +1,33 @@ +/* +* fastqc : +* Imputs : fastq files +* Output : pdf files +*/ + +/* fastQC */ +params.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 { + tag "$fastq.baseName" + publishDir "results/fasqc/${fastq.baseName}/", mode: 'copy' + + input: + file fastq from fastq_files + + output: + file "*" into fastqc_repport + + script: +""" +fastqc -o ./ --noextract -f fastq ${fastq} +""" +} + + diff --git a/src/nf_modules/Ribowave/10_ribowave.nf b/src/nf_modules/Ribowave/pipeline_PSMN.nf similarity index 100% rename from src/nf_modules/Ribowave/10_ribowave.nf rename to src/nf_modules/Ribowave/pipeline_PSMN.nf diff --git a/src/nf_modules/Ribowave/pipeline_docker.nf b/src/nf_modules/Ribowave/pipeline_docker.nf new file mode 100644 index 0000000000000000000000000000000000000000..9c9ff82aac8ce1ffc356c678cc1cc91a3adcc745 --- /dev/null +++ b/src/nf_modules/Ribowave/pipeline_docker.nf @@ -0,0 +1,121 @@ +/* +* Ribowave : +* Inputs : gtf genome files +* Inputs : bam file +* Inputs : genome size file +*/ + +/* PARAMETERS */ + +params.gtf = "" +params.genome = "" +params.bam = "" +params.genomesize = "" + +log.info "gtf file : ${params.gtf}" +log.info "genome fasta file : ${params.genome}" +log.info "bam file(s) : ${params.bam}" +log.info "genomesize file : ${params.genomesize}" + +Channel + .fromPath( params.gtf ) + .ifEmpty { error "Cannot find any fasta files matching: ${params.gtf}" } + .set { gtf_file } +Channel + .fromPath( params.genome ) + .ifEmpty { error "Cannot find any fasta files matching: ${params.genome}" } + .set { genome_file } +Channel + .fromPath( params.bam ) + .ifEmpty { error "Cannot find any fastq files matching: ${params.bam}" } + .set { bam_files } +bam_files.into {bam_deter_P_site ; bam_track_P_site ; bam_ribowave} +Channel + .fromPath( params.genomesize ) + .ifEmpty { error "Cannot find any index files matching: ${params.genomesize}" } + .set { genomesize_file } + + +/* CREATE ANNOTATION */ + +process create_annot { + publishDir "results/ribowave/annotation", mode: 'copy' + + input: + file gtf from gtf_file + file genome from genome_file + + output: + file "*" into annot_file + file "start_codon.bed" into start_codon_channel + file "exons.gtf" into exon_gtf_channel + file "final.ORFs" into finalORF_channel + + script: +""" +/Ribowave/scripts/create_annotation.sh -G ${gtf} -f ${genome} -o ./ -s /Ribowave/scripts +""" +} + + +/* P-site determination */ + +process determination_P_site { + tag "$bam.baseName" + publishDir "results/ribowave/", mode: 'copy' + + input: + file bam from bam_deter_P_site + file start from start_codon_channel + + output: + file "*" into p_site_channel + file "P-site/*1nt.txt" into psite1nt_channel + + script: +""" +/Ribowave/scripts/P-site_determination.sh -i ${bam} -S ${start} -o ./ -n ${bam.baseName} -s /Ribowave/scripts +""" +} + +/* P-site track */ +process track_P_site { + tag "$bam.baseName" + publishDir "results/ribowave", mode: 'copy' + + input: + file bam from bam_track_P_site + file exon from exon_gtf_channel + file genomesize from genomesize_file + file p_site from psite1nt_channel + + output: + file "*" into track_p_site_channel + file "bedgraph/${bam.baseName}/final.psite" into psite_channel + + + script: +""" +/Ribowave/scripts/create_track_Ribo.sh -i ${bam} -G ${exon} -g ${genomesize} -P ${p_site} -o ./ -n ${bam.baseName} -s /Ribowave/scripts +""" +} +/* ribowave Identifying translated ORF */ + +process ribowave_transORF { + tag "$bam.baseName" + publishDir "results/ribowave", mode: 'copy' + + input: + file psite from psite_channel + file bam from bam_ribowave + file finalORF from finalORF_channel + + output: + file "*" into ribowave_channel + + script: +""" +/Ribowave/scripts/Ribowave -PD -a ${psite} -b ${finalORF} -o ./ -n ${bam.baseName} -s /Ribowave/scripts -p 2 +""" +} + diff --git a/src/nf_modules/Ribowave/test/P-site.nf b/src/nf_modules/Ribowave/test/P-site.nf index 735a5a531ff3e419030066fa543a8c51b63ad579..e12112236ed74b897b2bfafe70b3b2d593d35b7b 100644 --- a/src/nf_modules/Ribowave/test/P-site.nf +++ b/src/nf_modules/Ribowave/test/P-site.nf @@ -1,10 +1,8 @@ params.bam = "" params.start = "" -params.jobname = "" log.info "bam file(s) : ${params.bam}" log.info "start_codon file : ${params.start}" -log.info "job name : ${params.jobname}" Channel .fromPath( params.bam ) @@ -15,8 +13,9 @@ Channel .ifEmpty { error "Cannot find any index files matching: ${params.start}" } .set { start_file } -process p_site { - publishDir "results/ribowave/P-site", mode: 'copy' +process determination_P_site { + tag "$bam.baseName" + publishDir "results/ribowave", mode: 'copy' input: file bam from bam_files @@ -24,9 +23,10 @@ process p_site { output: file "*" into p_site_channel + file "*psite1nt.txt" into psite1nt_channel script: """ -/Ribowave/scripts/P-site_determination.sh -i ${bam} -S ${start} -o ./ -n ${params.jobname} -s /Ribowave/scripts +/Ribowave/scripts/P-site_determination.sh -i ${bam} -S ${start} -o ./ -n ${bam.baseName} -s /Ribowave/scripts """ } diff --git a/src/ribowave.config b/src/ribowave.config new file mode 100644 index 0000000000000000000000000000000000000000..59e6a55d6dee082b8b54f6b2cc98391d65350087 --- /dev/null +++ b/src/ribowave.config @@ -0,0 +1,60 @@ +profiles { + docker { + docker.temp = 'auto' + docker.enabled = true + process { + $create_annot { + container = "ribowave:1.0" + } + $determination_P_site { + container = "ribowave:1.0" + } + $track_P_site { + container = "ribowave:1.0" + } + $ribowave_transORF { + container = "ribowave:1.0" + } + } + } + sge { + process{ + $create_annot { + beforeScript = "source /home/elabaron/.bashrc; module load BEDtools/2.25.0" + executor = "sge" + cpus = 8 + memory = "5GB" + time = "6h" + queue = '*-E5-2667*' + penv = 'openmp8' + } + $determination_P_site { + beforeScript = "source /home/elabaron/.bashrc; module load BEDtools/2.25.0" + executor = "sge" + cpus = 8 + memory = "5GB" + time = "6h" + queue = '*-E5-2667*' + penv = 'openmp8' + } + $track_P_site { + beforeScript = "source /home/elabaron/.bashrc; module load BEDtools/2.25.0" + executor = "sge" + cpus = 8 + memory = "5GB" + time = "6h" + queue = '*-E5-2667*' + penv = 'openmp8' + } + $ribowave_transORF { + beforeScript = "source /home/elabaron/.bashrc; module load BEDtools/2.25.0" + executor = "sge" + cpus = 8 + memory = "128GB" + time = "6h" + queue = '*-E5-2667*' + penv = 'openmp8' + } + } + } +}