Releases: TissueImageAnalytics/tiatoolbox
Releases · TissueImageAnalytics/tiatoolbox
TIAToolbox 1.2.0
1.2.0 (2022-07-05)
Major Updates and Feature Improvements
- Adds support for Python 3.10
- Adds short description for IDARS algorithm #383
- Adds support for NGFF v0.4 OME-ZARR.
- Adds CLI for launching tile server.
Changes to API
- Renames
stainnorm_target()function tostain_norm_target(). - Removes
get_wsireader - Replaces the custom PlattScaler in
tools/scale.pywith the regular Scikit-Learn LogisticRegression.
Bug Fixes and Other Changes
- Fixes bugs in UNET architecture.
- Number of channels in Batchnorm argument in the decoding path to match with the input channels.
- Padding
0creates feature maps in the decoder part with the same size as encoder.
- Fixes linter issues and typos
- Fixes incorrect output with overlap in
predictor.merge_predictions()andreturn_raw=True- Thanks to @paulhacosta for raising #356, Fixed by #358.
- Fixes errors with JP2 read. Checks input path exists.
- Fixes errors with torch upgrade to 1.12.
Development related changes
- Adds pre-commit hooks for consistency across the repo.
- Sets up GitHub Actions Workflow.
- Travis CI will be removed in future release.
TIAToolbox 1.1.0
- Updates AUTHORS.md
Major Updates and Feature Improvements
- Adds DICOM support.
- Updates license to more permissive BSD 3-clause.
- Adds MicroNet model.
- Improves support for
tifffiles.- Adds a check for tiles in a TIFF file when opening.
- Uses OpenSlide to read a TIFF if it has tiles instead of OpenCV (VirtualWSIReader).
- Adds a fallback to tifffile if it is tiled but openslide cannot read it
(e.g. jp2k or jpegxl tiles).
- Adds support for multi-channel images (HxWxC).
- Fixes performance issues in
semantic_segmentor.py.- Performance gain measurement: 21.67s (new) vs 45.564 (old) using a 4k x 4k WSI.
- External Contribution: @ByteHexler.
- Adds benchmark for Annotations Store.
Changes to API
- None
Bug Fixes and Other Changes
- Enhances the error messages to be more informative.
- Fixes Flake8 Errors, typos.
- Fixes patch predictor models based after fixing a typo.
- Bug fixes in Graph functions.
- Adds documentation for docker support.
- General tidying up of docstrings.
- Adds metrics to readthedocs/docstrings for pretrained models.
Development related changes
- Adds
pydicomandwsidicomas dependency. - Updates dependencies.
- Fixes Travis detection and makes improvements to run tests faster on Travis.
- Adds Dependabot to automatically update dependencies.
- Improves CLI definitions to make it easier to integrate new functions.
- Fixes compile options for test_annotation_stores.py
TIAToolbox 1.0.1
Major Updates and Feature Improvements
- Updates dependencies for conda recipe #262
- External Contribution : @sarthakpati
Changes to API
- None
Bug Fixes and Other Changes
- Adds User Warning For Missing SQLite Functions
- Fixes Pixman version check errors
- Fixes empty query in instance segmentor
Development related changes
- Fixes flake8 linting issues and typos
- Conditional pytest.skipif to skip GPU tests on travis while running them locally or elsewhere
TIAToolbox 1.0.0
Major Updates and Feature Improvements
- Adds nucleus instance segmentation base class
- Adds HoVerNet architecture
- Adds multi-task segmentor HoVerNet+ model
- Adds IDaRS pipeline
- Adds SlideGraph pipeline
- Adds PCam patch classification models
- Adds support for stain augmentation feature
- Adds classes and functions under
tiatoolbox.tools.graphto enable construction of graphs in a format which can be used with PyG (PyTorch Geometric). - Add classes which act as a mutable mapping (dictionary like) structure and enables efficient management of annotations. (#135)
- Adds example notebook for adding advanced models
- Adds classes which can generate zoomify tiles from a WSIReader object.
- Adds WSI viewer using Zoomify/WSIReader API (#212)
- Adds README to example page for clarity
- Adds support to override or specify mpp and power
Changes to API
- Replaces
models.controllerAPI withmodels.engine - Replaces
CNNPatchPredictorwithPatchPredictor
Bug Fixes and Other Changes
- Fixes Fix
filter_coordinatesread wrong resolutions for patch extraction - For
PatchPredictorioconfigwill supersede everything- if
ioconfigis not provided- If
modelis pretrained (defined inpretrained_model.yaml)- Use the yaml ioconfig
- Any other input patch reading arguments will overwrite the yaml ioconfig (at the same keyword).
- If
modelis not defined, all input patch reading arguments must be provided else exception will be thrown.
- If
- Improves performance of mask based patch extraction
Development related changes
- Improve tests performance for Travis runs
- Adds feature detection mechanism to detect the platform and installed packages etc.
- On demand imports for some libraries for performance
- Improves performance of mask based patch extraction
TIAToolbox 0.8.0
Major Updates and Feature Improvements
- Adds
SemanticSegmentorwhich is Predictor equivalent for semantic segmentation. - Add
TIFFWSIReaderclass to support OMETiff reading. - Adds
FeatureExtractorAPI to controller. - Adds WSI Serialization Dataset which support changing parallel workers on the fly. This would reduce the time spent to create new worker for every WSI/Tile (costly).
- Adds IOState data class to contain IO information for loading input to model and assembling model output back to WSI/Tile.
- Minor updates for
get_coordinatesto pave the way for getting patch IO for segmentation. - Migrates old code to new variable names (patch extraction, patch wsi model).
- Change in API from
pretrained_weighttopretrained_weights. - Adds cli for semantic segmentation.
- Update python notebooks to add
read_rectandread_boundsexamples withmppread.
Changes to API
- Adds
WSIReader.open.get_wsireaderwill deprecate in the next release. Please useWSIReader.openinstead. - CLI is now POSIX compatible
- Replaces underscores in variable names with hyphens
- Models API updated to use
pretrained_weightsinstead ofpretrained_weight. - Move string_to_tuple to tiatoolbox/utils/misc.py
Bug Fixes and Other Changes
- Fixes README git clone instructions.
- Fixes stain normalisation due to changes in sklearn.
- Fixes a test in tests/test_slide_info
- Fixes readthedocs documentation issues
Development related changes
- Adds dependencies for tiffile, imagecodecs, zarr.
- Adds more stringent pre-commit checks
- Moved local test files into
tiatoolbox/data. - Fixed
Manifest.iniand addedtiatoolbox/data. This means that this directory will be downloaded with the package. - Using
pkg_resourcesto properly load bundled resources (e.g.target_image.png) intiatoolbox.data. - Removed duplicate code in
conftest.pyfor downloading remote files. This is now intiatoolbox.data._fetch_remote_file. - Fixes errors raised by new flake8 rules.
- Remove leading underscores from fixtures.
- Rename some remote sample files to make more sense.
- Moves all cli commands/options from cli.py to cli_commands to make it clean and easier to add new commands
- Removes redundant tests
- Updates to new GitHub organisation name in the repo
- Fixes related links
TIAToolbox 0.7.0
Major and Feature Improvements
- Drops support for python 3.6
- Update minimum requirement to python 3.7
- Adds support for python 3.9
- Adds
modelsbase to the repository. Currently, PyTorch models are supported. New custom models can be added. The tiatoolbox also supports using custom weights to pre-existing built-in models.- Adds
classificationpackage and CNNPatchPredictor which takes predefined model architecture and pre-trained weights as input. The pre-trained weights for classification using kather100k data set is automatically downloaded if no weights are provided as input.
- Adds
- Adds mask-based patch extraction functionality to extract patches based on the regions that are highlighted in the
input_mask. If'auto'option is selected, a tissue mask is automatically generated for theinput_imageusing tiatoolboxTissueMaskerfunctionality. - Adds visualisation module to overlay the results of an algorithm.
Changes to API
- Command line interface for stain normalisation can be called using the keyword
stain-norminstead ofstainnorm - Replaces
FixedWindowPatchExtractorwithSlidingWindowPatchExtractor. - get_patchextractor takes the
slidingwindowas an argument. - Depreciates
VariableWindowPatchExtractor
Bug Fixes and Other Changes
- Significantly improved python notebook documentation for clarity, consistency and ease of use for non-experts.
- Adds detailed installation instructions for Windows, Linux and Mac
Development related changes
- Moves flake8 above pytest in the
travis.ymlscript stage. - Adds
set -eat the start of the script stage intravis.ymlto cause it to exit on error and (hopefully) not run later parts of the stage. - Readthedocs related changes
- Uses
requirements.txtin.readthedocs.yml - Uses apt-get installation for openjpeg and openslide
- Removes conda build on readthedocs build
- Uses
- Adds extra checks to pre-commit, e.g., import sorting, spellcheck etc. Detailed list can be found on this commit.
TIAToolbox 0.6.0
Major and Feature Improvements
- Add
TissueMaskerclass to allow tissue masking usingOtsuandMorphologicalprocessing. - Add helper/convenience method to WSIReader(s) to produce a mask. Add reader object to allow reading a mask conveniently as if it were a WSI i.e., use same location and resolution to read tissue area and mask area.
- Add
PointsPatchExtractorreturns patches that can be used by classification models. Takescsv,jsonorpd.DataFrameand returns patches corresponding to each pixel location. - Add feature
FixedWindowPatchExtractorto run sliding window deep learning algorithms. - Add example notebooks for patch extraction and tissue masking.
- Update readme with improved instructions to use the toolbox. Make the README file somewhat more comprehensible to beginners, particularly those with not much background or experience.
Changes to API
tiatoolbox.dataloaderreplaced bytiatoolbox.wsicore
Bug Fixes and Other Changes
- Minor bug fixes
Development-related changes
- Improve unit test coverage.
- Move test data to tiatoolbox server.
TIAToolbox 0.5.2
Bug Fixes and Other Changes
- Fix URL for downloading test JP2 image in test config (conftest.py) and notebooks.
- Update readme with new logo.
TIAToolbox 0.5.1
Bug Fixes and Other Changes
- Adds
scikit-imageas dependency insetup.py - Updates notebooks to install dependencies
TIAToolbox 0.5.0
Major and Feature Improvements
- Adds
get_wsireader()to return appropriate WSIReader. - Adds new functions to allow reading of regions using WSIReader at different resolutions given in units of:
- microns per-pixel (mpp)
- objective lens power (power)
- pixels-per baseline (baseline)
- resolution level (level)
- Adds functions for reading regions are
read_boundsandread_rect.read_boundstakes a tuple (left, top, right, bottom) of coordinates in baseline (level 0) reference frame and returns a region bounded by those.read_recttakes one coordinate in baseline reference frame and an output size in pixels.
- Adds
VirtualWSIReaderas a subclass of WSIReader which can be used to read visual fields (tiles).VirtualWSIReaderaccepts ndarray or image path as input.
- Adds MPP fall back to standard TIFF resolution tags with warning.
- If OpenSlide cannot determine microns per pixel (
mpp) from the metadata, checks the TIFF resolution units (TIFF tags:ResolutionUnit,XResolutionandYResolution) to calculate MPP. Additionally, add function to estimate missing objective power if MPP is known of derived from TIFF resolution tags.
- If OpenSlide cannot determine microns per pixel (
- Estimates missing objective power from MPP with warning.
- Adds example notebooks for stain normalisation and WSI reader.
- Adds caching to slide info property. This is done by checking if a private
self._m_infoexists and returning it if so, otherwiseself._infois called to create the info for the first time (or to force regenerating) and the result is assigned toself._m_info. This could in future be made much simpler with thefunctools.cached_propertydecorator in Python 3.8+. - Adds pre processing step to stain normalisation where stain matrix encodes colour information from tissue region only.
Changes to API
read_regionrefactored to be backwards compatible with openslide arguments.slide_infochanged toinfo- Updates WSIReader which only takes one input
WSIReaderinput_pathvariable changed toinput_img- Adds
tile_read_size,tile_objective_valueandoutput_dirto WSIReader.save_tiles() - Adds
tile_read_sizeas a tuple transforms.imresizetakes additional argumentsoutput_sizeand interpolation method 'optimise' which selectscv2.INTER_AREAforscale_factor<1andcv2.INTER_CUBICforscale_factor>1
Bug Fixes and Other Changes
- Refactors glymur code to use index slicing instead of deprecated read function.
- Refactors thumbnail code to use
read_boundsand be a member of the WSIReader base class. - Updates
README.mdto clarify installation instructions. - Fixes slide_info.py for changes in WSIReader API.
- Fixes save_tiles.py for changes in WSIReader API.
- Updates
example_wsiread.ipynbto reflect the changes in WSIReader. - Adds Google Colab and Kaggle links to allow user to run notebooks directly on colab or kaggle.
- Fixes a bug in taking directory input for stainnorm operation for command line interface.
- Pins
numpy<=1.19.3to avoid compatibility issues with opencv. - Adds
scikit-imageorjupyterlabas a dependency.
Development related changes
- Moved
test_wsireader_jp2_save_tilesto test_wsireader.py. - Change recipe in Makefile for coverage to use pytest-cov instead of coverage.
- Runs travis only on PR.
- Adds pre-commit for easy setup of client-side git hooks for black code formatting and flake8 linting.
- Adds flake8-bugbear to pre-commit for catching potential deepsource errors.
- Adds constants for test regions in
test_wsireader.py. - Rearranges
usage.rstfor better readability. - Adds
pre-commit,flake8,flake8-bugbear,black,pytest-covandrecommonmarkas dependency.
Co-authored-by: Shan E Ahmed Raza @shaneahmed, John Pocock @John-P, Simon Graham @simongraham, Dang Vu @vqdang, Mostafa Jahanifar @mostafajahanifar Srijay Deshpande @Srijay-lab, Saad Bashir @rajasaad