Package: tiatoolbox
TIA ToolboxComputational Pathology Toolbox developed at the TIA CentreGetting StartedTIAToolbox is a computational pathology toolbox developed by TIA Centre that provides an end-to-end API for pathology image analysis using best practices. It is based onPyTorch, a popular deep learning framework that enables efficient and flexible implementation of state-of-the-art algorithms. TIAToolbox supports many features through a command-line interface and can integrate with standard PyTorch modules. It also offers tools for data loading, pre-processing, model inference, post-processing, and visualization. Whether you are a computational, biomedical, or clinical researcher, TIAToolbox can help you get started in digital pathology with minimal effort.All UsersThis package is for those interested in digital pathology: including graduate students, medical staff, members of the TIA Centre and of PathLAKE, and anyone, anywhere, who may find it useful. We will continue to improve this package, taking account of developments in pathology, microscopy, computing and related disciplines. Please send comments and criticisms totia@dcs.warwick.ac.uk.tiatoolboxis a multipurpose name that we use for 1) a certain computer program, 2) a Python package of related programs, created by us at the TIA Centre to help people get started in Digital Pathology, 3) this repository, 4) a certain virtual environment.DevelopersAnyone wanting to contribute to this repository, please first look at ourWikiand at our web page forcontributors. See also thePrepare for developmentsection of this document.Links, if neededThebashshell is available on all commonly encountered platforms. Commands in this README are in bash. Windows users can use the command prompt to install conda and python packages.condais a management system for software packages andvirtual environments. To getconda, downloadAnaconda, which includes hundreds of the most useful Python packages, using 2GB disk space. Alternatively,minicondauses 400MB, and packages can be added as needed.GitHubis powered by the version control systemgit, which has many users and uses. In GitHub, it is used to track versions of code and other documents.Examples TasterClick hereforjupyter notebooks, hosted on the web, with demos oftiatoolbox. All necessary resources to run the notebooks are remotely provided, so you don't need to have Python installed on your computer.Click on a filename with suffix.ipynband the notebook will open in your browser.Click on one of the two blue checkboxes in your browser window labelled eitherOpen in ColaborOpen in Kaggle:colabandkaggleare websites providing free-of-charge platforms for running jupyter notebooks.Operate the notebook in your browser, editing, inserting or deleting cells as desired.Changes you make to the notebook will last no longer than your colab or kaggle session.Install Python packageIf you wish to use our programs, perhaps without developing them further, run the commandpip install tiatoolboxorpip install --ignore-installed --upgrade tiatoolboxto upgrade from an existing installation.
Detailed installation instructions can be found in thedocumentation.To understand better how the programs work, study the jupyter notebooks referred to under the headingExamples Taster.Command Linetiatoolbox supports various features through command line. For more information, please trytiatoolbox --helpPrepare for developmentPrepare a computer as a convenient platform for further development of the Python packagetiatoolboxand related programs as follows.Installpre-requisite softwareOpen a terminal window$cd<future-home-of-tiatoolbox-directory>Download a complete copy of thetiatoolbox.$gitclonehttps://github.com/TissueImageAnalytics/tiatoolbox.gitChange directory totiatoolbox$cdtiatoolboxCreate virtual environment for TIAToolbox using$condacreate-ntiatoolbox-devpython=3.8# select version of your choice$condaactivatetiatoolbox-dev$pipinstall-rrequirements/requirements_dev.txtor$condaenvcreate-frequirements/requirements.dev.conda.yml# for linux/mac only.$condaactivatetiatoolbox-devTo use the packages installed in the environment, run the command:$condaactivatetiatoolbox-devLicenseThe source code TIA Toolbox (tiatoolbox) as hosted on GitHub is released under theBSD-3-Clause license. The full text of the licence is included inLICENSE.Models weights are dependent on the datasets that they were trained on. Please refer to thedocumentationfor more details.Cite this repositoryIf you find TIAToolbox useful or use it in your research, please consider citing our paper:@article{
    Pocock2022,
    author = {Pocock, Johnathan and Graham, Simon and Vu, Quoc Dang and Jahanifar, Mostafa and Deshpande, Srijay and Hadjigeorghiou, Giorgos and Shephard, Adam and Bashir, Raja Muhammad Saad and Bilal, Mohsin and Lu, Wenqi and Epstein, David and Minhas, Fayyaz and Rajpoot, Nasir M and Raza, Shan E Ahmed},
    doi = {10.1038/s43856-022-00186-5},
    issn = {2730-664X},
    journal = {Communications Medicine},
    month = {sep},
    number = {1},
    pages = {120},
    publisher = {Springer US},
    title = {{TIAToolbox as an end-to-end library for advanced tissue image analytics}},
    url = {https://www.nature.com/articles/s43856-022-00186-5},
    volume = {2},
    year = {2022}
}History1.5.1 (2023-12-16)Development related changesSpecifies compatible Python versionsFixestiatoolbox-feedstockbuild for conda-forge release #763Full Changelog:https://github.com/TissueImageAnalytics/tiatoolbox/compare/v1.5.0...v1.5.11.5.0 (2023-12-15)Major Updates and Feature ImprovementsAdds the bokeh visualization tool. #684The 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 seehttps://tiademos.dcs.warwick.ac.uk/.Extends Annotation to Support Init from WKB #639AddsIOConfigfor NuClick inpretrained_model.yaml#709Adds functions to save the TIAToolbox Engine outputs to Zarr and AnnotationStore files. #724Adds Support for QuPath Annotation Imports #721Changes to APIAddsmodel.to(device)andmodel.load_model_from_file()functionality to make it compatible with PyTorch API. #733Replacespretrainedwithweightsto make the engines compatible with the new PyTorch API. #621Adds support for high-level imports for various utility functions and classes such asWSIReader,PatchPredictorandimread#606, #607,Addstiatoolbox.typingfor type hints. #619Fixes incorrect file size saved bysave_tiles, issue with certain WSIs raised by @TomastpPereiraTissueMasker transform now returns mask instead of a list. #748Fixes #732Bug Fixes and Other ChangesFixespixmanincompability error on Colab #601Removesshapely.speedups. The module no longer has any affect in Shapely >=2.0. #622Fixes errors in the slidegraph example notebook #608Fixes bugs in WSI Registration #645, #670, #693Fixes the situation where PatchExtractor.get_coords() can return patch coords which lie fully outside the bounds of a slide. #712Fixes #710Fixes #738 raised by @xiachenruiDevelopment related changesReplacesflake8andisortwithruff#625, #666Addsmypychecks torootandutilspackage. This will be rolled out in phases to other modules. #723Adds a module to detect file types using magic number/signatures #616Usespoetryfor version updates instead ofbump2version. #638Removessetup.cfgand usespyproject.tomlfor project configurations.Reduces runtime for some unit tests e.g., #627, #630, #631, #629Reuses models and datasets in tests on GitHub actions by utilising cache #641, #644Set up parallel tests locally #671Full Changelog:https://github.com/TissueImageAnalytics/tiatoolbox/compare/v1.4.0...v1.5.01.4.1 (2023-07-25)Bug Fixes and Other ChangesFix dictionary changed size Error #626 (#605)1.4.0 (2023-04-24)Major Updates and Feature ImprovementsAdds Python 3.11 support [experimental] #500Python 3.11 is not fully supported bypytorchhttps://github.com/pytorch/pytorch/issues/86566andopenslidehttps://github.com/openslide/openslide-python/pull/188Removes Python 3.7 supportThis allows upgrading all the dependencies which were dependent on an older version of Python.Adds Neighbourhood Querying Support To AnnotationStore #540This enables easy and efficient querying of annotations within a neighbourhood of other annotations.AddsMultiTaskSegmentorengine #424Fixes an issue with stain augmentation to apply augmentation to only tissue regions.#546 contributed by @navidstuvFilters logger output to stdout instead of stderr.Fixes #255Allows import of some modules at higher level for improved usabilityWSIReadercan now be imported asfrom tiatoolbox.wsicore import WSIReaderWSIMetacan now be imported asfrom tiatoolbox.wsicore import WSIMetaHoVerNet,HoVerNetPlus,IDaRS,MapDe,MicroNet,NuClick,SCCNNcan now be imported as `from tiatoolbox.models import HoVerNet, HoVerNetPlus, IDaRS, MapDe, MicroNet, NuClick, SCCNNImprovesPatchExtractorperformance. UpdatesWSIPatchDatasetto be consistent. #571Updates documentation forLicensefor clarity on source code and model weights license.Changes to APIUpdates SCCNN architecture to make it consistent with other models. #544Bug Fixes and Other ChangesFixes Parsing Missing Omero Version NGFF Metadata #568Fixes #535 raised by @benkamphausFixes reading of DICOM WSIs at the correct level #564Fixes #529Fixesscipy,matplotlib,scikit-imagedeprecated codeFixes breaking changes inDICOMWSIReaderto make it compatible with latestwsidicomversion. #539, #580Updatesshapelydependency to version >=2.0.0 and fixes any breaking changes.Fixes bug withDictionaryStore.bqueryandgeometry=None, i.e. only a where predicate given.Partly Fixes #532 raised by @blagininFixes local tests for Windows/LinuxFixesflake8,deepsourceerrors.Usesloggerinstead ofwarningsandprintstatements to properly log runs.Development related changesUpgrades dependencies which are dependent on Python 3.7Movesrequirements*.txtfiles torequirementsfolderRemovestoxUsespyproject.tomlforbdist_wheel,pytestandisortAddsjoblibandnumbaas dependencies.1.3.3 (2023-03-02)Major Updates and Feature ImprovementsRestricts dependency versions for long term stability of the current versionChanges to APINoneBug Fixes and Other ChangesFix bug related to reading scikit-imageDevelopment related changesRestricts dependency versions for compatibility1.3.2 (2023-02-17)Major Updates and Feature ImprovementsNoneChanges to APINoneBug Fixes and Other ChangesFix bug related to reading DICOM filesDevelopment related changesRestricts wsidicom version to <0.7.0 for compatibility1.3.1 (2022-12-20)Major Updates and Feature ImprovementsAddsNuClickarchitecture #449Adds Annotation Store Reader #476AddsDFBRmethod for registering pair of images #510Changes to APIAdds a sample SVS loading functiontiatoolbox.data.small_svs()to the data module #517Bug Fixes and Other ChangesSimplifies example notebook for image reading for better readabilityRestricts Shapely version to <2.0.0 for compatibilityDevelopment related changesAdds GitHub workflow for automatic generation of docker imageUpdates dependenciesUpdates bump2version configEnables flake8 E800 checks for commented codes.Fixes several errors generated by DeepSource.Prevent test dumping file to rootRemoves duplicate functions to generate parameterized test scenarios1.3.0 (2022-10-20)Major Updates and Feature ImprovementsAdds an AnnotationTileGenerator and AnnotationRenderer which allows serving of tiles rendered directly from an annotation store.AddsDFBRregistration model and jupyter notebook exampleAdds DICE metricAddsSCCNNarchitecture. [read the docs]AddsMapDearchitecture. [read the docs]Adds support for reading MPP metadata from  NGFF v0.4Adds enhancements to tiatoolbox.annotation.storage that are useful when using an AnnotationStore for visualization purposes.Changes to APINoneBug Fixes and Other ChangesFixes colorbar_params #410Fixes Jupyter notebooks for better read the docs renderingFixes typos, metadata and linksFixes nucleus_segmentor_engine for boundary artefactsFixes the colorbar cropping in testsAdds citation in README.md and CITATION.cff to Nature Communications Medicine paperFixes a bug #452 raised by @rogertrullo  where only the numerator of the TIFF resolution tags was being read.Fixes HoVer-Net+ post-processing to be inline with original work.Fixes a bug where an exception would be raised if the OME XML is missing objective power.Development related changesUses Furo theme for readthedocsReplaces nbgallery and nbsphinx with myst-nb for jupyter notebook renderingUses myst for markdown parsingUses requirements.txt to define dependencies for requirements consistencyAdds notebook AST pre-commit hookAdds check to validate python examples in the codeAdds check to resolve importsFixes an error in a docstring which triggered the failing test.Adds pre-commit hooks to format markdown and notebook markdownAdds pip install workflow to resolve dependencies when requirements file is updatedImproves tiatoolbox import using LazyLoader1.2.1 (2022-07-07)Major Updates and Feature ImprovementsNoneChanges to APINoneBug Fixes and Other ChangesFixes issues with dependencies.Adds flask to dependencies.Fixes missing file in the python package.Clarifies help string for show-wsi option.Development related changesRemoves Travis CI.GitHub Actions will be used instead.Adds pre-commit hooks to check requirements consistency.Adds GitHub Action to resolve conda environment checks on Windows and Ubuntu.1.2.0 (2022-07-05)Major Updates and Feature ImprovementsAdds support for Python 3.10Adds short description for IDARS algorithm #383Adds support for NGFF v0.4OME-ZARR.Adds CLI for launching tile server.Changes to APIRenamesstainnorm_target()function tostain_norm_target().Removesget_wsireaderReplaces the custom PlattScaler intools/scale.pywith the regular Scikit-LearnLogisticRegression.Bug Fixes and Other ChangesFixes bugs in UNET architecture.Number of channels in Batchnorm argument in the decoding path to match with the input channels.Padding0creates feature maps in the decoder part with the same size as encoder.Fixes linter issues and typosFixes incorrect output with overlap inpredictor.merge_predictions()andreturn_raw=TrueThanks 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 changesAdds pre-commit hooks for consistency across the repo.Sets up GitHub Actions Workflow.Travis CI will be removed in future release.1.1.0 (2022-05-07)Major Updates and Feature ImprovementsAdds DICOM Support.Updates license to more permissive BSD 3-clause.Addsmicronetmodel.Improves support fortifffiles.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 insemantic_segmentor.py.Performance gain measurement: 21.67s (new) vs 45.564 (old) using a 4k x 4k WSI.External Contribution from @ByteHexler.Adds benchmark for Annotations Store.Changes to APINoneBug Fixes and Other ChangesEnhances 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 changesAddspydicomandwsidicomas 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.py1.0.1 (2022-01-31)Major Updates and Feature ImprovementsUpdates dependencies for conda recipe #262Changes to APINoneBug Fixes and Other ChangesAdds User Warning For Missing SQLite FunctionsFixes Pixman version check errorsFixes empty query in instance segmentorDevelopment related changesFixes flake8 linting issues and typosConditional pytest.skipif to skip GPU tests on travis while running them locally or elsewhere1.0.0 (2021-12-23)Major Updates and Feature ImprovementsAdds nucleus instance segmentation base classAddsHoVerNetarchitectureAdds multi-task segmentorHoVerNet+modelAddsIDaRSpipelineAddsSlideGraphpipelineAdds PCam patch classification modelsAdds support for stain augmentation featureAdds classes and functions undertiatoolbox.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 modelsAdds classes which can generate zoomify tiles from a WSIReader object.Adds WSI viewer using Zoomify/WSIReader API (#212)Adds README to example page for clarityAdds support to override or specify mpp and powerChanges to APIReplacesmodels.controllerAPI withmodels.engineReplacesCNNPatchPredictorwithPatchPredictorBug Fixes and Other ChangesFixes  Fixfilter_coordinatesread wrong resolutions for patch extractionForPatchPredictorioconfigwill supersede everythingifioconfigis not providedIfmodelis pretrained (defined inpretrained_model.yaml)Use the yaml ioconfigAny other input patch reading arguments will overwrite the yaml ioconfig (at the same keyword).Ifmodelis not defined, all input patch reading arguments must be provided else exception will be thrown.Improves performance of mask based patch extractionDevelopment related changesImprove tests performance for Travis runsAdds feature detection mechanism to detect the platform and installed packages etc.On demand imports for some libraries for performanceImproves performance of mask based patch extraction0.8.0 (2021-10-27)Major Updates and Feature ImprovementsAddsSemanticSegmentorwhich is Predictor equivalent for semantic segmentation.AddTIFFWSIReaderclass to support OMETiff reading.AddsFeatureExtractorAPI 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 forget_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 frompretrained_weighttopretrained_weights.Adds cli for semantic segmentation.Update python notebooks to addread_rectandread_boundsexamples withmppread.Changes to APIAddsWSIReader.open.get_wsireaderwill deprecate in the next release. Please useWSIReader.openinstead.CLI is now POSIX compatibleReplaces underscores in variable names with hyphensModels API updated to usepretrained_weightsinstead ofpretrained_weight.Move string_to_tuple to tiatoolbox/utils/misc.pyBug Fixes and Other ChangesFixes README git clone instructions.Fixes stain normalisation due to changes in sklearn.Fixes a test in tests/test_slide_infoFixes readthedocs documentation issuesDevelopment related changesAdds dependencies for tiffile, imagecodecs, zarr.Adds more stringent pre-commit checksMoved local test files intotiatoolbox/data.FixedManifest.iniand addedtiatoolbox/data. This means that this directory will be downloaded with the package.Usingpkg_resourcesto properly load bundled resources (e.g.target_image.png) intiatoolbox.data.Removed duplicate code inconftest.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 commandsRemoves redundant testsUpdates to new GitHub organisation name in the repoFixes related links0.7.0 (2021-09-16)Major and Feature ImprovementsDrops support for python 3.6Update minimum requirement to python 3.7Adds support for python 3.9Addsmodelsbase 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.Addsclassificationpackage 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 mask-based patch extraction functionality to extract patches based on the regions that are highlighted in theinput_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 APICommand line interface for stain normalisation can be called using the keywordstain-norminstead ofstainnormReplacesFixedWindowPatchExtractorwithSlidingWindowPatchExtractor.get_patchextractor takes theslidingwindowas an argument.DepreciatesVariableWindowPatchExtractorBug Fixes and Other ChangesSignificantly improved python notebook documentation for clarity, consistency and ease of use for non-experts.Adds detailed installation instructions for Windows, Linux and MacDevelopment related changesMoves flake8 above pytest in thetravis.ymlscript stage.Addsset -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 changesUsesrequirements.txtin.readthedocs.ymlUses apt-get installation for openjpeg and openslideRemoves conda build on readthedocs buildAdds extra checks to pre-commit, e.g., import sorting, spellcheck etc. Detailed list can be found on thiscommit.0.6.0 (2021-05-11)Major and Feature ImprovementsAddTissueMaskerclass 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.AddPointsPatchExtractorreturns patches that can be used by classification models. Takescsv,jsonorpd.DataFrameand returns patches corresponding to each pixel location.Add featureFixedWindowPatchExtractorto 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 APItiatoolbox.dataloaderreplaced bytiatoolbox.wsicoreBug Fixes and Other ChangesMinor bug fixesDevelopment-related changesImprove unit test coverage.Move test data to tiatoolbox server.0.5.2 (2021-03-12)Bug Fixes and Other ChangesFix URL for downloading test JP2 image.Update readme with new logo.0.5.1 (2020-12-31)Bug Fixes and Other ChangesAddscikit-imageas dependency insetup.pyUpdate notebooks to add instructions to install dependencies0.5.0 (2020-12-30)Major and Feature ImprovementsAddsget_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 areread_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.AddsVirtualWSIReaderas 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.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 privateself._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 APIread_regionrefactored to be backwards compatible with openslide arguments.slide_infochanged toinfoUpdates WSIReader which only takes one inputWSIReaderinput_pathvariable changed toinput_imgAddstile_read_size,tile_objective_valueandoutput_dirto WSIReader.save_tiles()Addstile_read_sizeas a tupletransforms.imresizetakes additional argumentsoutput_sizeand interpolation method 'optimise' which selectscv2.INTER_AREAforscale_factor<1andcv2.INTER_CUBICforscale_factor>1Bug Fixes and Other ChangesRefactors glymur code to use index slicing instead of deprecated read function.Refactors thumbnail code to useread_boundsand be a member of the WSIReader base class.UpdatesREADME.mdto clarify installation instructions.Fixes slide_info.py for changes in WSIReader API.Fixes save_tiles.py for changes in WSIReader API.Updatesexample_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.Pinsnumpy<=1.19.3to avoid compatibility issues with opencv.Addsscikit-imageorjupyterlabas a dependency.Development related changesMovedtest_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.Addspre-commitfor easy setup of client-side githooksforblack code formattingand flake8 linting.Addsflake8-bugbearto pre-commit for catching potential deepsource errors.Adds constants for test regions intest_wsireader.py.Rearrangesusage.rstfor better readability.Addspre-commit,flake8,flake8-bugbear,black,pytest-covandrecommonmarkas dependency.0.4.0 (2020-10-25)Major and Feature ImprovementsAddsOpenSlideWSIReaderto read Openslide image formatsAdds support to read Omnyx jp2 images usingOmnyxJP2WSIReader.New feature added to perform stain normalisation usingRuifork,Reinhard,Vahadane,Macenkomethods and using custom stain matrices.Adds example notebook to read whole slide images via the toolbox.AddsWSIMetaclass to save meta data for whole slide images.WSIMetacasts properties to python types. Properties from OpenSlide are returned as string. raw values can always be accessed viaslide.raw. Adds data validation e.g., checking that level_count matches up with the length of thelevel_dimensionsandlevel_downsamples. Adds type hints toWSIMeta.Adds exceptionsFileNotSupportedandMethodNotSupportedChanges to APIRestructuresWSIReaderas parent class to allow support to read whole slide images in other formats.Addsslide_infoas a property ofWSIReaderUpdatesslide_infotype toWSIMetafromdictDepreciates support for multiprocessing from within the toolbox. The toolbox is focused on processing single whole slide and standard images. External libraries can be used to run using multiprocessing on multiple files.Bug Fixes and Other ChangesAddsscikit-learn,glymuras a dependencyAdds licence informationRemovespathosas a dependencyUpdatesopenslide-pythonrequirement to 1.1.20.3.0 (2020-07-19)Major and Feature ImprovementsAdds featureread_regionto read a small region from whole slide imagesAdds featuresave_tilesto save image tiles from whole slide imagesAdds featureimresizeto resize imagesAdds featuretransforms.background_compositeto avoid creation of black tiles from whole slide images.Changes to APINoneBug Fixes and Other ChangesAddspandasas dependency0.2.2 (2020-07-12)Major and Feature ImprovementsNoneChanges to APINoneBug Fixes and Other ChangesFix command line interface forslide-infofeature and travis pypi deployment0.2.1 (2020-07-10)Major and Feature ImprovementsNoneChanges to APINoneBug Fixes and Other ChangesMinor changes to configuration files.0.2.0 (2020-07-10)Major and Feature ImprovementsAdds feature slide_info to read whole slide images and display meta
data informationAdds multiprocessing decorator TIAMultiProcess to allow running
toolbox functions using multiprocessing.Changes to APINoneBug Fixes and Other ChangesAdds Sphinx Readthedocs supporthttps://readthedocs.org/projects/tia-toolbox/for stable and
develop branchesAdds code coverage tools to test the pytest coverage of the packageAdds deepsource integration to highlight and fix bug risks,
performance issues etc.Adds README to allow users to setup the environment.Adds conda and pip requirements instructions0.1.0 (2020-05-28)First release on PyPI.