Skip to content
Merged
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
57 changes: 31 additions & 26 deletions image_development/Dockerfile_nextits
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# docker build --target test --tag nextits-test --file NextITS.dockerfile .

## Build stage 1 (Rust and Cargo)
FROM rust:1.89.0-slim AS rust
FROM rust:1.92.0-slim AS rust
RUN cargo install runiq sd

# Stage 2 (Nextflow - minimal stage)
Expand Down Expand Up @@ -58,14 +58,18 @@ RUN R -e 'BiocManager::install("Biostrings", ask = FALSE)' \
&& R -e 'BiocManager::install("phyloseq", ask = FALSE)' \
&& rm -rf /tmp/downloaded_packages

RUN install2.r --error --skipinstalled geodist phytools ggdendro gridExtra \
&& R -e 'ok <- tryCatch({ remotes::install_github("mikemc/speedyseq"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("speedyseq", quietly=TRUE)) quit(status=1)' \
&& R -e 'ok <- tryCatch({ remotes::install_github("vmikk/metagMisc"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("metagMisc", quietly=TRUE)) quit(status=1)' \
&& R -e 'ok <- tryCatch({ remotes::install_cran("qs2", type = "source", configure.args = "--with-simd=AVX2"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("qs2", quietly=TRUE)) quit(status=1)' \
&& rm -rf /tmp/downloaded_packages
RUN install2.r --error --skipinstalled \
geodist \
phytools \
ggdendro \
gridExtra \
&& R -e 'ok <- tryCatch({ remotes::install_github("mikemc/speedyseq"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("speedyseq", quietly=TRUE)) quit(status=1)' \
&& R -e 'ok <- tryCatch({ remotes::install_github("vmikk/metagMisc"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("metagMisc", quietly=TRUE)) quit(status=1)' \
&& R -e 'ok <- tryCatch({ remotes::install_cran("qs", type = "source", configure.args = "--with-simd=AVX2"); TRUE }, error=function(e){ message(e); FALSE }); \
if (!ok || !requireNamespace("qs", quietly=TRUE)) quit(status=1)' \
&& rm -rf /tmp/downloaded_packages

## Install conda
RUN mkdir -p /opt/software \
Expand Down Expand Up @@ -97,23 +101,23 @@ RUN cd /opt/software \
RUN /opt/software/conda/bin/mamba install -y \
"lima>=2.13.0" \
"pbtk>=3.5.0" \
"vsearch>=2.30.0" \
"swarm>=3.1.5" \
"seqkit>=2.10.1" \
"seqfu>=1.22.3" \
"vsearch>=2.30.3" \
"swarm>=3.1.6" \
"seqkit>=2.12.0" \
"seqfu>=1.23.0" \
"fastp>=1.0.1" \
"blast>=2.17.0" \
"bioawk" \
"miller>=6.13.0" \
"miller>=6.16.0" \
"xsv>=0.13.0" \
"bedtools>=2.31.1" \
"parallel>=20250622" \
"csvtk>=0.34.0" \
"cutadapt>=5.1" \
"parallel>=20251122" \
"csvtk>=0.36.0" \
"cutadapt>=5.2" \
"itsx>=1.1.3" \
"bbmap>=39.33" \
"ripgrep>=14.1.1" \
"fd-find>=10.2.0" \
"bbmap>=39.52" \
"ripgrep>=15.1.0" \
"fd-find>=10.3.0" \
"mmseqs2" \
"mamba" \
&& /opt/software/conda/bin/conda clean --all --yes
Expand All @@ -128,7 +132,7 @@ RUN cd /opt/software \
&& wget https://github.com/vmikk/seqhasher/releases/download/1.1.2/seqhasher \
&& chmod +x seqhasher \
&& mv seqhasher /opt/software/conda/bin/ \
&& wget https://github.com/vmikk/phredsort/releases/download/1.3.0/phredsort \
&& wget https://github.com/vmikk/phredsort/releases/download/1.4.0/phredsort \
&& chmod +x phredsort \
&& mv phredsort /opt/software/conda/bin/ \
&& wget https://github.com/vmikk/ucs/releases/download/0.8.0/ucs \
Expand All @@ -144,7 +148,7 @@ RUN git clone --depth 1 https://github.com/indraniel/fqgrep \
&& rm -r fqgrep

## rush
RUN wget https://github.com/shenwei356/rush/releases/download/v0.7.0/rush_linux_amd64.tar.gz \
RUN wget https://github.com/shenwei356/rush/releases/download/v0.8.0/rush_linux_amd64.tar.gz \
&& tar -xzf rush_linux_amd64.tar.gz \
&& mv rush /opt/software/conda/bin/ \
&& rm rush_linux_amd64.tar.gz
Expand Down Expand Up @@ -179,7 +183,7 @@ RUN cd /opt/software \

## Install DuckDB
RUN cd /opt/software \
&& curl -L https://github.com/duckdb/duckdb/releases/download/v1.3.2/duckdb_cli-linux-amd64.zip -o duckdb_cli-linux-amd64.zip \
&& curl -L https://github.com/duckdb/duckdb/releases/download/v1.4.3/duckdb_cli-linux-amd64.zip -o duckdb_cli-linux-amd64.zip \
&& unzip duckdb_cli-linux-amd64.zip -d /opt/software/conda/bin/ \
&& rm duckdb_cli-linux-amd64.zip

Expand Down Expand Up @@ -221,7 +225,7 @@ ENTRYPOINT ["/opt/software/entrypoint.sh"]
FROM main AS test

# Set environment variable for R version testing
ENV R_VERSION=4.5.1
ENV R_VERSION=4.5.2

RUN echo "=== Testing R installation and packages ===" \
&& R --quiet -e "stopifnot(getRversion() == '${R_VERSION}')" \
Expand All @@ -230,7 +234,7 @@ RUN echo "=== Testing R installation and packages ===" \
'required_packages <- c("optparse", "data.table", "arrow", "duckdb",' \
' "plyr", "dplyr", "ggplot2", "openxlsx", "yaml",' \
' "Biostrings", "DECIPHER", "dada2", "phyloseq",' \
' "metagMisc", "qs2")' \
' "metagMisc", "qs")' \
'' \
'for(pkg in required_packages) {' \
' cat("Testing package:", pkg, "... ")' \
Expand Down Expand Up @@ -268,4 +272,5 @@ RUN echo "=== Testing R installation and packages ===" \
echo "FAILED - $tool not found in PATH" && exit 1; \
fi; \
done \
&& echo "=== All tests passed! Container looks ready for use ==="
&& echo "=== All tests passed! Container looks ready for use ==="

4 changes: 3 additions & 1 deletion src/pipecraft-core/service_scripts/NextITS/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ For version numbering, we use the following convention: `MAJOR.MINOR.PATCH`.
Each element increases numerically (e.g., `1.9.0` -> `1.10.0` -> `1.11.0`).


## [1.1.0] - 2025-xx-xx
## [1.1.0] - 2026-01-22

- Fixed handling of unknown barcode combinations (in `dual asymmetric` mode); thanks to Alice Retter for reporting
- Refactored and optimized the tag-jump removal step
Expand All @@ -18,6 +18,8 @@ Each element increases numerically (e.g., `1.9.0` -> `1.10.0` -> `1.11.0`).
- `lima_remove_unknown` (default, `false`; if `true`, unknown barcode combinations are removed from demultiplexed data)
- `chunking_n` (number of chunks to split the dataset into prior to clustering)
- `chunking_id` (minimum sequence identity used for splitting the dataset into chunks)
- `chimera_methods` (specifies which chimera removal methods to use - "ref" for reference-based, "denovo" for de novo, or "ref,denovo" for both; could be also "none" or `null` to disable chimera removal)
- `tj` (specifies whether to run tag-jump removal - "true" or "false")
- Added DADA2 denoising (`--preclustering dada2`; also works with `--clustering none`)
- Implemented automated documentation for analysis procedures (generates `README_Step1_Methods.txt` and `README_Step2_Methods.txt` in the `pipeline_info` directory)
- Refactored parameter validation (using `nf-schema` plugin)
Expand Down
2 changes: 1 addition & 1 deletion src/pipecraft-core/service_scripts/NextITS/CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ authors:
- family-names: "Tedersoo"
given-names: "Leho"
orcid: "https://orcid.org/0000-0002-1635-1249"
version: 1.0.0
version: 1.1.0
doi: 10.5281/zenodo.15074881
date-released: 2025-03-24
url: "https://github.com/vmikk/NextITS"
Expand Down
Loading