From 62f5cad3c6081c304135dffb6ffe8cef6a94aa19 Mon Sep 17 00:00:00 2001 From: Anwai Archit Date: Fri, 5 Jun 2026 17:48:13 +0200 Subject: [PATCH 1/3] Add migration scripts to bioimage-cpp --- experiments/benchmarking/cellvit/eval_util.py | 2 +- experiments/benchmarking/hovernet/eval_util.py | 2 +- experiments/benchmarking/hovernext/evaluate_ais_hover.py | 2 +- experiments/benchmarking/instanseg/instanseg_inference.py | 2 +- experiments/benchmarking/outdated/cellvitplusplus/eval.py | 2 +- experiments/benchmarking/stardist/stardist_inference.py | 2 +- experiments/patho-sam/per_image_eval.py | 2 +- scripts/test_pannuke.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/experiments/benchmarking/cellvit/eval_util.py b/experiments/benchmarking/cellvit/eval_util.py index 15a2b47..48a3b1a 100644 --- a/experiments/benchmarking/cellvit/eval_util.py +++ b/experiments/benchmarking/cellvit/eval_util.py @@ -7,7 +7,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from elf.evaluation import mean_segmentation_accuracy diff --git a/experiments/benchmarking/hovernet/eval_util.py b/experiments/benchmarking/hovernet/eval_util.py index dc9b6c9..b6c431f 100644 --- a/experiments/benchmarking/hovernet/eval_util.py +++ b/experiments/benchmarking/hovernet/eval_util.py @@ -6,7 +6,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from elf.evaluation import mean_segmentation_accuracy diff --git a/experiments/benchmarking/hovernext/evaluate_ais_hover.py b/experiments/benchmarking/hovernext/evaluate_ais_hover.py index fe26359..2c5626a 100644 --- a/experiments/benchmarking/hovernext/evaluate_ais_hover.py +++ b/experiments/benchmarking/hovernext/evaluate_ais_hover.py @@ -6,7 +6,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from elf.evaluation import mean_segmentation_accuracy diff --git a/experiments/benchmarking/instanseg/instanseg_inference.py b/experiments/benchmarking/instanseg/instanseg_inference.py index a4ba18c..923e5b2 100644 --- a/experiments/benchmarking/instanseg/instanseg_inference.py +++ b/experiments/benchmarking/instanseg/instanseg_inference.py @@ -7,7 +7,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from tukra.io import read_image from tukra.inference import segment_using_instanseg diff --git a/experiments/benchmarking/outdated/cellvitplusplus/eval.py b/experiments/benchmarking/outdated/cellvitplusplus/eval.py index 1f245be..536233d 100644 --- a/experiments/benchmarking/outdated/cellvitplusplus/eval.py +++ b/experiments/benchmarking/outdated/cellvitplusplus/eval.py @@ -6,7 +6,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from elf.evaluation import mean_segmentation_accuracy diff --git a/experiments/benchmarking/stardist/stardist_inference.py b/experiments/benchmarking/stardist/stardist_inference.py index f4b8e7f..c76381f 100644 --- a/experiments/benchmarking/stardist/stardist_inference.py +++ b/experiments/benchmarking/stardist/stardist_inference.py @@ -7,7 +7,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from tukra.io import read_image from tukra.inference import segment_using_stardist diff --git a/experiments/patho-sam/per_image_eval.py b/experiments/patho-sam/per_image_eval.py index 1e2cdb2..ec19f0e 100644 --- a/experiments/patho-sam/per_image_eval.py +++ b/experiments/patho-sam/per_image_eval.py @@ -7,7 +7,7 @@ import numpy as np import pandas as pd import imageio.v3 as imageio -from skimage.measure import label +from bioimage_cpp.segmentation import label from elf.evaluation import mean_segmentation_accuracy diff --git a/scripts/test_pannuke.py b/scripts/test_pannuke.py index c7fbc15..955ca80 100644 --- a/scripts/test_pannuke.py +++ b/scripts/test_pannuke.py @@ -6,7 +6,7 @@ import h5py import numpy as np import imageio.v3 as imageio -from skimage.segmentation import relabel_sequential +from bioimage_cpp.segmentation import relabel_sequential from torch_em.data.datasets.histopathology import pannuke, monuseg From 177f4c9b30709b192ca0c7bb451b954b345f9b83 Mon Sep 17 00:00:00 2001 From: Anwai Archit Date: Fri, 5 Jun 2026 17:57:42 +0200 Subject: [PATCH 2/3] Update package installation stuff --- environment.yaml | 2 +- setup.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/environment.yaml b/environment.yaml index a8abec9..b88e4cf 100644 --- a/environment.yaml +++ b/environment.yaml @@ -2,7 +2,7 @@ name: patho-sam channels: - conda-forge dependencies: - - micro_sam + - micro_sam >=1.8.1 # Note: installing the pytorch package from conda-forge will generally # give you the most optmized version for your system, if you have a modern # enough OS and CUDA version (CUDA >= 12). For older versions, you can diff --git a/setup.py b/setup.py index 096f09c..132a99f 100644 --- a/setup.py +++ b/setup.py @@ -16,6 +16,7 @@ url='https://github.com/computational-cell-analytics/patho-sam', packages=find_packages(include=['patho_sam', 'patho_sam.*']), license="MIT", + install_requires=["micro_sam>=1.8.1"], entry_points={ "console_scripts": [ "patho_sam.example_data=patho_sam.util:get_example_wsi_data", From 085fa6ed6ba4a64ae6c4c6b70c99ef8c99f29aee Mon Sep 17 00:00:00 2001 From: Anwai Archit Date: Fri, 5 Jun 2026 18:01:31 +0200 Subject: [PATCH 3/3] Migrate nifty blocking for semantic segmentation --- patho_sam/semantic_segmentation.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/patho_sam/semantic_segmentation.py b/patho_sam/semantic_segmentation.py index beab873..cdb5f68 100644 --- a/patho_sam/semantic_segmentation.py +++ b/patho_sam/semantic_segmentation.py @@ -5,7 +5,7 @@ import numpy as np from numpy.typing import ArrayLike -from nifty.tools import blocking +from bioimage_cpp.utils import Blocking import torch @@ -238,7 +238,7 @@ def initialize( self._predictor, image, image_embeddings, tile_shape, halo, verbose=verbose, batch_size=batch_size, mask=mask, i=i, ) - tiling = blocking([0, 0], original_size, tile_shape) + tiling = Blocking([0, 0], original_size, tile_shape) if semantic_segmentation is None: semantic_segmentation = np.zeros(original_size, dtype="uint8") @@ -250,7 +250,7 @@ def initialize( msg = "Initialize tiled semantic segmentation with decoder" if tiles_in_mask is None: - n_tiles = tiling.numberOfBlocks + n_tiles = tiling.number_of_blocks all_tile_ids = list(range(n_tiles)) else: n_tiles = len(tiles_in_mask) @@ -282,11 +282,11 @@ def initialize( output = np.argmax(output, axis=0) # Set the predictions in the output for this tile. - block = tiling.getBlockWithHalo(tile_id, halo=list(halo)) + block = tiling.get_block_with_halo(tile_id, halo=list(halo)) local_bb = tuple( - slice(beg, end) for beg, end in zip(block.innerBlockLocal.begin, block.innerBlockLocal.end) + slice(beg, end) for beg, end in zip(block.inner_block_local.begin, block.inner_block_local.end) ) - inner_bb = tuple(slice(beg, end) for beg, end in zip(block.innerBlock.begin, block.innerBlock.end)) + inner_bb = tuple(slice(beg, end) for beg, end in zip(block.inner_block.begin, block.inner_block.end)) semantic_segmentation[inner_bb] = output[local_bb] pbar_update(1)