From 3e1457a4766814b2e45636a387f91b445ce25731 Mon Sep 17 00:00:00 2001 From: alejandrogzi Date: Wed, 22 Apr 2026 11:33:47 +0200 Subject: [PATCH] feat: add genepred lint/prune --- modules/nextflow/genepred/lint/main.nf | 52 ++++++++++++++++++++++ modules/nextflow/genepred/prune/main.nf | 57 +++++++++++++++++++++++++ modules/wdl/genepred/lint/main.wdl | 45 +++++++++++++++++++ modules/wdl/genepred/prune/main.wdl | 51 ++++++++++++++++++++++ 4 files changed, 205 insertions(+) create mode 100644 modules/nextflow/genepred/lint/main.nf create mode 100644 modules/nextflow/genepred/prune/main.nf create mode 100644 modules/wdl/genepred/lint/main.wdl create mode 100644 modules/wdl/genepred/prune/main.wdl diff --git a/modules/nextflow/genepred/lint/main.nf b/modules/nextflow/genepred/lint/main.nf new file mode 100644 index 0000000..cdebfa7 --- /dev/null +++ b/modules/nextflow/genepred/lint/main.nf @@ -0,0 +1,52 @@ +/* +Copyright (c) 2026 The Hiller Lab at the Senckenberg Gessellschaft für Naturforschung +Distributed under the terms of the Apache License, Version 2.0. +*/ + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + GENEPRED_LINT — Lint BED/GTF/GFF files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process GENEPRED_LINT { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + '' : + 'ghcr.io/alejandrogzi/genepred:latest' }" + + input: + tuple val(meta), path(file) + + output: + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + genepred \\ + lint \\ + $args \\ + $file + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genepred: \$( genepred --version | sed 's/genepred //g' ) + END_VERSIONS + """ + + stub: + """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genepred: \$( genepred --version | sed 's/genepred //g' ) + END_VERSIONS + """ +} diff --git a/modules/nextflow/genepred/prune/main.nf b/modules/nextflow/genepred/prune/main.nf new file mode 100644 index 0000000..9579900 --- /dev/null +++ b/modules/nextflow/genepred/prune/main.nf @@ -0,0 +1,57 @@ +/* +Copyright (c) 2026 The Hiller Lab at the Senckenberg Gessellschaft für Naturforschung +Distributed under the terms of the Apache License, Version 2.0. +*/ + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + GENEPRED_PRUNE — Prune BED/GTF/GFF files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process GENEPRED_LINT { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + '' : + 'ghcr.io/alejandrogzi/genepred:latest' }" + + input: + tuple val(meta), path(file) + + output: + tuple val(meta), path("*.pruned.bed"), emit: bed + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + genepred \\ + lint \\ + $args \\ + --prune \\ + $file > ${prefix}.pruned.bed + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genepred: \$( genepred --version | sed 's/genepred //g' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.pruned.bed + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genepred: \$( genepred --version | sed 's/genepred //g' ) + END_VERSIONS + """ +} diff --git a/modules/wdl/genepred/lint/main.wdl b/modules/wdl/genepred/lint/main.wdl new file mode 100644 index 0000000..d0fb5c3 --- /dev/null +++ b/modules/wdl/genepred/lint/main.wdl @@ -0,0 +1,45 @@ +# Copyright (c) 2026 The Hiller Lab at the Senckenberg Gessellschaft für Naturforschung +# Distributed under the terms of the Apache License, Version 2.0. + +# GENEPRED_LINT — Lint BED/GTF/GFF files. + +version 1.3 + +task genepred_lint { + input { + File file + String args = "" + } + + command <<< + set -euo pipefail + + genepred \ + lint \ + ~{args} \ + ~{file} + >>> + + output { + } + + requirements { + container: "ghcr.io/alejandrogzi/genepred:latest" + } +} + +workflow run { + input { + File file + String args = "" + } + + call genepred_lint { + input: + file = file, + args = args + } + + output { + } +} \ No newline at end of file diff --git a/modules/wdl/genepred/prune/main.wdl b/modules/wdl/genepred/prune/main.wdl new file mode 100644 index 0000000..73ca335 --- /dev/null +++ b/modules/wdl/genepred/prune/main.wdl @@ -0,0 +1,51 @@ +# Copyright (c) 2026 The Hiller Lab at the Senckenberg Gessellschaft für Naturforschung +# Distributed under the terms of the Apache License, Version 2.0. + +# GENEPRED_PRUNE — Prune BED/GTF/GFF files. + +version 1.3 + +task genepred_prune { + input { + File file + String args = "" + String prefix = basename(file, ".bed") + } + + command <<< + set -euo pipefail + + genepred \ + lint \ + ~{args} \ + --prune \ + ~{file} > ~{prefix}.pruned.bed + >>> + + output { + File bed = prefix + ".pruned.bed" + } + + requirements { + container: "ghcr.io/alejandrogzi/genepred:latest" + } +} + +workflow run { + input { + File file + String args = "" + String prefix = basename(file, ".bed") + } + + call genepred_prune { + input: + file = file, + args = args, + prefix = prefix + } + + output { + File bed = genepred_prune.bed + } +} \ No newline at end of file