Skip to content

Commit 26f099f

Browse files
authored
🔖 Release 2.0.1 (#1039)
## TIAToolbox v2.0.1 (2026-03-16) ### Bug Fixes and Other Changes - Fixes filtering of tiles for post-processing within masked region (#1037). - Fixes Calculation of `max_inst_value` for Instances where overlap is empty (#1038) **Full Changelog:** v2.0.0...v2.0.1
1 parent 2275bf0 commit 26f099f

12 files changed

Lines changed: 82 additions & 27 deletions

File tree

.github/workflows/docker-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ env:
66
REGISTRY: ghcr.io
77
IMAGE_NAME: TissueImageAnalytics/tiatoolbox
88
image: ghcr.io/tissueimageanalytics/tiatoolbox
9-
TOOLBOX_VER: 2.0.0
9+
TOOLBOX_VER: 2.0.1
1010

1111
jobs:
1212
build-and-push-image:

AUTHORS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
- Fayyaz Minhas \<@foxtrotmike>
3131
- George Batchkala \<@GeorgeBatch>
3232
- Aleksandar Acic \<@aacic>
33+
- Esha Nasir \<@eshasadia>
3334
- Rob Jewsbury \<@R-J96>
3435
- Mohsin Bilal \<@mbhahsmi>
3536
- Musraf Basheer \<mbasheer04>

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ authors:
4444
given-names: "Shan E Ahmed"
4545
orcid: "https://orcid.org/0000-0002-1097-1738"
4646
title: "TIAToolbox as an end-to-end library for advanced tissue image analytics"
47-
version: 2.0.0 # TIAToolbox version
47+
version: 2.0.1 # TIAToolbox version
4848
doi: 10.5281/zenodo.5802442
4949
date-released: 2022-10-20
5050
url: "https://github.com/TissueImageAnalytics/tiatoolbox"

HISTORY.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# History
22

3+
## TIAToolbox v2.0.1 (2026-03-16)
4+
5+
### Bug Fixes and Other Changes
6+
7+
- Fixes filtering of tiles for post-processing within masked region (#1037).
8+
- Fixes Calculation of `max_inst_value` for Instances where overlap is empty (#1038)
9+
10+
**Full Changelog:** https://github.com/TissueImageAnalytics/tiatoolbox/compare/v2.0.0...v2.0.1
11+
12+
______________________________________________________________________
13+
314
## TIAToolbox v2.0.0 (2026-03-11)
415

516
### ✨ Major Updates and Feature Improvements
@@ -58,12 +69,24 @@ TIAViz now integrates Meta’s Segment Anything Model (SAM), enabling:
5869

5970
Simplified SAM usage (#968) streamlines its integration into analysis pipelines.
6071

72+
### Multichannel Image (mIF) Support in WSIReader
73+
74+
- **Multichannel image support** (PR #825) for immunofluorescence and non-RGB modalities
75+
76+
### 🖼️ WSI Registration Visualization in TIAViz
77+
78+
TIAViz now supports **interactive WSI registration visualisation**, allowing users to compare aligned slides in two modes:
79+
80+
- **Side‑by‑side view** — view fixed and moving WSIs next to each other for direct comparison
81+
- **Overlay mode** — blend registered WSIs with adjustable transparency for visual inspection of alignment quality
82+
83+
This feature enables intuitive, high‑resolution exploration of slide registration results directly within TIAViz.
84+
6185
### 🧩 Enhanced WSIReader & Metadata Handling
6286

6387
Major improvements include:
6488

6589
- More robust cross-vendor **metadata extraction** (#1001)
66-
- **Multichannel image support** (PR #825) for immunofluorescence and non-RGB modalities
6790
- Simplified Windows installation using `openslide-bin` (no manual DLL steps)
6891
- macOS Tileserver fix (#976)
6992
- Improved DICOM reading (#934)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
[tool.poetry]
2727
name = "TIA Centre"
28-
version = "2.0.0"
28+
version = "2.0.1"
2929
description = "test"
3030
authors = ["TIA Centre <TIA@warwick.ac.uk>"]
3131

requirements/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
aiohttp>=3.8.1, <=3.13.3
22
albumentations>=1.3.0, <=2.0.8
3-
bokeh>=3.8.2, <=3.8.2
3+
bokeh>=3.8.2, <=3.9.0
44
Click>=8.2.0, <=8.3.1
55
dask>=2026.1.2, <=2026.1.2
66
defusedxml>=0.7.1, <=0.7.1
77
filelock>=3.9.0, <=3.20.0
88
flask>=2.2.2, <=3.1.3
99
flask-cors>=4.0.0, <=6.0.2
1010
glymur>=0.12.7, <=0.14.7
11-
huggingface_hub>=0.33.3, <=1.6.0
11+
huggingface_hub>=0.33.3, <=1.7.1
1212
imagecodecs>=2022.9.26, <=2026.3.6
1313
ipywidgets>=8.1.7, <=8.1.8
1414
joblib>=1.1.1, <=1.5.3

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,6 @@
6363
test_suite="tests",
6464
tests_require=test_requirements,
6565
url="https://github.com/TissueImageAnalytics/tiatoolbox",
66-
version="2.0.0",
66+
version="2.0.1",
6767
zip_safe=False,
6868
)

tests/engines/test_multi_task_segmentor.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import json
66
import shutil
77
from pathlib import Path
8+
from types import SimpleNamespace
89
from typing import TYPE_CHECKING, Any, Final
910
from unittest.mock import MagicMock
1011

@@ -1029,7 +1030,6 @@ def test_get_tile_info_small_image_triggers_early_return(
10291030
10301031
"""
10311032
# --- Arrange ---
1032-
# Make image smaller than tile_shape
10331033
image_shape = [100, 100]
10341034

10351035
# Configure tile_shape so that tile_shape >= image_shape
@@ -1041,25 +1041,35 @@ def test_get_tile_info_small_image_triggers_early_return(
10411041
patch_input_shape=(200, 200),
10421042
)
10431043

1044-
# Patch PatchExtractor.get_coordinates to return predictable boxes
1044+
# Fake return from PatchExtractor.get_coordinates
10451045
fake_boxes = np.array([[0, 0, 100, 100]])
10461046
monkeypatch.setattr(
10471047
"tiatoolbox.tools.patchextraction.PatchExtractor.get_coordinates",
1048-
lambda **kwargs: (None, fake_boxes), # noqa: ARG005
1048+
lambda **_: (None, fake_boxes),
10491049
)
10501050

1051+
# Create a dummy dataset with required attributes
1052+
dummy_dataset = SimpleNamespace(mask_reader=None)
1053+
1054+
# Dummy dataloader-like container
1055+
dummy_dataloader = SimpleNamespace(dataset=dummy_dataset)
1056+
1057+
# Create a real instance and inject required fields
1058+
m = MultiTaskSegmentor(model="hovernet_fast-pannuke")
1059+
m._ioconfig = ioconfig
1060+
m.mask_padding = (0, 0, 0, 0)
1061+
m.dataloader = dummy_dataloader
1062+
10511063
# --- Act ---
1052-
result = MultiTaskSegmentor._get_tile_info(image_shape, ioconfig)
1064+
result = m._get_tile_info(image_shape=image_shape, wsi_proc_shape=image_shape)
10531065

10541066
# --- Assert ---
10551067
assert isinstance(result, list)
1056-
assert len(result) == 1 # early return path
1068+
assert len(result) == 1
1069+
10571070
boxes, flag = result[0]
10581071

1059-
# boxes should be exactly what we patched
10601072
assert np.array_equal(boxes, fake_boxes)
1061-
1062-
# flag should be zeros with shape (N, 4)
10631073
assert flag.shape == (1, 4)
10641074
assert np.all(flag == 0)
10651075

tests/models/test_arch_micronet.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def test_micronet_output(remote_sample: Callable, track_tmp_path: Path) -> None:
7272
svs_1_small = Path(remote_sample("svs-1-small"))
7373
micronet_output = Path(remote_sample("micronet-output"))
7474
model = "micronet-consep"
75-
batch_size = 64
75+
batch_size = 16
7676
num_workers = 0
7777

7878
ninst_seg = NucleusInstanceSegmentor(

tiatoolbox/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
__author__ = """TIA Centre"""
1818
__email__ = "TIA@warwick.ac.uk"
19-
__version__ = "2.0.0"
19+
__version__ = "2.0.1"
2020

2121
# This will set the tiatoolbox external data
2222
# default to be the user home folder, should work on both Window and Unix/Linux

0 commit comments

Comments
 (0)