Skip to content

New module: SAVANA/RUN#11649

Closed
manascripts wants to merge 81 commits into
nf-core:masterfrom
manascripts:savana-run
Closed

New module: SAVANA/RUN#11649
manascripts wants to merge 81 commits into
nf-core:masterfrom
manascripts:savana-run

Conversation

@manascripts
Copy link
Copy Markdown
Member

PR checklist

  • If you've fixed a bug or added code that should be tested, add tests!
  • If you've added a new tool - have you followed the module conventions in the contribution docs
  • If necessary, include test data in your PR.
  • Remove all TODO statements.
  • Broadcast software version numbers to topic: versions - See version_topics
  • Follow the naming conventions.
  • Follow the parameters requirements.
  • Follow the input/output options guidelines.
  • Add a resource label
  • Use BioConda and BioContainers if possible to fulfil software requirements.
  • Ensure that the test works with either Docker / Singularity. Conda CI tests can be quite flaky:
    • For modules:
      • nf-core modules test <MODULE> --profile docker
      • nf-core modules test <MODULE> --profile singularity
      • nf-core modules test <MODULE> --profile conda

Comment thread modules/nf-core/savana/run/main.nf Outdated
Comment thread modules/nf-core/savana/run/main.nf Outdated
Comment thread modules/nf-core/savana/run/main.nf Outdated
Comment thread modules/nf-core/savana/run/main.nf Outdated
Comment thread modules/nf-core/savana/run/main.nf Outdated
Comment thread modules/nf-core/savana/run/main.nf Outdated
manascripts and others added 25 commits May 21, 2026 14:46
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
* Update scvi-tools version to 1.4.3

* update scvi-tools solo container

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* update scvi-tools solo hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* emit versions

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* emit versions

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* lint fix

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* use right hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* use right hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* use right hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* formatting

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* formatting

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* formatting

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

---------

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>
* update scar scvi-tools version

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* hash

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

* set torch cache

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>

---------

Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>
…ns (nf-core#11419)

feat(maltextract): migrate to topic channel versions and add stub
…11448)

feat(smoothxg): migrate to topic: versions, add stub block
- Replace versions.yml with eval() topic: versions emission
- Simplify version command to single sed expression
- Add stub block for GFA output
- Add stub test with sanitizeOutput, script tests assert GFA existence + versions only
- Remove stale non-determinism comment
- Regenerate meta.yml, remove legacy versions output
* feat(whamg): migrate to topic: versions, add stub block, sanitizeOutput assertions

* Standardize version emission and restore EDAM comments

* fix(whamg): rename emit to versions_whamg per nf-core convention

- main.nf: emit: versions -> emit: versions_whamg
- meta.yml: output key versions: -> versions_whamg:

Local lint: 56/0. Local nf-test: 2/2 passed.

* fix(whamg): use nft-vcf for VCF assertions; simplify version sed

Addresses reviewer feedback:
- Version extraction simplified from grep|sed to single sed
- VCF assertions now use nft-vcf plugin (path().vcf.summary)
- tbi excluded from snapshot (unstable across container runtimes)
- Snapshot deleted for regeneration

* fixing tbi process block
…rsions (nf-core#11410)

feat(prinseqplusplus): migrate to eval() topic channel versions, add stub

- Replace versions.yml / END_VERSIONS heredoc with eval() topic channel
  per @SPPearce review requesting eval string pattern
- Version extracted via: prinseq++ --version | cut -f 2 -d ' '
- Remove END_VERSIONS from both SE and PE script blocks
- Add stub block with gzipped empty FASTQ + touch log
- Remove // meta map comments from tests
- Add stub test with sanitizeOutput
- Remove legacy versions output block from meta.yml

Contributes to nf-core#4570
…dy present) (nf-core#11415)

* Migrate haplocheck to topic channel versions (topic: versions)

- Converted versions.yml output to topic channel (versions_haplocheck)
- Fixed version eval: pipe head -1 | awk '{print $2}' to handle multi-line output
- Removed END_VERSIONS heredoc from script and stub blocks
- Updated tests: sanitizeOutput on both tests
- Removed legacy versions output block from meta.yml

Contributes to nf-core#4570

* fix(haplocheck): update meta.yml for topic channel versions via lint --fix
…f-core#11408)

* Migrate shasta to topic channel versions and add stub block

- Converted versions.yml output to topic channel (versions_shasta)
- Removed END_VERSIONS heredoc from script block
- Added stub block with compressed outputs (echo | gzip) and mkdir for results dir
- Updated tests: deterministic content snapshots for main test, sanitizeOutput for stub
- Removed legacy versions output block from meta.yml
- Restored EDAM ontology comments

Contributes to nf-core#4570

* fix(shasta): replace meta.model with task.ext.args2 to satisfy main_nf_meta_key lint rule

* fix(shasta): add memory=8.GB to test config; update assertion to use versions_shasta; regenerate snap

* fix(shasta): remove redundant named-key versions snapshot assertions per migration guide

* fix(shasta): migrate meta.model to val input channel; simplify version sed

Addresses reviewer feedback:
- meta.model replaced with val(model) input channel per nf-core spec
  (non-file mandatory args SHOULD be value channels)
- Version extraction simplified from head|cut to single sed
- Removed args2 workaround; restored explicit --config flag
- Removed model from meta map in tests
…re#11403)

* Migrate ssuissero to topic channel versions and add stub block

- Converted versions.yml output to topic channel (versions_ssuissero)
  Uses hardcoded version (1.0.1) as tool does not provide CLI versioning
- Removed END_VERSIONS heredoc from script block
- Added stub block with touch for .tsv output
- Updated existing test to use sanitizeOutput(process.out)
- Added stub test case
- Restored EDAM ontology comment (# TSV)

Contributes to nf-core#4570

* fix(ssuissero): use val() for hardcoded version per reviewer

Applies reviewer code suggestions:
- eval('echo 1.0.1') → val('1.0.1')
- Updated meta.yml version entries from eval to val type
…re#11436)

* Migrate kofamscan to topic versions and implement stub testing

* fix(kofamscan): remove echo wrapper and restore EDAM comments

* fix(kofamscan): hoist setup block to top-level scope per reviewer feedback
* feat(pairix): migrate to topic versions and stub

* fix(pairix): align meta.yml with main.nf and simplify snapshot assertions

* fix(pairix): fix broken version extraction and remove echo wrapper
* add quilt2 sbwf

* publishDir not necessary for the unittest

* add a line to explain that the regionout key will be used to store temporarily the region and therefore shouldn't be used in the meta map

* QUILT2 uses topics for versions

* Add a test with the optional bamnames input file to ensure it does work properly

* Update subworkflows/nf-core/bam_impute_quilt2/tests/main.nf.test

Co-authored-by: Louis Le Nézet <58640615+LouisLeNezet@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Louis Le Nézet <58640615+LouisLeNezet@users.noreply.github.com>

* fix linting

---------

Co-authored-by: Louis Le Nézet <58640615+LouisLeNezet@users.noreply.github.com>
* New modlue: finaletoolkit/delfi

This uses FinaleToolkit to calculate the DELFI score (Cristiano et al.,
2019).

cf. nf-core#11365

* New module: finaletoolkit/delfi

* Remove unwanted leftovers

* Address review feedback

* Add missing file

* Address review questions

* Fix syntax error

* Update snapshot

* Apply suggestions from code review
* Update to topics

* Update tests

* Fix meta

* Apply suggestions from code review

Co-authored-by: Evangelos Karatzas <32259775+vagkaratzas@users.noreply.github.com>

* Apply suggestion from @LouisLeNezet

---------

Co-authored-by: Evangelos Karatzas <32259775+vagkaratzas@users.noreply.github.com>
* fix: sentieon gvcftyper accepts intervals

* style: line breaks in sentieon gvcftyper driver call

  Per @SPPearce review on nf-core#11582 — match the multi-line format used
  in sentieon/haplotyper.

* lint: rename meta1..meta4 to meta2..meta5 per nf-core convention

* test: drop tautological regression test

  The test asserted variantsMD5 differs from the buggy md5, but the
  genome.bed used here covers all variants in test.genome.vcf.gz, so
  the BED is a no-op and the md5 is the same with or without --interval.
  Surfacing the bug would require a gVCF with variants outside the
  BED's coverage, which the test-datasets don't provide.
feat(islandpath): migrate to topic: versions, add stub block
- Replace versions.yml with val() topic: versions emission
- Place // WARN: comment above conda directive
- Add stub block for gff and log outputs
- Add stub test with sanitizeOutput assertions
- Migrate script test to findAll versions pattern
- Remove // meta map comments from test inputs
- Regenerate meta.yml, remove legacy versions output
* Update to topics

* Put back alignment

* Update version

* Update test
emmcauley and others added 22 commits May 21, 2026 15:05
* feat: civicpy/annotate module

* fix: reviewer comments

* feat: allow users to pass a pre-existing cache file via path cache

* fix: docker container, cache

* fix: add htslib version to outputs
* feat(gedi): add gedi/indexgenome and gedi/price modules

Adds two modules wrapping the GEDI / PRICE toolkit (`bioconda::gedi=1.0.6a`) for Ribo-seq translated-ORF discovery. PRICE (Erhard et al. 2018, doi:10.1038/nmeth.4631) calls translated ORFs from ribosome profiling data with near-cognate start codon detection.

`gedi/indexgenome` wraps `gedi -e IndexGenome`, producing the `.oml` genome index directory consumed by PRICE.

`gedi/price` wraps `bamlist2cit` + `gedi -e Price`, taking a cohort of Ribo-seq BAMs plus the genome index and emitting ORF predictions (`*.orfs.tsv` + `*.cit` + sidecars). One-shot across the cohort - PRICE is not per-sample.

Both modules use Wave-built community containers from `bioconda::gedi=1.0.6a`. The bioconda recipe was merged 2026-05-16; using Wave directly for now.

Source: nf-core/riboseq#174.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* refactor(gedi/indexgenome): use ${prefix} for the index output directory

Previously hard-coded the output directory as `price_index`. Switching to
`${prefix}` (default `${meta.id}`, overridable via `task.ext.prefix`) lets
callers control the directory name and matches the nf-core convention for
publishable directory outputs.

The default ${meta.id} keeps the directory keyed to the reference id, so
when `gedi/price` opens `${index}/${meta2.id}.oml`, the lookup still
resolves provided meta ids match (already the case in the test chain).

Snapshot regenerated: the index directory name in the output snapshot
changes from `price_index` to the test's `homo_sapiens_chr20` (its meta.id).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(gedi/price): add real test using minimised chr19+chr22 fixtures

Replaces the stub-only PRICE test with an end-to-end test that runs
PRICE on a minimal cohort of four Ribo-seq samples (chr19+chr22,
protein-coding-only reference). The cohort produces 380 ORF calls;
snapshot captures the orfs.tsv line count for stability validation.

Fixtures published in nf-core/test-datasets PR nf-core#2061.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(gedi/indexgenome): update meta.yml output name after ${prefix} refactor

The earlier `${prefix}` refactor (commit 0ca4c45) changed the index
output declaration from `path("price_index")` to `path("${prefix}")`,
but the meta.yml output entry still hard-coded `price_index` — causing
CI lint to flag `correct_meta_outputs: Module meta.yml does not match
main.nf`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* style(gedi/indexgenome): collapse leftover alignment padding on index emit

After the `${prefix}` refactor (commit 0ca4c45) the index output line
was the only `tuple val(meta), path(...)` emit in the module, so the
52-space alignment padding it kept from when the path was `price_index`
no longer aligns with anything.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(gedi): correct licence (GPL-3.0) and Gedi description in meta.yml

Two cross-cutting fixes from review of nf-core#11693:

- Licence was Apache-2.0 in both meta.yml files; the upstream repo
  erhard-lab/gedi is GPL-3.0. Corrected.
- "GEDI (Gene Expression Data Integration)" was unverified — the
  upstream README/wiki/paper don't expand the acronym that way.
  Replaced with the upstream one-liner phrasing. PRICE meta.yml also
  adds the verified PRICE expansion (Probabilistic Inference of Codon
  Activities by an EM algorithm) from the GEDI wiki.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(gedi/price): point fixtures at nf-core/test-datasets@modules

nf-core/test-datasets#2061 merged; fixtures now live on the modules branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
update methurator with .fai index file
* New module mifaser/environment

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>

* New module mifaser/main

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>

* New module mifaser/meta

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>

* New module mifaser/tests

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>

* mifaser/mifaser: add test snapshot

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>

* mifaser: switch to biocontainers 1.60, fix db path

Use quay.io/biocontainers/mifaser:1.60--pyh106432d_0 instead of
ghcr.io/vdblab/mifaser:1.64d. Prepend \$PWD to staged db path so
mifaser 1.60 resolves --databasefolder as absolute path rather than
relative to its Python package directory.

Co-authored-by: Nick Waters <nickp60@gmail.com>

* mifaser: correct path of test file

* mifaser: fix Java syntax error

* mifaser: update snapshot

* mifaser: bump to 1.64, use each path(db)

Update container and conda env to mifaser 1.64. Change db input from
`path db` to `each path(db)` so the database is repeated for every
incoming sample. Note: Singularity image at depot.galaxyproject.org
for 1.64 may lag behind bioconda — Docker (quay.io) confirmed working.

Co-authored-by: Carolin Schwitalla <carolin.schwitalla@qbic.uni-tuebingen.de>

* mifaser: update snapshots

* mifaser: undo 866234d

Co-authored-by: Carolin Schwitalla <carolin.schwitalla@uni-tuebingen.de>

* mifaser: formatting

---------

Co-authored-by: Nick Waters <nickp60@gmail.com>
Co-authored-by: Mirae Baichoo <miraep8@gmail.com>
Co-authored-by: Carolin Schwitalla <carolin.schwitalla@qbic.uni-tuebingen.de>
Co-authored-by: Carolin Schwitalla <carolin.schwitalla@uni-tuebingen.de>
…pgrade, bump version (nf-core#11242)

* Add rundbcan synteny_pdf as optional, topic upgrade, bump version to 5.2.8

* Resync version updated numbers

* Bump to latest version

* Update rundbcan/easysubstrate snapshots for dbcan 5.2.9

* Move string check assertions

---------

Co-authored-by: Xinpeng021001 <xzhang55@huskers.unl.edu>
…#11716)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Add new component: cnvkit/coverage

* fix: update cnvkit version to 0.9.13 and add quay.io prefix

* [automated] Fix code linting

* Apply suggestion from @nvnieuwk

Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com>

* fixed comments from reviewer - remove blank lines and move comments to meta.yml

---------

Co-authored-by: aaron-de-cock <aaron.de.cock@student.howest.be>
Co-authored-by: nf-core-bot <core@nf-co.re>
Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com>
* Add regenie/step1 module

* Refine REGENIE step1 inputs and remove PR test config

* Expand REGENIE step1 tests for explicit phenotype inputs

* Use genotype metadata for REGENIE step1 log output

* Use genotype metadata for REGENIE step1 tag and outputs

* Fix REGENIE step1 stub gzip syntax

* Split REGENIE step1 prediction outputs

* Move REGENIE step1 phenotype selectors into tuples

* Emit REGENIE step1 phenotype selectors

* Update REGENIE step1 maintainer metadata

* Use HTTPS Singularity container for REGENIE step1

* Allow ext.prefix in regenie step1

* Remove is_binary from regenie step1

* Remove pheno_col from regenie step1

* Update regenie step1 snapshots after removing pheno_col
…core#11722)

Remove estimator-multiple-cpu from cellbender/removebackground
…hannel versions (nf-core#11696)

* Update simpleaf to 0.24.1 with Seqera Wave container and topic-channel versions

- Bump simpleaf 0.19.5 -> 0.24.1 (Wave container community.wave.seqera.io/library/simpleaf:0.24.1--41e05fd46d838d92).
- Align environment.yml pins with the container: alevin-fry 0.14.0, piscem 0.20.0, simpleaf 0.24.1. Removed salmon (no longer a simpleaf dependency in 0.24.x).
- Migrate versions output from versions.yml emit to topic-channel emits per the new nf-core convention (matches t1k/build pattern). Each tool emits (process, tool, version) into the shared `versions` topic.
- Update piscem index file assertions in tests: piscem 0.20 replaced .sshash/.json with .ssi/.ssi.mphf/_ver.json. Stub blocks updated to match.
- Inline `ALEVIN_FRY_HOME=.` in the simpleaf eval expression because the eval runs in a separate shell context from the script block.
- meta.yml regenerated by `nf-core modules lint --fix`, removed leftover versions.yml stanza.

All nf-tests pass (5/5 simpleaf/index, 2/2 simpleaf/quant). nf-core modules lint shows 0 failures.

* Bump simpleaf to 0.25.0 in index + quant modules

simpleaf 0.25.0 (Wave: community.wave.seqera.io/library/simpleaf:0.25.0--b9f96d8b71a01864)
bundles alevin-fry 0.15.0 with two upstream fixes that surfaced during the
multiplex-quant work:

- alevin-fry: per-record sample index now maps correctly to manifest ordinal
  in multi-barcode collation (fixes COMBINE-lab/simpleaf#195 — sample_name
  column omission and resulting polars i64 inference crash).
- simpleaf: multiplex-quant auto-downloads chemistries.json on first use
  (fixes COMBINE-lab/simpleaf#196 — no more "Run `simpleaf chemistry refresh`
  first" error).

Neither fix changes behavior for the index/quant code paths these modules
exercise, but bumping keeps all simpleaf modules on a single, current
container generation.
* Simplify dream contrast handling

* fix pre-commit

* Use lme4 as source for nobars

* Apply suggestion from @delfiterradas

Co-authored-by: Delfina Terradas <155591053+delfiterradas@users.noreply.github.com>

* Update modules/nf-core/variancepartition/dream/templates/dream.R

Co-authored-by: Jonathan Manning <pininforthefjords@gmail.com>

* Update modules/nf-core/variancepartition/dream/templates/dream.R

* Update modules/nf-core/variancepartition/dream/templates/dream.R

* Update test snapshot

* Update test snapshot

* Migrate to topic channel

* Fix linting error

* Revert changes in snapshot

Fix formatting issue by adding a newline at the end of the file.

* Revert changes in snapshot

---------

Co-authored-by: Delfina Terradas <155591053+delfiterradas@users.noreply.github.com>
Co-authored-by: Jonathan Manning <pininforthefjords@gmail.com>
)

* Update container version for control-freec

* Update container version for control-freec

* Update control-freec container version

* Update container version for control-freec

* Update container image version for control-freec

* Update container version for control-freec
* Velocyto to topics

* Fix tests and linting
* Migrate snpsift/split to topic channel versions

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Drive snpsift/split join mode via ext.args instead of non-standard meta.split key

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Use args.tokenize() for exact -j flag matching in snpsift/split

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Apply review suggestion: simplify snpsift version eval to a single sed

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* bots initial attempt

* removed unnecessary temp output dir, and renamed output files, added comment for bug workaround

* flagged the bug in the comment

* execfile on PATH for shim, instead of local user/ path

* stricter version eval to pass GitHub runners warnings

* updated and tested for multiple primers

* Update modules/nf-core/primerprospector/analyzeprimers/main.nf

Co-authored-by: Tim Rozday <timrozday@ebi.ac.uk>

* Update modules/nf-core/primerprospector/analyzeprimers/main.nf

Co-authored-by: Tim Rozday <timrozday@ebi.ac.uk>

* prefix only used in stub

---------

Co-authored-by: Tim Rozday <timrozday@ebi.ac.uk>
* Add octopusv/merge module

* test-data path  fix

* fix versioning

* add test data and update default merging logic

* update merge flag

* update tests

* nextflow lint fixes + test update

* Adress review feedback

* minor change in meta.yml

* Update modules/nf-core/octopusv/merge/meta.yml

Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>

* Update modules/nf-core/octopusv/merge/main.nf

Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>

* Update modules/nf-core/octopusv/merge/main.nf

Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>

* Update modules/nf-core/octopusv/merge/main.nf

Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>

* minor changes to test

* remove edam for bgzip, add note to strategy_flag (meta.yml)

* bump version + add upset plot output

---------

Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com>
@manascripts manascripts requested review from a team, maxulysse and pinin4fjords as code owners May 21, 2026 13:05
@manascripts manascripts mentioned this pull request May 21, 2026
13 tasks
@manascripts manascripts deleted the savana-run branch May 21, 2026 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.