Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions modules/nf-core/dotseq/dotseq/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- bioconda::bioconductor-dotseq=1.0.0
- conda-forge::r-dplyr=1.2.1
- conda-forge::r-eulerr=7.1.0
- conda-forge::r-ggplot2=4.0.3
- conda-forge::r-ggrepel=0.9.8
- conda-forge::r-ggsignif=0.6.4
- conda-forge::r-optparse=1.8.2
- conda-forge::r-purrr=1.2.2
- conda-forge::r-readr=2.2.0
- conda-forge::r-tibble=3.3.1
- conda-forge::r-tidyr=1.3.2
57 changes: 57 additions & 0 deletions modules/nf-core/dotseq/dotseq/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
process DOTSEQ_DOTSEQ {
tag "$meta.id"
label 'process_medium'

conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ?
'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/12/12667d472e9ae0f1602041dc018ba6bde294e6190e67999d71b65e7a2df7ea1f/data' :
'community.wave.seqera.io/library/bioconductor-dotseq_r-dplyr_r-eulerr_r-ggplot2_pruned:6c8a9ebdec36c958' }"

input:
tuple val(meta), val(contrast_variable), val(reference), val(target)
tuple val(meta2), path(samplesheet), path(counts), path(annotation)

output:
tuple val(meta), path("*.translation.dotseq.results.tsv") , emit: translation
tuple val(meta), path("*.dou.dotseq.results.tsv") , emit: dou
tuple val(meta), path("*.dou_strategy.dotseq.results.tsv") , emit: dou_strategy , optional: true
tuple val(meta), path("*.dte_strategy.dotseq.results.tsv") , emit: dte_strategy , optional: true
tuple val(meta), path("*.volcano.png") , emit: volcano_plot , optional: true
tuple val(meta), path("*.composite.png") , emit: composite_plot, optional: true
tuple val(meta), path("*.venn.png") , emit: venn_plot , optional: true
tuple val(meta), path("*.heatmap.png") , emit: heatmap_plot , optional: true
tuple val(meta), path("*.interaction_p_distribution.png") , emit: interaction_p_distribution_plot, optional: true
tuple val(meta), path("*.DOTSeqDataSets.rds") , emit: rdata
tuple val(meta), path("*.R_sessionInfo.log") , emit: session_info
path "versions.yml" , emit: versions, topic: versions

when:
task.ext.when == null || task.ext.when

script:
template 'dotseq.R'

stub:
def prefix = task.ext.prefix ?: "${meta.id}"
"""
touch ${prefix}.translation.dotseq.results.tsv
touch ${prefix}.dou.dotseq.results.tsv
touch ${prefix}.dou_strategy.dotseq.results.tsv
touch ${prefix}.dte_strategy.dotseq.results.tsv
touch ${prefix}.volcano.png
touch ${prefix}.composite.png
touch ${prefix}.venn.png
touch ${prefix}.heatmap.png
touch ${prefix}.interaction_p_distribution.png
touch ${prefix}.DOTSeqDataSets.rds
touch ${prefix}.R_sessionInfo.log

cat <<-END_VERSIONS > versions.yml
"${task.process}":
bioconductor-dotseq: \$(Rscript -e "cat(as.character(packageVersion('DOTSeq')))")
r-optparse: \$(Rscript -e "cat(as.character(packageVersion('optparse')))")
r-readr: \$(Rscript -e "cat(as.character(packageVersion('readr')))")
r-dplyr: \$(Rscript -e "cat(as.character(packageVersion('dplyr')))")
END_VERSIONS
"""
}
207 changes: 207 additions & 0 deletions modules/nf-core/dotseq/dotseq/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json
name: "dotseq_dotseq"
description: |
Detect differential ORF usage (DOU) and ORF-level differential
translation efficiency (DTE) from Ribo-seq with matched RNA-seq using
DOTSeq. Wraps DOTSeqDataSetsFromSummarizeOverlaps() + DOTSeq() +
getContrasts() and emits the package's native contrast tables plus
plotDOT() visualisations.
keywords:
- riboseq
- rnaseq
- translation
- differential
- orf
tools:
- "dotseq":
description: "Differential ORF Translation analysis for Ribo-seq with matched RNA-seq"
homepage: "https://bioconductor.org/packages/release/bioc/html/DOTSeq.html"
documentation: "https://bioconductor.org/packages/release/bioc/vignettes/DOTSeq/inst/doc/DOTSeq.html"
tool_dev_url: "https://github.com/compgenom/DOTSeq"
licence:
- "MIT"
identifier: ""

input:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- contrast_variable:
type: string
description: Sample-sheet column that holds the experimental condition (mapped to DOTSeq's `condition` internally).
- reference:
type: string
description: Value of the contrast_variable to use as reference (baseline).
- target:
type: string
description: Value of the contrast_variable to use as target (non-reference).
- - meta2:
type: map
description: Groovy map containing study-wide metadata
- samplesheet:
type: file
description: |
CSV or TSV sample sheet with `run`, `strategy`, `replicate`, and
`condition` columns (defaults; can be overridden via
task.ext.args). Both Ribo-seq and RNA-seq samples are required:
DOTSeq's design is `~ condition * strategy` and the interaction
term is unestimable without both strategies.
ontologies:
- edam: "http://edamontology.org/format_3752"
- edam: "http://edamontology.org/format_3475"
- counts:
type: file
description: |
Per-ORF count matrix. First column is the ORF identifier (default
`orf_id`, override via `--orf_id_col`); remaining columns are
sample IDs that must match the `run` values in the sample sheet.
Both Ribo-seq and RNA-seq sample columns belong in this single
matrix; the sample sheet's `strategy` column distinguishes them.
ontologies:
- edam: "http://edamontology.org/format_3475"
- annotation:
type: file
description: |
Per-ORF annotation table (one row per ORF). Required columns:
`orf_id` (matches the count matrix) and `gene_id` (parent gene;
DOTSeq's DOU model groups child ORFs by gene). Optional columns:
`orf_type` (mORF / uORF / dORF; used by plotDOT()'s heatmap and
defaults to mORF when absent) and `chrom`, `start`, `end`,
`strand` (used only for downstream inspection - dummy ranges
are generated when absent because DOTSeq's fit does not depend
on genomic coordinates). Column names can be overridden via
task.ext.args (`--gene_id_col`, `--orf_type_col`, etc.).
ontologies:
- edam: "http://edamontology.org/format_3475"

output:
translation:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.translation.dotseq.results.tsv":
type: file
description: |
Per-ORF differential translation efficiency: DOTSeq's DTE
interaction-term results (DESeq2 + ashr shrinkage).
pattern: ".translation.dotseq.results.tsv"
ontologies:
- edam: "http://edamontology.org/format_3475"
dou:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.dou.dotseq.results.tsv":
type: file
description: |
DOTSeq Differential ORF Usage results (beta-binomial GLM
modelling Ribo / RNA proportion changes within each gene,
shrunk with ashr). DOTSeq-unique.
pattern: ".dou.dotseq.results.tsv"
ontologies:
- edam: "http://edamontology.org/format_3475"
dou_strategy:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.dou_strategy.dotseq.results.tsv":
type: file
description: DOU strategy contrasts (Ribo vs RNA effect per condition), when present.
pattern: ".dou_strategy.dotseq.results.tsv"
ontologies:
- edam: "http://edamontology.org/format_3475"
dte_strategy:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.dte_strategy.dotseq.results.tsv":
type: file
description: DTE strategy contrasts (Ribo vs RNA effect per condition), when present.
pattern: ".dte_strategy.dotseq.results.tsv"
ontologies:
- edam: "http://edamontology.org/format_3475"
volcano_plot:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.volcano.png":
type: file
description: DOTSeq plotDOT() volcano (DOU + DTE significance).
pattern: ".volcano.png"
ontologies:
- edam: "http://edamontology.org/format_3603"
composite_plot:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.composite.png":
type: file
description: DOTSeq plotDOT() composite scatter (DOU vs DTE effect sizes).
pattern: ".composite.png"
ontologies:
- edam: "http://edamontology.org/format_3603"
venn_plot:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.venn.png":
type: file
description: DOTSeq plotDOT() Venn diagram of DOU vs DTE significant ORFs.
pattern: ".venn.png"
ontologies:
- edam: "http://edamontology.org/format_3603"
heatmap_plot:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.heatmap.png":
type: file
description: DOTSeq plotDOT() heatmap of DOU across top genes.
pattern: ".heatmap.png"
ontologies:
- edam: "http://edamontology.org/format_3603"
interaction_p_distribution_plot:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.interaction_p_distribution.png":
type: file
description: Histogram of DOTSeq's DTE adjusted p-values.
pattern: ".interaction_p_distribution.png"
ontologies:
- edam: "http://edamontology.org/format_3603"
rdata:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.DOTSeqDataSets.rds":
type: file
description: Serialised DOTSeqDataSets object containing DOU + DTE fits
pattern: ".DOTSeqDataSets.rds"
ontologies: []
session_info:
- - meta:
type: map
description: Groovy Map containing contrast information. e.g. [ id:'treatment_vs_control' ]
- "*.R_sessionInfo.log":
type: file
description: dump of R sessionInfo()
pattern: "*.log"
ontologies:
- edam: "http://edamontology.org/data_1678"
versions:
- versions.yml:
type: file
description: File containing software versions
pattern: "versions.yml"
ontologies:
- edam: "http://edamontology.org/format_3750"
topics:
versions:
- versions.yml:
type: string
description: The name of the process
authors:
- "@pinin4fjords"
maintainers:
- "@pinin4fjords"
Loading
Loading