diff --git a/src/.docker_modules/trinity/2.13.2/Dockerfile b/src/.docker_modules/trinity/2.13.2/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f8fdc554960b16f4cb32d7ad6e40e8768cdafa0a --- /dev/null +++ b/src/.docker_modules/trinity/2.13.2/Dockerfile @@ -0,0 +1,3 @@ +FROM quay.io/biocontainers/trinity:2.13.2--ha140323_0 + +ENV TRINITY_VERSION=2.13.2--ha140323_0 diff --git a/src/.docker_modules/trinity/2.13.2/docker_init.sh b/src/.docker_modules/trinity/2.13.2/docker_init.sh new file mode 100755 index 0000000000000000000000000000000000000000..ff9da019a0dc0f6a305e1295720ba735cb0bc94b --- /dev/null +++ b/src/.docker_modules/trinity/2.13.2/docker_init.sh @@ -0,0 +1,5 @@ +#!/bin/sh +docker pull lbmc/trinity:2.13.2 +docker build src/.docker_modules/trinity/2.13.2 -t 'lbmc/trinity:2.13.2' +docker push lbmc/trinity:2.13.2 +docker buildx build --platform linux/amd64,linux/arm64 -t "lbmc/trinity:2.13.2" --push src/.docker_modules/trinity/2.13.2 diff --git a/src/nf_modules/trinity/main.nf b/src/nf_modules/trinity/main.nf new file mode 100644 index 0000000000000000000000000000000000000000..e10a79bee30e5a0ee91095c3d7bc3b4ea2bcdbe5 --- /dev/null +++ b/src/nf_modules/trinity/main.nf @@ -0,0 +1,115 @@ +version = "2.13.2" +container_url = "lbmc/trinity:${version}" + +params.sample = 3 +params.min_glue = 1 +params.min_contig_length = 200 +params.assembly_out = "" + + +workflow assembly { + take: + fastq + main: + complete_assembly(fastq) + super_transcript(complete_assembly.out.fasta) + + emit: + fasta = complete_assembly.out.fasta + super_transcript = super_transcript.out.fasta +} + +process complete_assembly { + container = "${container_url}" + label "big_mem_multi_cpus" + tag "$file_id" + if (params.assembly_out != "") { + publishDir "results/${params.assembly_out}", mode: 'copy' + } + + input: + tuple val(file_id), path(fastq) + + output: + tuple val(file_id), path("trinity_output_${file_prefix}/"), emit: folder + tuple val(file_id), path("trinity_output_${file_prefix}.Trinity.fasta"), emit: fasta + tuple val(file_id), path("trinity_output_${file_prefix}.Trinity.fasta.gene_trans_map"), emit: gene_map + tuple val(file_id), path("trinity_output_${file_prefix}/salmon_outdir/quant.sf"), emit: quant + + script: + + switch(file_id) { + case {it instanceof List}: + file_prefix = file_id[0] + break; + case {it instanceof Map}: + file_prefix = file_id.values()[0] + break; + default: + file_prefix = file_id + break; + }; + def memory = "${task.memory}" - ~/\s*GB/ + + if (fastq.size() == 2) +""" + mkdir trinity_output_${file_prefix} + Trinity \ + --seqType fq \ + --max_memory ${memory}G \ + --left ${fastq[0]} \ + --right ${fastq[1]} \ + --CPU ${task.cpus} \ + --min_glue ${params.min_glue} \ + --min_contig_length ${params.min_contig_length} \ + --output trinity_output_${file_prefix} +""" + else +""" + mkdir trinity_output_${file_prefix} + Trinity \ + --seqType fq \ + --max_memory ${memory}G \ + --single ${fastq} \ + --CPU ${task.cpus} \ + --min_glue ${params.min_glue} \ + --min_contig_length ${params.min_contig_length} \ + --output trinity_output_${file_prefix} +""" +} + + +process super_transcript { + container = "${container_url}" + label "big_mem_mono_cpus" + tag "$file_id" + if (params.assembly_out != "") { + publishDir "results/${params.assembly_out}", mode: 'copy' + } + + input: + tuple val(file_id), path(fasta) + + output: + tuple val(file_id), path("trinity_genes.fasta"), path("trinity_genes.gtf"), emit: fasta + + script: + + switch(file_id) { + case {it instanceof List}: + file_prefix = file_id[0] + break; + case {it instanceof Map}: + file_prefix = file_id.values()[0] + break; + default: + file_prefix = file_id + break; + }; + def memory = "${task.memory}" - ~/\s*GB/ + +""" +Trinity_gene_splice_modeler.py \ + --trinity_fasta ${fasta} +""" +}