From 864be366f49eda8ba441db35897fd3f96a57c637 Mon Sep 17 00:00:00 2001 From: f641l Date: Thu, 23 Jul 2026 16:11:54 +0200 Subject: [PATCH 1/3] implement matthias recom, update to snaptshots and version bump. --- CHANGELOG.md | 13 ++++- assets/multiqc_config.yml | 2 +- conf/modules.config | 7 --- modules.json | 58 ++++++++++++++----- .../xeniumranger/import-segmentation/main.nf | 7 ++- nextflow.config | 2 +- ro-crate-metadata.json | 58 ++++++++++++------- .../main.nf | 2 + .../baysor_run_transcripts_parquet/main.nf | 7 ++- .../main.nf | 3 +- .../main.nf | 2 + .../main.nf | 3 + .../local/proseg_preset_proseg2baysor/main.nf | 2 + .../proseg_preset_proseg2baysor_tiled/main.nf | 3 +- .../local/segger_create_train_predict/main.nf | 2 + .../main.nf | 2 + .../main.nf | 4 ++ .../main.nf | 2 + tests/coordinate_mode.nf.test.snap | 6 +- tests/default.nf.test.snap | 6 +- tests/image_mode.nf.test.snap | 6 +- tests/preview_mode.nf.test.snap | 6 +- tests/segfree_mode.nf.test.snap | 6 +- workflows/spatialaxe.nf | 9 +++ 24 files changed, 153 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9367ca4e..e073d66c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 1.0.0dev - [date] +## 1.0.1dev + +### `Added` + +### `Fixed` + +### `Dependencies` + +### `Deprecated` + + +## 1.0.1 - [date] Initial release of nf-core/spatialaxe, created with the [nf-core](https://nf-co.re/) template. diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 47566390..2e796b9a 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/spatialaxe analysis pipeline. For information about how to interpret these results, please see the documentation. + This report has been generated by the nf-core/spatialaxe analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: "nf-core-spatialaxe-methods-description": order: -1000 diff --git a/conf/modules.config b/conf/modules.config index 21b274a1..81cf6a25 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -82,13 +82,6 @@ process { path: "${params.outdir}/${params.mode}/xeniumranger/import_segementation", mode: params.publish_dir_mode, ] - // --expansion-distance is only valid for nuclei-based imports (it expands nuclei - // into cell boundaries). xeniumranger rejects it for transcript-assignment imports - // (proseg/baysor/segger) and cells-only imports with "--expansion-distance requires - // --nuclei", so only emit it when a nuclei segmentation is being imported. - ext.args = {[ - (nuclei && params.expansion_distance != null) ? "--expansion-distance=${params.expansion_distance}" : "", - ].join(' ').trim()} } // ---------------------------- proseg --------------------------------------------------- diff --git a/modules.json b/modules.json index c215c2ed..9dd460ec 100644 --- a/modules.json +++ b/modules.json @@ -8,65 +8,87 @@ "cellpose": { "branch": "master", "git_sha": "0780b963d3ab087e861a4b74e9d0e404115e5352", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/cellpose/cellpose.diff" }, "multiqc": { "branch": "master", "git_sha": "cb9f4bec379866ca560f7f79d9a9a06bea8c9b51", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/multiqc/multiqc.diff" }, "opt/flip": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/opt/flip/opt-flip.diff" }, "opt/stat": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/opt/stat/opt-stat.diff" }, "opt/track": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/opt/track/opt-track.diff" }, "stardist": { "branch": "master", "git_sha": "4e783502ab661bed13f15189401b73c93966831f", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/stardist/stardist.diff" }, "untar": { "branch": "master", "git_sha": "447f7bc0fa41dfc2400c8cad4c0291880dc060cf", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/untar/untar.diff" }, "unzip": { "branch": "master", "git_sha": "4dd9d8439a429c7ee566e0e2347f76ddeef27e66", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/unzip/unzip.diff" }, "xeniumranger/import-segmentation": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "xeniumranger/relabel": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "xeniumranger/resegment": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -75,20 +97,26 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/xeniumranger/import-segmentation/main.nf b/modules/nf-core/xeniumranger/import-segmentation/main.nf index 264b8a72..bb0980a6 100644 --- a/modules/nf-core/xeniumranger/import-segmentation/main.nf +++ b/modules/nf-core/xeniumranger/import-segmentation/main.nf @@ -5,7 +5,7 @@ process XENIUMRANGER_IMPORT_SEGMENTATION { container "nf-core/xeniumranger:4.0" input: - tuple val(meta), path(xenium_bundle, stageAs: "bundle/"), path(transcript_assignment), path(viz_polygons), path(nuclei), path(cells), path(coordinate_transform), val(units) + tuple val(meta), path(xenium_bundle, stageAs: "bundle/"), path(transcript_assignment), path(viz_polygons), path(nuclei), path(cells), path(coordinate_transform), val(units), val(expansion_distance) output: tuple val(meta), path("${prefix}"), emit: outs @@ -32,6 +32,11 @@ process XENIUMRANGER_IMPORT_SEGMENTATION { def assembled_args = [] if (task.ext.args) { assembled_args << task.ext.args.trim() } + // --expansion-distance is only valid for nuclei-based imports (it expands nuclei + // into cell boundaries). xeniumranger rejects it for transcript-assignment imports + // (proseg/baysor/segger) and cells-only imports with "--expansion-distance requires + // --nuclei", so only emit it when a nuclei segmentation is being imported. + if (nuclei && expansion_distance != null) { assembled_args << "--expansion-distance=${expansion_distance}" } if (nuclei) { assembled_args << "--nuclei=\"${nuclei}\"" } if (cells) { assembled_args << "--cells=\"${cells}\"" } if (transcript_assignment) { assembled_args << "--transcript-assignment=\"${transcript_assignment}\"" } diff --git a/nextflow.config b/nextflow.config index cf75ae06..eef01269 100644 --- a/nextflow.config +++ b/nextflow.config @@ -385,7 +385,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'master' nextflowVersion = '!>=25.04.0' - version = '1.1.0dev' + version = '1.0.1' doi = '' } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index d5575c0b..0a88ac08 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -21,9 +21,9 @@ { "@id": "./", "@type": "Dataset", - "creativeWorkStatus": "InProgress", - "datePublished": "2026-06-17T15:15:09+00:00", - "description": "

\n \n \n \"nf-core/spatialaxe\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/spatialaxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/spatialaxe/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.4.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.4.1)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/spatialaxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialaxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialaxe)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/spatialaxe** is a bioinformatics best-practice processing and quality control pipeline for Xenium (and soon Atera) data. The current plan for the pipeline implementation is shown in the metromap below. **The pipeline is under active developement and changes might occure frequently**.\n\n![nf-core/spatialaxe-metromap](docs/images/spatialaxe-metromap.png)\n\n> [!NOTE]\n> We are currently extending the pipeline for the [10x Atera system](https://www.10xgenomics.com/platforms/atera).\n\n## Tools supported\n\nThe pipeline supports the following tools:\n\n- Segmenation methods:\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n - [Cellpose](https://doi.org/10.1038/s41592-020-01018-x)\n - [Xenium ranger (XR)](https://www.10xgenomics.com/support/software/xenium-ranger/latest)\n - [StarDist](https://doi.org/10.48550/arXiv.2203.02284)\n- Segmentation free methods:\n - [Ficture](https://doi.org/10.1038/s41592-024-02415-2)\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n- Transcript assignment methods:\n - [Segger](https://doi.org/10.1101/2025.03.14.643160)\n - [Proseg](https://doi.org/10.1038/s41592-025-02697-0)\n- Utility methods:\n - [SpatialData](https://doi.org/10.1038/s41592-024-02212-x)\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n- QC methods:\n - [MultiQC Xenium Extra Plugin](https://github.com/MultiQC/xenium-extra)\n - [OPT](https://github.com/JEFworks-Lab/off-target-probe-tracker)\n\n## Usage\n\nOn release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources. The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/spatialaxe/results).\n\n> [!NOTE]\n> The pipeline does not support conda currently. We are working on it.\n\n## Quick Start\n\n`samplesheet.csv`:\n\n```csv\nsample,bundle,image\ntest_sample,/path/to/xenium-bundle,/path/to/morphology.ome.tif\n```\n\nNow, you can run the pipeline using:\n\n### Run image-based segmentation mode
\n\n`CELLPOSE -> BAYSOR -> XR-IMPORT_SEGMENTATION -> SPATIALDATA -> QC`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode \n```\n\n### Run coordinate-based segmentation mode
\n\n`PROSEG -> PROSEG2BAYSOR -> XR-IMPORT_SEGMENTATION -> SPATIALDATA -> QC`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode coordinate\n```\n\n### Run segfree mode
\n\n`BAYSOR_SEGFREE`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode segfree\n```\n\n### Run preview mode
\n\n`BAYSOR_PREVIEW`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode preview\n```\n\n### Run just the quality control
\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode qc\n```\n\n### Additional information\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialaxe/usage) and the [parameter documentation](https://nf-co.re/spatialaxe/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/spatialaxe/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/spatialaxe/output).\n\n## Runtime and resource estimations\n\n| Tool | Compute | Runtime (min / med / max) | Peak RSS (min / med / max) |\n| ------------------------- | ------- | ------------------------- | -------------------------- |\n| Cellpose | GPU | 1m / 4m / 1.4h | 10 GB / 26 GB / 554 GB |\n| Cellpose | CPU | 1.3h / 2.3h / 6.5h | 161 GB / 426 GB / 1115 GB |\n| StarDist | GPU | 1m / 4m / 7m | 5 GB / 12 GB / 18 GB |\n| StarDist | CPU | 5m / 6m / 7m | 18 GB / 18 GB / 18 GB |\n| Segger (create_dataset) | GPU | 2m / 9m / 31m | 1.7 GB / 14 GB / 50 GB |\n| Segger (create_dataset) | CPU | 13m / 21m / 46m | 13 GB / 19 GB / 49 GB |\n| Segger (train) | GPU | 10m / 43m / 2.9h | 30 GB / 33 GB / 60 GB |\n| Segger (predict) | GPU | 2m / 16m / 59m | 10 GB / 25 GB / 87 GB |\n| Baysor (whole-image) | CPU | 2m / 30m / 17h | 6 GB / 10 GB / 650 GB |\n| Baysor (tiled) | CPU | 1m / 18m / 13h | 0.2 GB / 34 GB / 530 GB |\n| Proseg | CPU | 1m / 18m / 6.8h | 279 MB / 3.8 GB / 136 GB |\n| XeniumRanger (resegment) | CPU | 18m / 39m / 3.7h | 28 GB / 54 GB / 60 GB |\n| XeniumRanger (import_seg) | CPU | 2m / 7m / 2.7h | 2.6 GB / 11 GB / 51 GB |\n| Ficture (preprocess) | CPU | 3m / 4m / 13m | 331 MB / 357 MB / 21 GB |\n\n- Cellpose GPU vs CPU: 35x faster on GPU (4m median vs 2.3h), 16x less memory (26 GB vs 426 GB)\n- Segger: Only tool that truly requires GPU for all 3 steps (create_dataset, train, predict)\n- StarDist: Very fast on CPU, GPU is not necessary to run its default model\n\n## Credits\n\nnf-core/spatialaxe is mainly developed by [Sameesh Kher](https://github.com/khersameesh24), [Dongze He](https://github.com/dongzehe), and [Florian Heyl](https://github.com/heylf).\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Tobias Krause\n- Kre\u0161imir Be\u0161tak (kbestak)\n- Matthias H\u00f6rtenhuber (mashehu)\n- Maxime Garcia (maxulysse)\n- K\u00fcbra Narc\u0131 (kubranarci)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialaxe` channel](https://nfcore.slack.com/channels/spatialaxe) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "creativeWorkStatus": "Stable", + "datePublished": "2026-07-23T13:01:17+00:00", + "description": "

\n \n \n \"nf-core/spatialaxe\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/spatialaxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/spatialaxe/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.4.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.4.1)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/spatialaxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialaxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialaxe)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/spatialaxe** is a bioinformatics best-practice processing and quality control pipeline for Xenium (and soon Atera) data. The current plan for the pipeline implementation is shown in the metromap below. **The pipeline is under active developement and changes might occure frequently**.\n\n![nf-core/spatialaxe-metromap](docs/images/spatialaxe-metromap.png)\n\n> [!NOTE]\n> We are currently extending the pipeline for the [10x Atera system](https://www.10xgenomics.com/platforms/atera).\n\n## Tools supported\n\nThe pipeline supports the following tools:\n\n- Segmenation methods:\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n - [Cellpose](https://doi.org/10.1038/s41592-020-01018-x)\n - [Xenium ranger (XR)](https://www.10xgenomics.com/support/software/xenium-ranger/latest)\n - [StarDist](https://doi.org/10.48550/arXiv.2203.02284)\n- Segmentation free methods:\n - [Ficture](https://doi.org/10.1038/s41592-024-02415-2)\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n- Transcript assignment methods:\n - [Segger](https://doi.org/10.1101/2025.03.14.643160)\n - [Proseg](https://doi.org/10.1038/s41592-025-02697-0)\n- Utility methods:\n - [SpatialData](https://doi.org/10.1038/s41592-024-02212-x)\n - [Baysor](https://doi.org/10.1038/s41587-021-01044-w)\n- QC methods:\n - [MultiQC Xenium Extra Plugin](https://github.com/MultiQC/xenium-extra)\n - [OPT](https://github.com/JEFworks-Lab/off-target-probe-tracker)\n\n## Usage\n\nOn release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources. The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/spatialaxe/results).\n\n> [!NOTE]\n> The pipeline does not support conda currently. We are working on it.\n\n## Quick Start\n\n`samplesheet.csv`:\n\n```csv\nsample,bundle,image\ntest_sample,/path/to/xenium-bundle,/path/to/morphology.ome.tif\n```\n\nNow, you can run the pipeline using:\n\n### Run image-based segmentation mode
\n\n`CELLPOSE -> BAYSOR -> XR-IMPORT_SEGMENTATION -> SPATIALDATA -> QC`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode \n```\n\n### Run coordinate-based segmentation mode
\n\n`PROSEG -> PROSEG2BAYSOR -> XR-IMPORT_SEGMENTATION -> SPATIALDATA -> QC`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode coordinate\n```\n\n### Run segfree mode
\n\n`BAYSOR_SEGFREE`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode segfree\n```\n\n### Run preview mode
\n\n`BAYSOR_PREVIEW`\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode preview\n```\n\n### Run just the quality control
\n\n```bash\nnextflow run nf-core/spatialaxe \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \\\n --mode qc\n```\n\n### Additional information\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialaxe/usage) and the [parameter documentation](https://nf-co.re/spatialaxe/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/spatialaxe/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/spatialaxe/output).\n\n## Runtime and resource estimations\n\n| Tool | Compute | Runtime (min / med / max) | Peak RSS (min / med / max) |\n| ------------------------- | ------- | ------------------------- | -------------------------- |\n| Cellpose | GPU | 1m / 4m / 1.4h | 10 GB / 26 GB / 554 GB |\n| Cellpose | CPU | 1.3h / 2.3h / 6.5h | 161 GB / 426 GB / 1115 GB |\n| StarDist | GPU | 1m / 4m / 7m | 5 GB / 12 GB / 18 GB |\n| StarDist | CPU | 5m / 6m / 7m | 18 GB / 18 GB / 18 GB |\n| Segger (create_dataset) | GPU | 2m / 9m / 31m | 1.7 GB / 14 GB / 50 GB |\n| Segger (create_dataset) | CPU | 13m / 21m / 46m | 13 GB / 19 GB / 49 GB |\n| Segger (train) | GPU | 10m / 43m / 2.9h | 30 GB / 33 GB / 60 GB |\n| Segger (predict) | GPU | 2m / 16m / 59m | 10 GB / 25 GB / 87 GB |\n| Baysor (whole-image) | CPU | 2m / 30m / 17h | 6 GB / 10 GB / 650 GB |\n| Baysor (tiled) | CPU | 1m / 18m / 13h | 0.2 GB / 34 GB / 530 GB |\n| Proseg | CPU | 1m / 18m / 6.8h | 279 MB / 3.8 GB / 136 GB |\n| XeniumRanger (resegment) | CPU | 18m / 39m / 3.7h | 28 GB / 54 GB / 60 GB |\n| XeniumRanger (import_seg) | CPU | 2m / 7m / 2.7h | 2.6 GB / 11 GB / 51 GB |\n| Ficture (preprocess) | CPU | 3m / 4m / 13m | 331 MB / 357 MB / 21 GB |\n\n- Cellpose GPU vs CPU: 35x faster on GPU (4m median vs 2.3h), 16x less memory (26 GB vs 426 GB)\n- Segger: Only tool that truly requires GPU for all 3 steps (create_dataset, train, predict)\n- StarDist: Very fast on CPU, GPU is not necessary to run its default model\n\n## Credits\n\nnf-core/spatialaxe is mainly developed by [Sameesh Kher](https://github.com/khersameesh24), [Dongze He](https://github.com/dongzehe), and [Florian Heyl](https://github.com/heylf).\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Tobias Krause\n- Krešimir Beštak (kbestak)\n- Matthias Hörtenhuber (mashehu)\n- Maxime Garcia (maxulysse)\n- Kübra Narcı (kubranarci)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialaxe` channel](https://nfcore.slack.com/channels/spatialaxe) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" @@ -105,7 +105,7 @@ }, "mentions": [ { - "@id": "#f9351d64-871a-4ac7-b2f8-a41f21061c8e" + "@id": "#261e6187-b79f-4b98-ba5b-c00684be47bc" } ], "name": "nf-core/spatialaxe" @@ -132,19 +132,21 @@ "SoftwareSourceCode", "ComputationalWorkflow" ], - "contributor": [ + "author": [ { "@id": "https://orcid.org/0009-0008-2420-6464" }, - { - "@id": "#79ea84f2-1720-4192-abf8-4298bf91da8f" - }, { "@id": "https://orcid.org/0000-0002-3651-5685" } ], + "contributor": [ + { + "@id": "https://orcid.org/0000-0001-8259-7434" + } + ], "dateCreated": "", - "dateModified": "2026-06-26T11:19:26Z", + "dateModified": "2026-07-23T15:01:17Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -161,6 +163,14 @@ "license": [ "MIT" ], + "maintainer": [ + { + "@id": "https://orcid.org/0009-0008-2420-6464" + }, + { + "@id": "https://orcid.org/0000-0002-3651-5685" + } + ], "name": [ "nf-core/spatialaxe" ], @@ -172,10 +182,10 @@ }, "url": [ "https://github.com/nf-core/spatialaxe", - "https://nf-co.re/spatialaxe/dev/" + "https://nf-co.re/spatialaxe/1.0.1/" ], "version": [ - "1.1.0dev" + "1.0.1" ] }, { @@ -191,11 +201,11 @@ "version": "!>=25.04.0" }, { - "@id": "#f9351d64-871a-4ac7-b2f8-a41f21061c8e", + "@id": "#261e6187-b79f-4b98-ba5b-c00684be47bc", "@type": "TestSuite", "instance": [ { - "@id": "#6665fb11-77f3-4e28-a01c-3b13037a23a0" + "@id": "#e58b049c-0f60-4176-ae4e-f6fd057d8c60" } ], "mainEntity": { @@ -204,7 +214,7 @@ "name": "Test suite for nf-core/spatialaxe" }, { - "@id": "#6665fb11-77f3-4e28-a01c-3b13037a23a0", + "@id": "#e58b049c-0f60-4176-ae4e-f6fd057d8c60", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/spatialaxe", "resource": "repos/nf-core/spatialaxe/actions/workflows/nf-test.yml", @@ -345,18 +355,26 @@ { "@id": "https://orcid.org/0009-0008-2420-6464", "@type": "Person", - "email": "khersameesh24@gmail.com", - "name": "Sameesh Kher" + "affiliation": "German Cancer Research Center (DKFZ), Heidelberg, DE", + "email": "sameesh.kher@dkfz-heidelberg.de", + "name": "Sameesh Kher", + "url": "https://github.com/khersameesh24" }, { - "@id": "#79ea84f2-1720-4192-abf8-4298bf91da8f", + "@id": "https://orcid.org/0000-0002-3651-5685", "@type": "Person", - "name": "Dongze He" + "affiliation": "German Cancer Research Center (DKFZ), Heidelberg, DE", + "email": "florian.heyl@dkfz-heidelberg.de", + "name": "Florian Heyl", + "url": "https://github.com/heylf" }, { - "@id": "https://orcid.org/0000-0002-3651-5685", + "@id": "https://orcid.org/0000-0001-8259-7434", "@type": "Person", - "name": "Florian Heyl" + "affiliation": "Altos Labs, San Diego, USA", + "email": "dongzehe.zaza@gmail.com", + "name": "Dongze He", + "url": "https://github.com/dongzehe" } ] } \ No newline at end of file diff --git a/subworkflows/local/baysor_run_prior_segmentation_mask/main.nf b/subworkflows/local/baysor_run_prior_segmentation_mask/main.nf index d5acc0a1..75742da8 100644 --- a/subworkflows/local/baysor_run_prior_segmentation_mask/main.nf +++ b/subworkflows/local/baysor_run_prior_segmentation_mask/main.nf @@ -18,6 +18,7 @@ workflow BAYSOR_RUN_PRIOR_SEGMENTATION_MASK { min_qv // value: minimum transcript QV min_x // value: spatial filter lower x bound min_y // value: spatial filter lower y bound + expansion_distance // value: nuclear expansion distance main: @@ -69,6 +70,7 @@ workflow BAYSOR_RUN_PRIOR_SEGMENTATION_MASK { polygons2d, [], ch_coordinate_space.val, + expansion_distance, ) } XENIUMRANGER_IMPORT_SEGMENTATION( diff --git a/subworkflows/local/baysor_run_transcripts_parquet/main.nf b/subworkflows/local/baysor_run_transcripts_parquet/main.nf index aff27051..dc7d337f 100644 --- a/subworkflows/local/baysor_run_transcripts_parquet/main.nf +++ b/subworkflows/local/baysor_run_transcripts_parquet/main.nf @@ -35,6 +35,7 @@ workflow BAYSOR_RUN_TRANSCRIPTS_PARQUET { min_qv // value: minimum transcript QV min_x // value: spatial filter lower x bound min_y // value: spatial filter lower y bound + expansion_distance // value: nuclear expansion distance main: @@ -112,7 +113,8 @@ workflow BAYSOR_RUN_TRANSCRIPTS_PARQUET { xr_transcript_metadata, xr_cell_polygons, [], [], [], - "microns" + "microns", + expansion_distance, ) } @@ -154,7 +156,8 @@ workflow BAYSOR_RUN_TRANSCRIPTS_PARQUET { segmentation_csv, polygons2d, [], [], [], - ch_coordinate_space.val) + ch_coordinate_space.val, + expansion_distance) } XENIUMRANGER_IMPORT_SEGMENTATION(ch_xr) diff --git a/subworkflows/local/baysor_run_transcripts_parquet_tiled/main.nf b/subworkflows/local/baysor_run_transcripts_parquet_tiled/main.nf index 70045331..004b50d4 100644 --- a/subworkflows/local/baysor_run_transcripts_parquet_tiled/main.nf +++ b/subworkflows/local/baysor_run_transcripts_parquet_tiled/main.nf @@ -19,6 +19,7 @@ workflow BAYSOR_RUN_TRANSCRIPTS_PARQUET_TILED { min_qv // value: minimum transcript QV min_x // value: spatial filter lower x bound min_y // value: spatial filter lower y bound + expansion_distance // value: nuclear expansion distance main: @@ -93,7 +94,7 @@ workflow BAYSOR_RUN_TRANSCRIPTS_PARQUET_TILED { .combine(XENIUM_PATCH_STITCH.out.xr_polygons_transcript, by: 0) .combine(ch_coordinate_space) .map { meta, bundle, geojson, csv, coord_space -> - tuple(meta, bundle, csv, geojson, [], [], [], coord_space) + tuple(meta, bundle, csv, geojson, [], [], [], coord_space, expansion_distance) } XENIUMRANGER_IMPORT_SEGMENTATION ( ch_xr ) diff --git a/subworkflows/local/cellpose_baysor_import_segmentation/main.nf b/subworkflows/local/cellpose_baysor_import_segmentation/main.nf index 38bbcc74..80945b9b 100644 --- a/subworkflows/local/cellpose_baysor_import_segmentation/main.nf +++ b/subworkflows/local/cellpose_baysor_import_segmentation/main.nf @@ -30,6 +30,7 @@ workflow CELLPOSE_BAYSOR_IMPORT_SEGMENTATION { nucleus_segmentation_only // value: bool sharpen_tiff // value: bool stardist_nuclei_model // value: stardist pretrained model name + expansion_distance // value: nuclear expansion distance main: @@ -180,6 +181,7 @@ workflow CELLPOSE_BAYSOR_IMPORT_SEGMENTATION { [], [], ch_coordinate_space.val, + expansion_distance, ) } diff --git a/subworkflows/local/cellpose_resolift_morphology_ome_tif/main.nf b/subworkflows/local/cellpose_resolift_morphology_ome_tif/main.nf index 6bb38ded..1bef84fa 100644 --- a/subworkflows/local/cellpose_resolift_morphology_ome_tif/main.nf +++ b/subworkflows/local/cellpose_resolift_morphology_ome_tif/main.nf @@ -20,6 +20,7 @@ workflow CELLPOSE_RESOLIFT_MORPHOLOGY_OME_TIF { nucleus_segmentation_only // value: bool sharpen_tiff // value: bool stardist_nuclei_model // value: stardist pretrained model name + expansion_distance // value: nuclear expansion distance main: @@ -106,6 +107,7 @@ workflow CELLPOSE_RESOLIFT_MORPHOLOGY_OME_TIF { [], [], coord_space, + expansion_distance, ) } XENIUMRANGER_IMPORT_SEGMENTATION( @@ -128,6 +130,7 @@ workflow CELLPOSE_RESOLIFT_MORPHOLOGY_OME_TIF { cells_seg, [], coord_space, + expansion_distance, ) } XENIUMRANGER_IMPORT_SEGMENTATION( diff --git a/subworkflows/local/proseg_preset_proseg2baysor/main.nf b/subworkflows/local/proseg_preset_proseg2baysor/main.nf index 3f9d8c99..50e34e6a 100644 --- a/subworkflows/local/proseg_preset_proseg2baysor/main.nf +++ b/subworkflows/local/proseg_preset_proseg2baysor/main.nf @@ -10,6 +10,7 @@ workflow PROSEG_PRESET_PROSEG2BAYSOR { take: ch_bundle_path // channel: [ val(meta), ["path-to-xenium-bundle"] ] ch_transcripts_file // channel: [ val(meta), [ "transcripts.parquet" ] ] + expansion_distance // value: nuclear expansion distance main: @@ -37,6 +38,7 @@ workflow PROSEG_PRESET_PROSEG2BAYSOR { [], [], ch_coordinate_space.val, + expansion_distance, ) } diff --git a/subworkflows/local/proseg_preset_proseg2baysor_tiled/main.nf b/subworkflows/local/proseg_preset_proseg2baysor_tiled/main.nf index 7ff6b783..5d954b32 100644 --- a/subworkflows/local/proseg_preset_proseg2baysor_tiled/main.nf +++ b/subworkflows/local/proseg_preset_proseg2baysor_tiled/main.nf @@ -13,6 +13,7 @@ workflow PROSEG_PRESET_PROSEG2BAYSOR_TILED { take: ch_bundle_path // channel: [ val(meta), ["path-to-xenium-bundle"] ] ch_transcripts_file // channel: [ val(meta), [ "transcripts.parquet" ] ] + expansion_distance // value: nuclear expansion distance main: @@ -75,7 +76,7 @@ workflow PROSEG_PRESET_PROSEG2BAYSOR_TILED { .combine(XENIUM_PATCH_STITCH.out.xr_polygons_transcript, by: 0) .combine(ch_coordinate_space) .map { meta, bundle, geojson, csv, coord_space -> - tuple(meta, bundle, csv, geojson, [], [], [], coord_space) + tuple(meta, bundle, csv, geojson, [], [], [], coord_space, expansion_distance) } XENIUMRANGER_IMPORT_SEGMENTATION ( ch_xr ) diff --git a/subworkflows/local/segger_create_train_predict/main.nf b/subworkflows/local/segger_create_train_predict/main.nf index 3f832d61..56c5c93b 100644 --- a/subworkflows/local/segger_create_train_predict/main.nf +++ b/subworkflows/local/segger_create_train_predict/main.nf @@ -13,6 +13,7 @@ workflow SEGGER_CREATE_TRAIN_PREDICT { ch_bundle // channel: [ val(meta), ["path-to-xenium-bundle"] ] ch_transcripts_file // channel: [ val(meta), [bundle + "/transcripts.parquet"]] segger_model // value: path to a pre-trained segger model checkpoint (or null) + expansion_distance // value: nuclear expansion distance main: @@ -64,6 +65,7 @@ workflow SEGGER_CREATE_TRAIN_PREDICT { [], // cells [], // coordinate_transform ch_coordinate_space.val, + expansion_distance, ) } diff --git a/subworkflows/local/stardist_resolift_morphology_ome_tif/main.nf b/subworkflows/local/stardist_resolift_morphology_ome_tif/main.nf index bc255409..deb5166c 100644 --- a/subworkflows/local/stardist_resolift_morphology_ome_tif/main.nf +++ b/subworkflows/local/stardist_resolift_morphology_ome_tif/main.nf @@ -14,6 +14,7 @@ workflow STARDIST_RESOLIFT_MORPHOLOGY_OME_TIF { ch_bundle_path // channel: [ val(meta), ["path-to-xenium-bundle"] ] sharpen_tiff // value: bool stardist_nuclei_model // value: stardist pretrained model name + expansion_distance // value: nuclear expansion distance main: @@ -58,6 +59,7 @@ workflow STARDIST_RESOLIFT_MORPHOLOGY_OME_TIF { [], [], ch_coordinate_space.val, + expansion_distance, ) } XENIUMRANGER_IMPORT_SEGMENTATION( diff --git a/subworkflows/local/xeniumranger_import_segmentation_redefine_bundle/main.nf b/subworkflows/local/xeniumranger_import_segmentation_redefine_bundle/main.nf index 4c7b41d5..744417b7 100644 --- a/subworkflows/local/xeniumranger_import_segmentation_redefine_bundle/main.nf +++ b/subworkflows/local/xeniumranger_import_segmentation_redefine_bundle/main.nf @@ -40,6 +40,7 @@ workflow XENIUMRANGER_IMPORT_SEGMENTATION_REDEFINE_BUNDLE { [], [], ch_coordinate_space.val, + expansion_distance, ) } @@ -65,6 +66,7 @@ workflow XENIUMRANGER_IMPORT_SEGMENTATION_REDEFINE_BUNDLE { [], [], ch_coordinate_space.val, + expansion_distance, ) } @@ -88,6 +90,7 @@ workflow XENIUMRANGER_IMPORT_SEGMENTATION_REDEFINE_BUNDLE { polygons_geojson, [], ch_coordinate_space.val, + expansion_distance, ) } @@ -117,6 +120,7 @@ workflow XENIUMRANGER_IMPORT_SEGMENTATION_REDEFINE_BUNDLE { polygons_geojson, alignment_csv_file, ch_coordinate_space.val, + expansion_distance, ) } diff --git a/subworkflows/local/xeniumranger_resegment_morphology_ome_tif/main.nf b/subworkflows/local/xeniumranger_resegment_morphology_ome_tif/main.nf index bcd97584..2f6f8273 100644 --- a/subworkflows/local/xeniumranger_resegment_morphology_ome_tif/main.nf +++ b/subworkflows/local/xeniumranger_resegment_morphology_ome_tif/main.nf @@ -9,6 +9,7 @@ workflow XENIUMRANGER_RESEGMENT_MORPHOLOGY_OME_TIF { take: ch_bundle_path // channel: [ val(meta), ["path-to-xenium-bundle"] ] nucleus_segmentation_only // value: bool + expansion_distance // value: nuclear expansion distance main: @@ -41,6 +42,7 @@ workflow XENIUMRANGER_RESEGMENT_MORPHOLOGY_OME_TIF { cells_zarr, [], "pixels", + expansion_distance, ) } diff --git a/tests/coordinate_mode.nf.test.snap b/tests/coordinate_mode.nf.test.snap index 72a452ec..069a649c 100644 --- a/tests/coordinate_mode.nf.test.snap +++ b/tests/coordinate_mode.nf.test.snap @@ -24,7 +24,7 @@ "untar": 1.34 }, "Workflow": { - "nf-core/spatialaxe": "v1.1.0dev" + "nf-core/spatialaxe": "v1.0.1" }, "XENIUMRANGER_IMPORT_SEGMENTATION": { "xeniumranger": "4.0.1.1" @@ -143,10 +143,10 @@ "experiment.xenium:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "timestamp": "2026-05-18T21:58:08.945192717", + "timestamp": "2026-07-23T15:40:58.675984128", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" + "nextflow": "26.04.6" } } } \ No newline at end of file diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 3289c2a0..15970ab6 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -24,7 +24,7 @@ "untar": 1.34 }, "Workflow": { - "nf-core/spatialaxe": "v1.1.0dev" + "nf-core/spatialaxe": "v1.0.1" }, "XENIUMRANGER_IMPORT_SEGMENTATION": { "xeniumranger": "4.0.1.1" @@ -143,10 +143,10 @@ "experiment.xenium:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "timestamp": "2026-05-18T21:55:37.544217665", + "timestamp": "2026-07-23T15:44:34.596126547", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" + "nextflow": "26.04.6" } } } \ No newline at end of file diff --git a/tests/image_mode.nf.test.snap b/tests/image_mode.nf.test.snap index a9b73c2c..dbec3925 100644 --- a/tests/image_mode.nf.test.snap +++ b/tests/image_mode.nf.test.snap @@ -30,7 +30,7 @@ "untar": 1.34 }, "Workflow": { - "nf-core/spatialaxe": "v1.1.0dev" + "nf-core/spatialaxe": "v1.0.1" }, "XENIUMRANGER_IMPORT_SEGMENTATION": { "xeniumranger": "4.0.1.1" @@ -158,10 +158,10 @@ "resized_morphology_focus_0000.ome_cp_masks.tif.tif:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "timestamp": "2026-05-18T22:00:39.030306506", + "timestamp": "2026-07-23T15:56:50.983450195", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" + "nextflow": "26.04.6" } } } \ No newline at end of file diff --git a/tests/preview_mode.nf.test.snap b/tests/preview_mode.nf.test.snap index 3d364f04..cc286151 100644 --- a/tests/preview_mode.nf.test.snap +++ b/tests/preview_mode.nf.test.snap @@ -18,7 +18,7 @@ "untar": 1.34 }, "Workflow": { - "nf-core/spatialaxe": "v1.1.0dev" + "nf-core/spatialaxe": "v1.0.1" } }, [ @@ -111,10 +111,10 @@ "umap_mqc.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "timestamp": "2026-06-17T11:15:30.764424637", + "timestamp": "2026-07-23T15:57:29.316600844", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.2" + "nextflow": "26.04.6" } } } \ No newline at end of file diff --git a/tests/segfree_mode.nf.test.snap b/tests/segfree_mode.nf.test.snap index ac663a43..90a83476 100644 --- a/tests/segfree_mode.nf.test.snap +++ b/tests/segfree_mode.nf.test.snap @@ -12,7 +12,7 @@ "untar": 1.34 }, "Workflow": { - "nf-core/spatialaxe": "v1.1.0dev" + "nf-core/spatialaxe": "v1.0.1" } }, [ @@ -88,10 +88,10 @@ "transcripts.zarr.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "timestamp": "2026-05-18T22:02:39.947804998", + "timestamp": "2026-07-23T15:57:58.134363385", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" + "nextflow": "26.04.6" } } } \ No newline at end of file diff --git a/workflows/spatialaxe.nf b/workflows/spatialaxe.nf index 643e737a..3ff05db9 100644 --- a/workflows/spatialaxe.nf +++ b/workflows/spatialaxe.nf @@ -434,6 +434,7 @@ workflow SPATIALAXE { nucleus_segmentation_only, sharpen_tiff, stardist_nuclei_model, + expansion_distance, ) ch_redefined_bundle = CELLPOSE_BAYSOR_IMPORT_SEGMENTATION.out.redefined_bundle ch_coordinate_space = CELLPOSE_BAYSOR_IMPORT_SEGMENTATION.out.coordinate_space @@ -445,6 +446,7 @@ workflow SPATIALAXE { XENIUMRANGER_RESEGMENT_MORPHOLOGY_OME_TIF( ch_bundle_path, nucleus_segmentation_only, + expansion_distance, ) ch_redefined_bundle = XENIUMRANGER_RESEGMENT_MORPHOLOGY_OME_TIF.out.redefined_bundle ch_coordinate_space = XENIUMRANGER_RESEGMENT_MORPHOLOGY_OME_TIF.out.coordinate_space @@ -464,6 +466,7 @@ workflow SPATIALAXE { min_qv, min_x, min_y, + expansion_distance, ) } ch_redefined_bundle = BAYSOR_RUN_PRIOR_SEGMENTATION_MASK.out.redefined_bundle @@ -481,6 +484,7 @@ workflow SPATIALAXE { nucleus_segmentation_only, sharpen_tiff, stardist_nuclei_model, + expansion_distance, ) ch_redefined_bundle = CELLPOSE_RESOLIFT_MORPHOLOGY_OME_TIF.out.redefined_bundle ch_coordinate_space = CELLPOSE_RESOLIFT_MORPHOLOGY_OME_TIF.out.coordinate_space @@ -494,6 +498,7 @@ workflow SPATIALAXE { ch_bundle_path, sharpen_tiff, stardist_nuclei_model, + expansion_distance, ) ch_redefined_bundle = STARDIST_RESOLIFT_MORPHOLOGY_OME_TIF.out.redefined_bundle ch_coordinate_space = STARDIST_RESOLIFT_MORPHOLOGY_OME_TIF.out.coordinate_space @@ -514,6 +519,7 @@ workflow SPATIALAXE { PROSEG_PRESET_PROSEG2BAYSOR_TILED( ch_bundle_path, ch_transcripts_file, + expansion_distance, ) ch_redefined_bundle = PROSEG_PRESET_PROSEG2BAYSOR_TILED.out.redefined_bundle ch_coordinate_space = PROSEG_PRESET_PROSEG2BAYSOR_TILED.out.coordinate_space @@ -521,6 +527,7 @@ workflow SPATIALAXE { PROSEG_PRESET_PROSEG2BAYSOR( ch_bundle_path, ch_transcripts_file, + expansion_distance, ) ch_redefined_bundle = PROSEG_PRESET_PROSEG2BAYSOR.out.redefined_bundle ch_coordinate_space = PROSEG_PRESET_PROSEG2BAYSOR.out.coordinate_space @@ -534,6 +541,7 @@ workflow SPATIALAXE { ch_bundle_path, ch_transcripts_file, segger_model, + expansion_distance, ) ch_redefined_bundle = SEGGER_CREATE_TRAIN_PREDICT.out.redefined_bundle ch_coordinate_space = SEGGER_CREATE_TRAIN_PREDICT.out.coordinate_space @@ -565,6 +573,7 @@ workflow SPATIALAXE { min_qv, min_x, min_y, + expansion_distance, ) ch_redefined_bundle = BAYSOR_RUN_TRANSCRIPTS_PARQUET.out.redefined_bundle ch_coordinate_space = BAYSOR_RUN_TRANSCRIPTS_PARQUET.out.coordinate_space From 0d9cffc77d58401b0f9dedf8fdbf738ecc18637a Mon Sep 17 00:00:00 2001 From: f641l Date: Thu, 23 Jul 2026 16:23:10 +0200 Subject: [PATCH 2/3] prettier for Changelog and modules.json --- CHANGELOG.md | 1 - modules.json | 58 ++++++++++++++-------------------------------------- 2 files changed, 15 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e073d66c..702a3173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Deprecated` - ## 1.0.1 - [date] Initial release of nf-core/spatialaxe, created with the [nf-core](https://nf-co.re/) template. diff --git a/modules.json b/modules.json index 9dd460ec..c215c2ed 100644 --- a/modules.json +++ b/modules.json @@ -8,87 +8,65 @@ "cellpose": { "branch": "master", "git_sha": "0780b963d3ab087e861a4b74e9d0e404115e5352", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/cellpose/cellpose.diff" }, "multiqc": { "branch": "master", "git_sha": "cb9f4bec379866ca560f7f79d9a9a06bea8c9b51", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/multiqc/multiqc.diff" }, "opt/flip": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/opt/flip/opt-flip.diff" }, "opt/stat": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/opt/stat/opt-stat.diff" }, "opt/track": { "branch": "master", "git_sha": "7d3e5c9d3d44", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/opt/track/opt-track.diff" }, "stardist": { "branch": "master", "git_sha": "4e783502ab661bed13f15189401b73c93966831f", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/stardist/stardist.diff" }, "untar": { "branch": "master", "git_sha": "447f7bc0fa41dfc2400c8cad4c0291880dc060cf", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/untar/untar.diff" }, "unzip": { "branch": "master", "git_sha": "4dd9d8439a429c7ee566e0e2347f76ddeef27e66", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/unzip/unzip.diff" }, "xeniumranger/import-segmentation": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "xeniumranger/relabel": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "xeniumranger/resegment": { "branch": "master", "git_sha": "39365e944e936511e33b993cdd978e0f12adac9a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } }, @@ -97,26 +75,20 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} From cb5d4357691a1e41d17866dab9875103e92ee6a1 Mon Sep 17 00:00:00 2001 From: f641l Date: Thu, 23 Jul 2026 16:49:34 +0200 Subject: [PATCH 3/3] taken out stuff from CHANELOG --- CHANGELOG.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 702a3173..b494e5dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,16 +3,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 1.0.1dev - -### `Added` - -### `Fixed` - -### `Dependencies` - -### `Deprecated` - ## 1.0.1 - [date] Initial release of nf-core/spatialaxe, created with the [nf-core](https://nf-co.re/) template.