Skip to content
Open
Show file tree
Hide file tree
Changes from 9 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
45 changes: 45 additions & 0 deletions modules/nf-core/vuegen/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Set the base image to the official Python 3.12 slim debian bookworm image
FROM python:3.12-slim-bookworm

# Disable manual feedback for apt-get, update package list, install security updates,
# and install packages (procps, and system dependencies for tinytex and kaleido).
# Then clean up the package list and remove the cache.
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get -y upgrade && \
apt-get install -y --no-install-recommends \
procps \
wget \
perl \
libglib2.0-0 \
libgdk-pixbuf2.0-0 \
libfontconfig1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Install vuegen Python package
RUN pip install --no-cache-dir -U vuegen

# Create and switch to non-root user for security reasons
RUN useradd --create-home appuser
USER appuser

# Set the working directory
WORKDIR /home/appuser

# Install TinyTeX for pdf reports
RUN perl -mFile::Find /dev/null && \
wget -qO- "https://yihui.org/tinytex/install-bin-unix.sh" | sh && \
~/.TinyTeX/bin/*/tlmgr install \
koma-script \
caption

# Set permissions for the appuser home directory
RUN chmod -R 777 /home/appuser

# Set environment variables for Quarto, dataframe_image, and TinyTeX. Also, get tracebacks from C crashes
ENV XDG_RUNTIME_DIR=/tmp \
XDG_CACHE_HOME=/tmp/quarto_cache_home \
XDG_DATA_HOME=/tmp/quarto_data_home \
PATH="${PATH}:/home/appuser/bin" \
PYTHONFAULTHANDLER=1
27 changes: 27 additions & 0 deletions modules/nf-core/vuegen/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# VueGen module

## Images using wave

Cached images for 0.5.1 version available on wave, see
[docs](https://docs.seqera.io/wave#seqera-containers---the-community-container-registry)

platform | version | image
-------- | ------- | -----
docker | linux/amd64 | community.wave.seqera.io/library/vuegen_python:236414fc5cfce774
singularity | linux/amd64 | oras://community.wave.seqera.io/library/vuegen_python:1adb57ecbfa02088
docker | linux/arm64 | community.wave.seqera.io/library/vuegen_python:a1dc6490f5045706
singularity | linux/arm64 | oras://community.wave.seqera.io/library/vuegen_python:64670fcadedf151f

## Custom docker file

- check Docker best practices with hadolint, see
[docker-docs](https://docs.docker.com/build/building/best-practices/)


```bash
$ hadolint Dockerfile
Dockerfile:7 DL3008 warning: Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
Dockerfile:24 DL3059 info: Multiple consecutive `RUN` instructions. Consider consolidation.
Dockerfile:31 SC2211 warning: This is a glob used as a command name. Was it supposed to be in ${..}, array, or is it missing quoting?
Dockerfile:31 DL4006 warning: Set the SHELL option -o pipefail before RUN with a pipe in it. If you are using /bin/sh in an alpine image or if your shell is symlinked to busybox then consider explicitly setting your SHELL to /bin/ash, or disable this check
```
2 changes: 1 addition & 1 deletion modules/nf-core/vuegen/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ channels:
- bioconda
- conda-forge
dependencies:
- bioconda::vuegen=0.3.2
- bioconda::vuegen=0.5.1
- python=3.11
8 changes: 5 additions & 3 deletions modules/nf-core/vuegen/main.nf
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
process VUEGEN {
label 'process_single'
conda "${moduleDir}/environment.yml"
container "dtu_biosustain_dsp/vuegen:v0.3.2-nextflow"
container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container
? 'oras://community.wave.seqera.io/library/vuegen_python:1adb57ecbfa02088'
: 'community.wave.seqera.io/library/vuegen_python:236414fc5cfce774'}"

input:
val input_type
Expand Down Expand Up @@ -36,7 +38,7 @@ process VUEGEN {

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vuegen: \$( vuegen --version | sed -e "s/vuegen //g" )
vuegen: \$( python -c "import vuegen; print(vuegen.__version__)" )
END_VERSIONS
"""

Expand All @@ -48,7 +50,7 @@ process VUEGEN {

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vuegen: \$( vuegen --version | sed -e "s/vuegen //g" )
vuegen: \$( python -c "import vuegen; print(vuegen.__version__)" )
END_VERSIONS
"""
}
10 changes: 5 additions & 5 deletions modules/nf-core/vuegen/tests/main.nf.test
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ nextflow_process {
"Static_Plots.py": path(process.out.output_folder[0] + "/sections/Plots/Static_Plots.py")
.readLines()[0..3].sort().join('\n').md5()
],
versions: process.out.versions
versions: path(process.out.versions[0]).yaml,
]).match()
}
)
Expand Down Expand Up @@ -80,7 +80,7 @@ nextflow_process {
"quarto_report.qmd": path(process.out.output_folder[0] + "/quarto_report.qmd")
.readLines()[0..3].join('\n').md5()
],
versions: process.out.versions
versions: path(process.out.versions[0]).yaml
]).match()
}
)
Expand Down Expand Up @@ -111,7 +111,7 @@ nextflow_process {
"quarto_report.qmd": path(process.out.output_folder[0] + "/quarto_report.qmd")
.readLines()[0..3].sort().join('\n').md5()
],
versions: process.out.versions
versions: path(process.out.versions[0]).yaml,
]).match()
}
)
Expand All @@ -138,10 +138,10 @@ nextflow_process {
assert snapshot(
process.out.output_folder.collect { file(it).getName() } +
process.out.output_files.collect { file(it).getName() },
versions: process.out.versions
versions: path(process.out.versions[0]).yaml,
).match()
}
)
}
}
}
}
58 changes: 33 additions & 25 deletions modules/nf-core/vuegen/tests/main.nf.test.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@
"vuegen - directory (HTML report) -stub": {
"content": [
{
"versions": [
"versions.yml:md5,c3e7ebc433dcacf3d15e1113fd44f5ec"
]
"versions": {
"VUEGEN": {
"vuegen": "0.5.1"
}
}
},
[
"report"
]
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.5"
"nextflow": "24.10.6"
},
"timestamp": "2025-04-22T09:34:45.900956"
"timestamp": "2025-10-20T13:25:42.669804"
},
"vuegen - directory (HTML report)": {
"content": [
Expand All @@ -24,16 +26,18 @@
"quarto_report.html": "0129d189059f27b3d2ff6f328cd18ef9",
"quarto_report.qmd": "e60a379de892055748e4597f9d8c656c"
},
"versions": [
"versions.yml:md5,c3e7ebc433dcacf3d15e1113fd44f5ec"
]
"versions": {
"VUEGEN": {
"vuegen": "0.5.1"
}
}
}
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.5"
"nextflow": "24.10.6"
},
"timestamp": "2025-04-22T09:04:23.56469"
"timestamp": "2025-10-20T13:24:59.558083"
},
"vuegen - directory (PDF report)": {
"content": [
Expand All @@ -43,37 +47,41 @@
"quarto_report.pdf": true,
"quarto_report.qmd": "c447088ca2a435acf926ec5e95c51265"
},
"versions": [
"versions.yml:md5,c3e7ebc433dcacf3d15e1113fd44f5ec"
]
"versions": {
"VUEGEN": {
"vuegen": "0.5.1"
}
}
}
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.5"
"nextflow": "24.10.6"
},
"timestamp": "2025-04-22T09:05:54.139709"
"timestamp": "2025-10-20T13:25:37.140787"
},
"vuegen - directory (Streamlit report)": {
"content": [
{
"output_folder": true,
"output_files": {
"Homepage.py": "Homepage.py:md5,483a41696c225663772d68ff2d664493",
"report_manager.py": "report_manager.py:md5,ed15eefa722b7a2f08cca016c0c8e28d",
"All_Formats.py": "e2a56e761eb537da8f9809cbc0b63a9d",
"Interactive_Plots.py": "3198216240ef9b86d5b1ed722bd9b31c",
"Static_Plots.py": "931fd04e2e49cb14d169747b6d5bbd1e"
"Homepage.py": "Homepage.py:md5,a46395bbdfb127463d51d8f601f2ad83",
"report_manager.py": "report_manager.py:md5,a683071ba8bc6e371c8617ef9c3fb84e",
"All_Formats.py": "1f61acc3ca34f6ff941c109d93570815",
"Interactive_Plots.py": "4857dc511178812e93c2037c8bbe04f4",
"Static_Plots.py": "ae9c2e46ae9a9e0e5e98fcce87cd7f80"
},
"versions": [
"versions.yml:md5,c3e7ebc433dcacf3d15e1113fd44f5ec"
]
"versions": {
"VUEGEN": {
"vuegen": "0.5.1"
}
}
}
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.5"
"nextflow": "24.10.6"
},
"timestamp": "2025-04-22T09:03:48.375488"
"timestamp": "2025-10-20T13:19:47.56244"
}
}
Loading