From 3340f1ded16bdf47f1a19bd088e31163c37b073f Mon Sep 17 00:00:00 2001 From: Emmanuel Labaronne <emmanuel.labaronne@ens-lyon.fr> Date: Fri, 14 Feb 2020 11:05:56 +0100 Subject: [PATCH] add nextflow scripts for ribotish --- src/nf_modules/ribotish/ribotish.config | 42 ++++++++++++++++++ src/nf_modules/ribotish/ribotish_predict.nf | 49 +++++++++++++++++++++ src/nf_modules/ribotish/ribotish_quality.nf | 41 +++++++++++++++++ src/nf_modules/ribotish/tests.sh | 6 +++ 4 files changed, 138 insertions(+) create mode 100644 src/nf_modules/ribotish/ribotish.config create mode 100644 src/nf_modules/ribotish/ribotish_predict.nf create mode 100644 src/nf_modules/ribotish/ribotish_quality.nf create mode 100755 src/nf_modules/ribotish/tests.sh diff --git a/src/nf_modules/ribotish/ribotish.config b/src/nf_modules/ribotish/ribotish.config new file mode 100644 index 00000000..aa1d2951 --- /dev/null +++ b/src/nf_modules/ribotish/ribotish.config @@ -0,0 +1,42 @@ +profiles { + docker { + docker.temp = 'auto' + docker.enabled = true + process { + withName: ribotish_quality { + container = "lbmc/ribotish:0.2.4" + cpus = 4 + } + withName: ribotish_pred { + container = "lbmc/ribotish:0.2.4" + cpus = 4 + } + } + } + psmn{ + process{ + withName: ribotish_quality { + beforeScript = "source .conda_psmn.sh" + conda = "src/.conda_envs/ribotish_0.2.4" + executor = "sge" + clusterOptions = "-cwd -V" + cpus = 8 + memory = "30GB" + time = "24h" + queue = 'E5-2670deb128A,E5-2670deb128B,E5-2670deb128C,E5-2670deb128D,E5-2670deb128E,E5-2670deb128F' + penv = 'openmp16' + } + withName: ribotish_pred { + beforeScript = "source .conda_psmn.sh" + conda = "src/.conda_envs/ribotish_0.2.4" + executor = "sge" + clusterOptions = "-cwd -V" + cpus = 8 + memory = "30GB" + time = "24h" + queue = 'E5-2670deb128A,E5-2670deb128B,E5-2670deb128C,E5-2670deb128D,E5-2670deb128E,E5-2670deb128F' + penv = 'openmp16' + } + } + } +} diff --git a/src/nf_modules/ribotish/ribotish_predict.nf b/src/nf_modules/ribotish/ribotish_predict.nf new file mode 100644 index 00000000..a07b16eb --- /dev/null +++ b/src/nf_modules/ribotish/ribotish_predict.nf @@ -0,0 +1,49 @@ +params.bam = "data/*{Harr,CHX}*.bam" +params.bai = "data/*{Harr,CHX}*.bam.bai" +params.gff = "data/*.gtf" +params.genome = "data/*.fa" +params.quality = "results/quality/*" + +log.info "bam files : ${params.bam}" + +Channel +.fromFilePairs( params.bam ) +.ifEmpty { error "Cannot find any bam files matching: ${params.bam}" } +.set { bam_files } +Channel +.fromFilePairs( params.bai ) +.ifEmpty { error "Cannot find any bai files matching: ${params.bai}" } +.set { bai_files } +Channel + .fromPath( params.gff ) + .ifEmpty { error "Cannot find any gff files matching: ${params.gff}" } + .set { gff_files } +Channel + .fromPath( params.genome ) + .ifEmpty { error "Cannot find any fasta files matching: ${params.genome}" } + .set { genome_files } +Channel + .fromPath( params.files ) + .ifEmpty { error "Cannot find any files matching: ${params.quality}" } + .set { quality_files } + +process ribotish_pred { + tag "$file_id" + publishDir "results/pred/", mode: 'copy' + + input: + set file_id, file(bam) from bam_files + set bai_id, file(bai) from bai_files + file gff from gff_files.collect() + file genome from genome_files.collect() + file quality from quality_files.collect() + + output: + set file_id, "*" into pred + + script: +""" +ribotish predict -t ${bam[0]} -b ${bam[1]} -g ${gff} -f ${genome} \ +-o ${file_id}_pred.txt --harr -p ${task.cpus} --alt +""" +} diff --git a/src/nf_modules/ribotish/ribotish_quality.nf b/src/nf_modules/ribotish/ribotish_quality.nf new file mode 100644 index 00000000..2f5bcd6a --- /dev/null +++ b/src/nf_modules/ribotish/ribotish_quality.nf @@ -0,0 +1,41 @@ +params.bam = "data/*{.bam,.bam.bai}" +params.gff = "data/*.gtf" +params.length = "25,35" +params.th = "0.5" + +log.info "bam files : ${params.bam}" + +Channel + .fromFilePairs( params.bam ) + .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" } + .set { bam_files } +Channel + .fromPath( params.gff ) + .ifEmpty { error "Cannot find any gff files matching: ${params.gff}" } + .set { gff_files } + +process ribotish_quality { + tag "$file_id" + publishDir "results/quality/", mode: 'copy' + + input: + set file_id, file(bam) from bam_files + file gff from gff_files.collect() + + output: + set file_id, "*" into quality + + script: + tis_parameters = "" + if (bam =~ /Harr/) { + tis_parameters = "-t" + } +""" +ribotish quality -b ${bam[0]} \ + -g ${gff} \ + -p ${task.cpus} \ + -l ${params.length} \ + --th ${params.th} \ + ${tis_parameters} +""" +} diff --git a/src/nf_modules/ribotish/tests.sh b/src/nf_modules/ribotish/tests.sh new file mode 100755 index 00000000..0894f2bc --- /dev/null +++ b/src/nf_modules/ribotish/tests.sh @@ -0,0 +1,6 @@ +./nextflow src/nf_modules/ribotish/ribotish_quality.nf \ + -c src/nf_modules/ribotish/ribotish.config \ + -profile docker \ + --bam "data/tiny_dataset/map/tiny_v2.bam" \ + --gff "data/tiny_dataset/annot/tiny.gtf" \ + -resume -- GitLab