Skip to content

feat(simpleaf): bump to 0.25.0 with Seqera Wave container and topic-channel versions#11696

Merged
an-altosian merged 3 commits into
nf-core:masterfrom
an-altosian:feat/simpleaf-wave-topics
May 20, 2026
Merged

feat(simpleaf): bump to 0.25.0 with Seqera Wave container and topic-channel versions#11696
an-altosian merged 3 commits into
nf-core:masterfrom
an-altosian:feat/simpleaf-wave-topics

Conversation

@an-altosian
Copy link
Copy Markdown
Contributor

Summary

  • Updates simpleaf/index and simpleaf/quant modules to simpleaf 0.24.1 using a Seqera Wave / Community container.
  • Migrates the versions output from the legacy versions.yml file to the new topic-channel convention (matches t1k/build).
  • Realigns environment.yml pins with what the container actually ships, including removing the no-longer-required salmon dependency.

Container

Type URI
Docker community.wave.seqera.io/library/simpleaf:0.24.1--41e05fd46d838d92
Singularity / Apptainer https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/83/83ab36a4aba7f26860f96dd73bb428a4a4eb05450c4cfc9488cf77adefad1adb/data

Key changes

Versions / dependencies

  • simpleaf 0.19.50.24.1
  • alevin-fry 0.11.20.14.0 (matches container)
  • piscem 0.12.20.20.0 (matches container)
  • salmon removed — simpleaf 0.24.x's piscem-only pipeline does not depend on salmon, and the Wave container does not ship it. The previous emit silently produced an empty version string because $(salmon --version) errored silently inside the cat <<-END_VERSIONS heredoc.

Topic-channel versions

Both main.nf files now emit each tool's version as a separate topic-channel tuple instead of writing versions.yml:

```groovy
tuple val("${task.process}"), val('alevin-fry'), eval("alevin-fry --version | sed 's/alevin-fry //'"), topic: versions, emit: versions_alevin_fry
tuple val("${task.process}"), val('piscem'), eval("piscem --version | sed 's/piscem //'"), topic: versions, emit: versions_piscem
tuple val("${task.process}"), val('simpleaf'), eval("ALEVIN_FRY_HOME=. simpleaf --version | sed 's/simpleaf //'"), topic: versions, emit: versions_simpleaf
```

The ALEVIN_FRY_HOME=. prefix is needed because the eval() directive runs in a separate shell context from the script block where the env var is exported.

Test updates

  • piscem 0.20 produces a new on-disk index format. The legacy .sshash / .json files were replaced by .ssi / .ssi.mphf / _ver.json / .sigs.json / .tct / .tdct. Assertions in main.nf.test and the corresponding stub touch lines have been updated.
  • Snapshot assertions migrated from snapshot(process.out.versions).match() to snapshot(process.out.findAll { key, val -> key.startsWith(\"versions\") }).match() to capture the new per-tool topic emits.
  • meta.yml regenerated via nf-core modules lint --fix; obsolete versions: - versions.yml stanza removed by hand.

Test plan

  • nf-test test modules/nf-core/simpleaf/index/tests/main.nf.test --profile docker — 5/5 PASS
  • nf-test test modules/nf-core/simpleaf/quant/tests/main.nf.test --profile docker — 2/2 PASS
  • nf-core modules lint simpleaf/index0 failures
  • nf-core modules lint simpleaf/quant0 failures

Note on residual lint warnings

A separate PR comment below explains the residual main_nf_container and container_links warnings, which are upstream nf-core/tools quirks that surface on every Seqera Wave module (e.g. t1k/build, ngsbits/*) and are not actionable at the module level.

…l 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.
@an-altosian
Copy link
Copy Markdown
Contributor Author

Note for reviewers: residual nf-core modules lint warnings

This PR adopts a Seqera Wave / Community container per the nf-core Seqera Containers docs. Two lint warnings remain after this PR and are not actionable at the module level — they're known artifacts of nf-core/tools predating the Wave URL formats. Including them here so reviewers don't have to re-investigate.

1. main_nf_container: Container versions do not match

Cause: The lint check at nf_core/modules/lint/main_nf.py:360-384 parses the Singularity tag with the regex (?:[:.])?([A-Za-z\d\-_.]+?)(?:\.img)?(?:\.sif)?$. For our Wave Singularity URL https://community-cr-prod.seqera.io/.../sha256/<hash>/data, that regex captures the literal string \"data\". The Docker tag regex captures \"0.24.1--41e05fd46d838d92\". Comparison \"data\" == \"0.24.1--41e05fd46d838d92\" → False → warning.

The check was designed for biocontainers-style URLs (…/fastqc:0.11.9--0) where both URLs end with the same version--build suffix. Wave's content-addressable blob URLs have no version substring at all.

2. container_links (HTTP 404)

Cause: Lint does a naked HTTP HEAD against the Docker URL. Wave's community registry doesn't answer with 200 on that endpoint — it requires an OCI manifest GET with Accept: application/vnd.oci.image.manifest.v1+json plus a token negotiation. docker pull / singularity pull / nextflow run all handle that handshake correctly. nf-test in this PR successfully pulled and ran the container end-to-end.

Reproducibility

Both warnings reproduce on every existing Wave-container module in the repo:

Related upstream issues

What this PR does NOT include

I did not file a new upstream issue specifically for the Wave version-mismatch case — happy to do so if reviewers want one to track. The structural cause is documented in #3179 and the workaround would naturally land in #3656.

an-altosian and others added 2 commits May 20, 2026 15:48
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.
@an-altosian an-altosian changed the title feat(simpleaf): bump to 0.24.1 with Seqera Wave container and topic-channel versions feat(simpleaf): bump to 0.25.0 with Seqera Wave container and topic-channel versions May 20, 2026
@an-altosian an-altosian added this pull request to the merge queue May 20, 2026
Merged via the queue into nf-core:master with commit 0863c5e May 20, 2026
39 checks passed
@an-altosian an-altosian deleted the feat/simpleaf-wave-topics branch May 20, 2026 18:00
manascripts pushed a commit to manascripts/modules that referenced this pull request May 21, 2026
…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.
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.

2 participants