Skip to content

Releases: TissueImageAnalytics/tiatoolbox

TIAToolbox 2.0.1

16 Mar 12:22
26f099f

Choose a tag to compare

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

TIAToolbox 2.0.0

11 Mar 21:56
2275bf0

Choose a tag to compare

TIAToolbox v2.0.0 (2026-03-11)

✨ Major Updates and Feature Improvements

⚙️ Engine Redesign (PR #578)

TIAToolbox 2.0.0 introduces a completely re-engineered inference engine designed for significant performance, scalability, and memory-efficiency improvements.

Key Enhancements

  • A modern processing stack built on Dask (parallel/distributed execution) and Zarr (chunked, out-of-core storage)
  • Standardised output formats across all engines:
    • Python dict
    • Zarr
    • AnnotationStore (SQLite-backed)
    • QuPath JSON
  • Cleaner runtime behavior with reduced warning noise and a unified progress bar
  • More predictable memory usage through chunked streaming
  • Broader test coverage across engine components

🗺️ Improved QuPath Support

Enhancements include:

  • Better handling of GeoJSON
  • Support for multipoint geometries (#841)
  • Improved semantic output helpers:
    • dict_to_store_semantic_segmentor (#926)
    • OME-TIFF probability overlays (#929)

🔬 New Nucleus Detection Engine

A dedicated nucleus detection pipeline has been added, built on the redesigned engine for improved accuracy and efficient large-scale processing.

🧠 KongNet Model Family

TIAToolbox 2.0.0 introduces KongNet, a high-performance architecture that achieved top results across multiple international challenges:

  • 🥇 1st place: MONKEY Challenge (overall detection)
  • 🥇 1st place: MIDOG (mitosis detection)
  • ⭐ Top-tier performance on PUMA

Multiple pretrained variants are available (CoNIC, PanNuke, MONKEY, PUMA, MIDOG), each with standardised IO configurations.

🧬 Expanded Foundation Model Support

Additional foundation models are now supported (#906), broadening the range of high-capacity architectures available for feature extraction and downstream tasks.

🖼️ SAM Segmentation in TIAViz

TIAViz now integrates Meta’s Segment Anything Model (SAM), enabling:

  • Interactive segmentation
  • Rapid region extraction
  • Exploratory annotation workflows

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

🖼️ Multichannel Image (mIF) Support in WSIReader

  • Multichannel image support (PR #825) for immunofluorescence and non-RGB modalities

🖼️ WSI Registration Visualization in TIAViz

TIAViz now supports interactive WSI registration visualisation, allowing users to compare aligned slides in two modes:

  • Side‑by‑side view — view fixed and moving WSIs next to each other for direct comparison
  • Overlay mode — blend registered WSIs with adjustable transparency for visual inspection of alignment quality

This feature enables intuitive, high‑resolution exploration of slide registration results directly within TIAViz.

🧩 Enhanced WSIReader & Metadata Handling

Major improvements include:

  • More robust cross-vendor metadata extraction (#1001)
  • Simplified Windows installation using openslide-bin (no manual DLL steps)
  • macOS Tileserver fix (#976)
  • Improved DICOM reading (#934)

☁️ New Cloud-Native Reader: FsspecJSONWSIReader (PR #897)

A new reader supporting fsspec-compatible filesystems, enabling seamless access to WSIs stored on:

  • S3
  • GCS
  • Azure
  • HPC clusters
  • Any fsspec-supported backend

This enables cloud-native and distributed data workflows.
Contributed by @aacic

🤗 Pretrained Models Migrated to Hugging Face

All pretrained models and sample assets have been migrated (#945, #983), improving:

  • Download reliability
  • Versioning and reproducibility
  • Caching and CI integration
  • Licensing clarity per model family

🛡️ Security, Compatibility & Tooling

🔐 Security & Dependency Updates

  • Dependency upgrades
  • Internal security improvements
  • Explicit workflow permissions added (#1021, #1023)

🐍 Python Version Support

  • Dropped: Python 3.9
  • Added: Python 3.13
  • Supported: Python 3.10–3.13
  • Updated CUDA wheel source to cu126

🛠️ Developer Tooling & CI/CD

  • Expanded mypy type-checking coverage (#912, #931, #935, #951)
  • Updated pre-commit hooks and general formatting
  • CI uses CPU-only PyTorch for faster, more reliable builds (#974, #979)
  • Updated pip install workflow (#1013)
  • Added new Python 3.13 Docker images (#1014, #1019)

🧹 Bug Fixes & Stability Improvements

  • Fixed multi-GPU behaviour with torch.compile (#923)
  • Fixed DICOM reading issue (#934)
  • Fixed annotation contour handling with holes (#956)
  • Fixed consecutive annotation load bug (#927)
  • Fixed SCCNN model issues (#970)
  • Fixed MapDe dist_filter shape issue (#914)
  • Improved notebook reliability on Colab (#1026#1030)
  • macOS TileServer issues resolved (#976)

🧭 Migration Guide for Users

🔄 Updating from 1.x to 2.0.0

Update calls: replace .predict() with .run()

# Old
results = segmentor.predict(imgs=[...], ioconfig=config)

# New
results = segmentor.run(images=[...], ioconfig=config)

Use patch_mode: replace mode="patch" with patch_mode=True and mode="tile" or "wsi" with patch_mode=False

# Old
results = segmentor.predict(imgs=[...], mode="patch", ioconfig=config)

# New
results = segmentor.run(images=[...], patch_mode=True, ioconfig=config)
# Old
results = segmentor.predict(imgs=[...], mode="wsi", ioconfig=config)

# New
results = segmentor.run(images=[...], patch_mode=False, ioconfig=config)

Use the new I/O configs

from tiatoolbox.models.engine.io_config import IOSegmentorConfig

config = IOSegmentorConfig(
    patch_input_shape=(256, 256),
    stride_shape=(240, 240),
    input_resolutions=[{"resolution": 0.25, "units": "mpp"}],
    save_resolution={"units": "baseline", "resolution": 1.0},
)

Specify the output format

results = segmentor.run(
    images=[...],
    ioconfig=ioconfig,
    output_type="zarr",  # or "dict", "annotationstore", "qupath"
    save_dir="outputs/",
)

Update imports

  • tiatoolbox.typingtiatoolbox.type_hints

Install requirements

  • Python 3.10+ required
  • On Windows: install OpenSlide via pip install openslide-bin

Full Changelog: v1.6.0...v2.0.0

TIAToolbox 1.6.0

12 Dec 12:32
e14a4fc

Choose a tag to compare

TIAToolbox v1.6.0 (2024-12-12)

Major Updates and Feature Improvements

  • Foundation Models Support via timm API (#856, contributed by @GeorgeBatch)
    • Introduced TimmBackbone for running additional PyTorch Image Models.
    • Tested models include UNI, Prov-GigaPath, and H-optimus-0.
    • Added an example notebook demonstrating feature extraction with foundation models.
    • timm added as a dependency.
  • Performance Enhancements with torch.compile (#716)
    • Improved performance on newer GPUs using torch.compile.
  • Multichannel Input Support in WSIReader (#742)
  • AnnotationStore Filtering for Patch Extraction (#822)
  • Python 3.12 Support
  • Deprecation of Python 3.8 Support
  • CLI Response Time Improvements (#795)

API Changes

  • Device Specification Update (#882)
    • Replaced has_gpu with device for specifying GPU or CPU usage, aligning with PyTorch's Model.to() functionality.
  • Windows Compatibility Enhancement (#769)
    • Replaced POWER with explicit multiplication.

Bug Fixes and Other Changes

  • TIFFWSIReader Bound Reading Adjustment (#777)
    • Fixed read_bound to use adjusted bounds.
    • Reduced code complexity in WSIReader (#814).
  • Annotation Rendering Fixes (#813)
    • Corrected rendering of annotations with holes.
  • Non-Tiled TIFF Support in WSIReader (#807, contributed by @GeorgeBatch)
  • HoVer-Net Documentation Update (#751)
    • Corrected class output information.
  • Citation File Fix for cffconvert (#869, contributed by @Alon-Alexander)
  • Bokeh Compatibility Updates
    • Updated bokeh_app for compatibility with bokeh>=3.5.0.
    • Switched from size to radius for bokeh>3.4.0 compatibility (#796).
  • JSON Extraction Fixes (#772)
    • Restructured SQL expression construction for JSON properties with dots in keys.
  • VahadaneExtractor Warning (#871)
    • Added warning due to changes in scikit-learn>0.23.0 dictionary learning (#382).
  • PatchExtractor Error Message Refinement (#883)
  • Immutable Output Fix in WSIReader (#850)

Development-Related Changes

  • Mypy Checks Added
    • Applied to utils, tools, data, annotation, and cli/common.
  • ReadTheDocs PDF Build Deprecation
  • Formatter Update
    • Replaced black with ruff-format.
  • Dependency Removal
    • Removed jinja2.
  • Test Environment Update
    • Updated to Ubuntu 24.04.
  • Conda Environment Workflow Update
    • Implemented micromamba setup.
  • Codecov Reporting Fix (#811)
    Full Changelog: v1.5.1...v1.6.0

TIAToolbox 1.5.1

16 Dec 11:25
490be26

Choose a tag to compare

1.5.1 (2023-12-16)

Development related changes

  • Specifies compatible Python versions
    • Fixes tiatoolbox-feedstock build for conda-forge release #763

Full Changelog: v1.5.0...v1.5.1

TIAToolbox 1.5.0

15 Dec 22:30
bba59ba

Choose a tag to compare

1.5.0 (2023-12-15)

Major Updates and Feature Improvements

  • Adds the bokeh visualization tool. #684
    • The tool allows a user to launch a server on their machine to visualise whole slide images, overlay the results of deep learning algorithms or to select a patch from whole slide image and run TIAToolbox deep learning engines.
    • This tool powers the TIA demos server. For details please see https://tiademos.dcs.warwick.ac.uk/.
  • Extends Annotation to Support Init from WKB #639
  • Adds IOConfig for NuClick in pretrained_model.yaml #709
  • Adds functions to save the TIAToolbox Engine outputs to Zarr and AnnotationStore files. #724
  • Adds Support for QuPath Annotation Imports #721

Changes to API

  • Adds model.to(device) and model.load_model_from_file() functionality to make it compatible with PyTorch API. #733
  • Replaces pretrained with weights to make the engines compatible with the new PyTorch API. #621
  • Adds support for high-level imports for various utility functions and classes such as WSIReader, PatchPredictor and imread #606, #607,
  • Adds tiatoolbox.typing for type hints. #619
  • Fixes incorrect file size saved by save_tiles, issue with certain WSIs raised by @TomastpPereira
  • TissueMasker transform now returns mask instead of a list. #748

Bug Fixes and Other Changes

  • Fixes pixman incompability error on Colab #601
  • Removes shapely.speedups. The module no longer has any affect in Shapely >=2.0. #622
  • Fixes errors in the slidegraph example notebook #608
  • Fixes bugs in WSI Registration #645, #670, #693
  • Fixes the situation where PatchExtractor.get_coords() can return patch coords which lie fully outside the bounds of a slide. #712
  • Fixes #738 raised by @xiachenrui

Development related changes

  • Replaces flake8 and isort with ruff #625, #666
  • Adds mypy checks to root and utils package. This will be rolled out in phases to other modules. #723
  • Adds a module to detect file types using magic number/signatures #616
  • Uses poetry for version updates instead of bump2version. #638
  • Removes setup.cfg and uses pyproject.toml for project configurations.
  • Reduces runtime for some unit tests e.g., #627, #630, #631, #629
  • Reuses models and datasets in tests on GitHub actions by utilising cache #641, #644
  • Set up parallel tests locally #671

Full Changelog: v1.4.0...v1.5.0

TIAToolbox 1.4.1

25 Jul 14:40
51f504b

Choose a tag to compare

Bug Fixes and Other Changes

  • Fix dictionary changed size Error #626 (#605)

Full Changelog: v1.4.0...v1.4.1

TIAToolbox 1.4.0

05 May 12:53
5231f9d

Choose a tag to compare

1.4.0 (2023-04-24)

Major Updates and Feature Improvements

  • Adds Python 3.11 support [experimental] #500
  • Removes Python 3.7 support
    • This allows upgrading all the dependencies which were dependent on an older version of Python.
  • Adds Neighbourhood Querying Support To AnnotationStore #540
    • This enables easy and efficient querying of annotations within a neighbourhood of other annotations.
  • Adds MultiTaskSegmentor engine #424
  • Fixes an issue with stain augmentation to apply augmentation to only tissue regions.
  • Filters logger output to stdout instead of stderr.
  • Allows import of some modules at higher level for improved usability
    • WSIReader can now be imported as from tiatoolbox.wsicore import WSIReader
    • WSIMeta can now be imported as from tiatoolbox.wsicore import WSIMeta
    • HoVerNet, HoVerNetPlus, IDaRS, MapDe, MicroNet, NuClick, SCCNN can now be imported as from tiatoolbox.models import HoVerNet, HoVerNetPlus, IDaRS, MapDe, MicroNet, NuClick, SCCNN
  • Improves PatchExtractor performance. Updates WSIPatchDataset to be consistent. #571
  • Updates documentation for License for clarity on source code and model weights license.

Changes to API

  • Updates SCCNN architecture to make it consistent with other models. #544

Bug Fixes and Other Changes

  • Fixes Parsing Missing Omero Version NGFF Metadata #568
  • Fixes reading of DICOM WSIs at the correct level #564
  • Fixes scipy, matplotlib, scikit-image deprecated code
  • Fixes breaking changes in DICOMWSIReader to make it compatible with latest wsidicom version. #539, #580
  • Updates shapely dependency to version >=2.0.0 and fixes any breaking changes.
  • Fixes bug with DictionaryStore.bquery and geometry=None, i.e. only a where predicate given.
  • Fixes local tests for Windows/Linux
  • Fixes flake8, deepsource errors.
  • Uses logger instead of warnings and print statements to properly log runs.

Development related changes

  • Upgrades dependencies which are dependent on Python 3.7
  • Moves requirements*.txt files to requirements folder
  • Removes tox
  • Uses pyproject.toml for bdist_wheel, pytest and isort
  • Adds joblib and numba as dependencies.

Full Changelog: v1.3.3...v1.4.0

TIAToolbox 1.3.3

02 Mar 13:39
d548b33

Choose a tag to compare

Major Updates and Feature Improvements

  • Restricts dependency versions for long term stability of the current version

Changes to API

None

Bug Fixes and Other Changes

  • Fix bug related to reading scikit-image

Development related changes

  • Restricts dependency versions for compatibility

TIAToolbox 1.3.2

17 Feb 13:43
24390e5

Choose a tag to compare

Major Updates and Feature Improvements

  • None

Changes to API

  • None

Bug Fixes and Other Changes

  • Fix bug related to reading DICOM files

Development related changes

  • Restricts wsidicom version to <0.7.0 for compatibility

TIAToolbox 1.3.1

20 Dec 12:40

Choose a tag to compare

Major Updates and Feature Improvements

  • Adds NuClick architecture #449
  • Adds Annotation Store Reader #476
  • Adds DFBR method for registering pair of images #510

Changes to API

  • Adds a sample SVS loading function tiatoolbox.data.small_svs() to the data module #517

Bug Fixes and Other Changes

  • Simplifies example notebook for image reading for better readability
  • Restricts Shapely version to <2.0.0 for compatibility

Development related changes

  • Adds GitHub workflow for automatic generation of docker image
  • Updates dependencies
  • Updates bump2version config
  • Enables flake8 E800 checks for commented codes.
  • Fixes several errors generated by DeepSource.
  • Prevent test dumping file to root
  • Removes duplicate functions to generate parameterized test scenarios

Note: Please note that Python 3.7 support will be removed after this release. We plan to add support for Python 3.11 in the next release.