Skip to content

1.0.1 hotfix - #193

Open
heylf wants to merge 64 commits into
masterfrom
dev
Open

1.0.1 hotfix#193
heylf wants to merge 64 commits into
masterfrom
dev

Conversation

@heylf

@heylf heylf commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

1.0.1 - Hotfix to solve some intitial bugs and template update

Tackling Issues #189 and #186

Added

  • Template update for nf-core/tools version 4.0.3
  • adding new conf/tests folder and adding new test to check the bugfixes
  • Adds a real end-to-end test for the coordinate mode pipeline (not just the existing stub test), and updates the .nftignore list so the new test's snapshot comparison ignores known non-deterministic outputs.

Fixed

  • Only pass --expansion-distance to xeniumranger import-segmentation for nuclei-based imports. It was applied to every import, but xeniumranger rejects it for transcript-assignment imports (proseg/baysor/segger) and cells-only imports with ERROR: --expansion-distance requires --nuclei.
  • Preserve the URI scheme (e.g. s3://) when building Xenium bundle child paths, so bundle validation works when the work directory is on object storage (S3/GCS/Azure). Previously Path.toString() dropped the scheme and the resulting path was resolved on the local filesystem, causing Xenium bundle does not exist / NoSuchFileException failures on AWS Batch.

Dependencies

None

Deprecated

None

PR checklist

  • This comment contains a description of changes (with reason).
  • If you've fixed a bug or added code that should be tested, add tests!
  • Make sure your code lints (nf-core pipelines lint).
  • Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
  • Check for unexpected warnings in debug mode (nextflow run . -profile debug,test,docker --outdir <OUTDIR>).
  • CHANGELOG.md is updated.

nf-core-bot and others added 30 commits November 20, 2025 09:32
Co-authored-by: khersameesh24 <58815690+khersameesh24@users.noreply.github.com>
This reverts commit f5def52, reversing
changes made to 2ef69a3.

Co-authored-by: khersameesh24 <58815690+khersameesh24@users.noreply.github.com>
dev branch version bump to 1.1.0dev
Important! Template update for nf-core/tools v4.0.2
…e-4.0.2

Revert "Important! Template update for nf-core/tools v4.0.2"
Template merge - `nf-core v4.0.2`
Bundle validation built child paths from `Path.toString()`, which drops
the URI scheme (e.g. `s3://`) for remote filesystems. On object-storage
work dirs (S3 on AWS Batch) the scheme-less path was resolved on the
local filesystem, so every child-file check failed with
`Xenium bundle does not exist` / `NoSuchFileException`, even though the
UNTAR step succeeded.

Use scheme-preserving `Path.resolve()` / `toUriString()` instead of
`toString()` at all bundle-path construction sites. This fixes both the
`-profile test` staging path (UNTAR output) and production runs where the
samplesheet supplies an object-storage bundle. No change on local /
shared-filesystem executors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
xeniumranger import-segmentation was given --expansion-distance on every
invocation, but the tool only accepts it for nuclei-based imports
(it expands nuclei into cell boundaries). Transcript-assignment imports
(proseg/baysor/segger) and cells-only imports fail with
`ERROR: --expansion-distance requires --nuclei`.

Gate the flag on the module's `nuclei` input so it is emitted only when a
nuclei segmentation is being imported.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ndle-paths

Preserve URI scheme when resolving Xenium bundle child paths
…lei-only

Only pass --expansion-distance for nuclei-based xeniumranger imports
heylf and others added 6 commits July 28, 2026 16:14
Merging from dev to 1.0.1
Fixing a mistake in solving the merge conflict
Co-authored-by: Matthias Hörtenhuber <mashehu@users.noreply.github.com>
Important! Template update for nf-core/tools v4.0.3
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

nf-core pipelines lint overall result: Passed ✅ ⚠️

Posted for pipeline commit 104575f

+| ✅ 287 tests passed       |+
#| ❔   8 tests were ignored |#
!| ❗   7 tests had warnings |!
Details

❗ Test warnings:

  • files_exist - File not found: conf/igenomes.config
  • files_exist - File not found: conf/igenomes_ignored.config
  • pipeline_todos - TODO string in main.nf: Optionally add in-text citation tools to this list.
  • pipeline_todos - TODO string in main.nf: Optionally add bibliographic entries to this list.
  • pipeline_if_empty_null - ifEmpty(null) found in /home/runner/work/spatialaxe/spatialaxe/lint_results.md: _* pipeline_if_empty_null - No ifEmpty(null) strings found
    _
  • schema_lint - Schema 'description' should be 'A pipeline for spatialomics 10x Xenium In Situ data.'
    Found: 'A pipeline to process spatialomics data from 10x Xenium In Situ or 10x Atera.'
  • included_configs - Pipeline config does not include custom configs. Please add the includeConfig line.

❔ Tests ignored:

  • files_exist - File is ignored: .github/workflows/awsfulltest.yml
  • files_exist - File is ignored: .github/workflows/awstest.yml
  • files_exist - File is ignored: .github/workflows/linting_comment.yml
  • files_unchanged - File ignored due to lint config: .github/PULL_REQUEST_TEMPLATE.md
  • files_unchanged - File ignored due to lint config: assets/nf-core-spatialaxe_logo_light.png
  • files_unchanged - File ignored due to lint config: docs/images/nf-core-spatialaxe_logo_light.png
  • files_unchanged - File ignored due to lint config: docs/images/nf-core-spatialaxe_logo_dark.png
  • files_unchanged - File ignored due to lint config: .gitignore or .prettierignore

✅ Tests passed:

Run details

  • nf-core/tools version 4.0.3
  • Run at 2026-08-04 13:59:58

Comment thread CHANGELOG.md Outdated

@FriederikeHanssen FriederikeHanssen left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me. We can't test on AWS at the moment (see #pipeline-maintainers) channel. Do you have an AWS CE available to test your fix on?

@heylf

heylf commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator Author

Unfortuantely not

Add missing date in CHANGELOG.md

@erikrikarddaniel erikrikarddaniel left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No test seems to cover the bug you fixed. In the words of my coworker Claude (modules/nf-core/xeniumranger/importsegmentation/tests/main.nf.test, lines 28–61): "Both test cases here (nuclei + stub) set nuclei to bundle + "/cells.zarr.zip" and expansion_distance to 5 — so they only exercise the branch in main.nf:37 that already worked before this fix (nuclei truthy → include --expansion-distance).

Neither case covers the actual bug: nuclei empty/falsy (transcript-assignment or cells-only import) with expansion_distance still set, which is exactly the scenario that used to error out with --expansion-distance requires --nuclei. Could you add a third case with nuclei: [] and expansion_distance: 5 that asserts the resulting command does not include --expansion-distance? As it stands, this fix could regress silently and the test suite wouldn't catch it."

And another note on tests from the same source (workflows/spatialaxe.nf, around line 148): "This fix (and the toUriString() calls at lines 227/244/264/350) is specifically about object-storage work dirs — the commit message itself notes "No change on local / shared-filesystem executors." Since our test suite runs on local storage, toString() and toUriString() produce identical results there, so the existing tests can't actually distinguish the buggy behavior from the fixed one — this could regress again without CI noticing.

Was this verified against a real S3 (or other object-storage) work directory, e.g. via an AWS full-test run on Seqera Platform? Not asking for a new automated test necessarily (that'd need real cloud infra in CI), just want to confirm it's been exercised somewhere before we ship it as a fix, and maybe note in the PR how it was checked."

Claude also discovered some meta.yml mistakes that should be easy to fix: "8 subworkflows still reference the old module name in their meta.yml (xeniumranger/import-segmentation) after the module was renamed to xeniumranger/importsegmentation — a mechanical follow-up that got missed: baysor_run_prior_segmentation_mask, baysor_run_transcripts_parquet, cellpose_baysor_import_segmentation, cellpose_resolift_morphology_ome_tif, proseg_preset_proseg2baysor, segger_create_train_predict, xeniumranger_import_segmentation_redefine_bundle, xeniumranger_resegment_morphology_ome_tif."

Comment thread subworkflows/local/baysor_run_prior_segmentation_mask/main.nf Outdated
Comment thread subworkflows/local/baysor_run_transcripts_parquet/main.nf Outdated
Comment thread subworkflows/local/baysor_run_transcripts_parquet_tiled/main.nf Outdated
Comment thread subworkflows/local/cellpose_baysor_import_segmentation/main.nf Outdated
Comment thread subworkflows/local/cellpose_resolift_morphology_ome_tif/main.nf Outdated
Comment thread subworkflows/local/proseg_preset_proseg2baysor_tiled/main.nf Outdated
Comment thread subworkflows/local/segger_create_train_predict/main.nf Outdated
Comment thread subworkflows/local/stardist_resolift_morphology_ome_tif/main.nf Outdated
Comment thread subworkflows/local/xeniumranger_resegment_morphology_ome_tif/main.nf Outdated
Comment thread tests/segfree_mode.nf.test.snap
@heylf

heylf commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator Author

And another note on tests from the same source (workflows/spatialaxe.nf, around line 148): "This fix (and the toUriString() calls at lines 227/244/264/350) is specifically about object-storage work dirs — the commit message itself notes "No change on local / shared-filesystem executors." Since our test suite runs on local storage, toString() and toUriString() produce identical results there, so the existing tests can't actually distinguish the buggy behavior from the fixed one — this could regress again without CI noticing.

Was this verified against a real S3 (or other object-storage) work directory, e.g. via an AWS full-test run on Seqera Platform? Not asking for a new automated test necessarily (that'd need real cloud infra in CI), just want to confirm it's been exercised somewhere before we ship it as a fix, and maybe note in the PR how it was checked."

It is beeing tested. The fix which is already implement was defintily tested by seqera on their platform. Yet all the new implementation as whole (inclduing template updates) were not tested on seqara platform or similar. Will be done! Coming back to that with an update to this comment.

@heylf

heylf commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator Author

Claude also discovered some meta.yml mistakes that should be easy to fix: "8 subworkflows still reference the old module name in their meta.yml (xeniumranger/import-segmentation) after the module was renamed to xeniumranger/importsegmentation — a mechanical follow-up that got missed: baysor_run_prior_segmentation_mask, baysor_run_transcripts_parquet, cellpose_baysor_import_segmentation, cellpose_resolift_morphology_ome_tif, proseg_preset_proseg2baysor, segger_create_train_predict, xeniumranger_import_segmentation_redefine_bundle, xeniumranger_resegment_morphology_ome_tif."

This is correct. This is what Claude does not get: The module was renamed into importsegmentation because of nf-core/modules standards. Yet, the actual function from xenium ranger is import-segmentation. Thus the meta.ymls reference correctly that the module runs import-segmentation.

@heylf

heylf commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator Author

No test seems to cover the bug you fixed. In the words of my coworker Claude (modules/nf-core/xeniumranger/importsegmentation/tests/main.nf.test, lines 28–61): "Both test cases here (nuclei + stub) set nuclei to bundle + "/cells.zarr.zip" and expansion_distance to 5 — so they only exercise the branch in main.nf:37 that already worked before this fix (nuclei truthy → include --expansion-distance).

Neither case covers the actual bug: nuclei empty/falsy (transcript-assignment or cells-only import) with expansion_distance still set, which is exactly the scenario that used to error out with --expansion-distance requires --nuclei. Could you add a third case with nuclei: [] and expansion_distance: 5 that asserts the resulting command does not include --expansion-distance? As it stands, this fix could regress silently and the test suite wouldn't catch it."

This was tackled now with #202

@erikrikarddaniel

Copy link
Copy Markdown
Member

Claude also discovered some meta.yml mistakes that should be easy to fix: "8 subworkflows still reference the old module name in their meta.yml (xeniumranger/import-segmentation) after the module was renamed to xeniumranger/importsegmentation — a mechanical follow-up that got missed: baysor_run_prior_segmentation_mask, baysor_run_transcripts_parquet, cellpose_baysor_import_segmentation, cellpose_resolift_morphology_ome_tif, proseg_preset_proseg2baysor, segger_create_train_predict, xeniumranger_import_segmentation_redefine_bundle, xeniumranger_resegment_morphology_ome_tif."

This is correct. This is what Claude does not get: The module was renamed into importsegmentation because of nf-core/modules standards. Yet, the actual function from xenium ranger is import-segmentation. Thus the meta.ymls reference correctly that the module runs import-segmentation.

My mistake again; I know the rules.

@erikrikarddaniel

Copy link
Copy Markdown
Member

No test seems to cover the bug you fixed. In the words of my coworker Claude (modules/nf-core/xeniumranger/importsegmentation/tests/main.nf.test, lines 28–61): "Both test cases here (nuclei + stub) set nuclei to bundle + "/cells.zarr.zip" and expansion_distance to 5 — so they only exercise the branch in main.nf:37 that already worked before this fix (nuclei truthy → include --expansion-distance).

Neither case covers the actual bug: nuclei empty/falsy (transcript-assignment or cells-only import) with expansion_distance still set, which is exactly the scenario that used to error out with --expansion-distance requires --nuclei. Could you add a third case with nuclei: [] and expansion_distance: 5 that asserts the resulting command does not include --expansion-distance? As it stands, this fix could regress silently and the test suite wouldn't catch it."

This was tackled now with #202

I just approved that.

Changes to tackle revision for hotfix 1.0.1
@heylf heylf closed this Aug 4, 2026
@heylf heylf reopened this Aug 4, 2026

@erikrikarddaniel erikrikarddaniel left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@heylf
heylf requested a review from FriederikeHanssen August 4, 2026 15:16
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.

8 participants