scikit-image 0.25.0 (2024-12-13)#

We’re happy to announce the release of scikit-image 0.25.0!

New Features#

  • Add the new Gray-Level Co-occurrence Matrix (GLCM) properties “mean”, “variance”, “standard deviation” and “entropy” to skimage.feature.texture.graycoprops (#7375).

  • Add the new skimage.morphology.footprint_rectangle supporting generation of rectangular or hyper-rectangular footprints in one function (#7566).

API Changes#

  • Complete the deprecation of and remove skimage.feature.plot_matches. Use skimage.feature.plot_matched_features going forward (#7487).

  • Deprecate skimage.io.imshow, skimage.io.imshow_collection and skimage.io.show. Please use matplotlib, napari, etc. to visualize images (#7508).

  • Remove deprecated skimage.morphology.skeletonize_3d; use skimage.morphology.skeletonize instead (#7572).

  • Deprecate skimage.io plugin infrastructure (#7353).

  • Switched to using the scipy.sparse array interface. For more details, see the note about the new scipy.sparse array interface [here](https://docs.scipy.org/doc/scipy/reference/sparse.html) (#7576).

  • Deprecate skimage.morphology.rectangle in favor of the new function skimage.morphology.footprint_rectangle (#7566).

  • Deprecate skimage.morphology.cube in favor of the new function skimage.morphology.footprint_rectangle (#7566).

  • Deprecate skimage.morphology.square in favor of the new function skimage.morphology.footprint_rectangle (#7566).

Enhancements#

  • Improve numerical stability of skimage.morphology.local_minima for extremely small floats (#7534).

  • Allow passing a sequence of colors to the parameter matches_color in skimage.feature.plot_matched_features (#7541).

  • Make sure that skimage.feature.plot_matched_features uses the same random colors, if matches_color isn’t provided explicitly (#7541).

Performance#

  • skimage.feature.peak_local_max will now skip unnecessary distance computations in the case of min_distance=1. This results in performance improvements to functions like skimage.feature.blob_dog, skimage.feature.blob_log, skimage.feature.blob_doh and skimage.feature.corner_peaks that call peak_local_max internally (#7548).

  • In skimage.featurepeak_local_max, skip unnecessary check for cases where min_distance > 1 is passed (#7548).

Bug Fixes#

  • Ensure that skimage.morphology.remove_objects_by_distance doesn’t fail if the given integer dtype cannot be safely cast to the architecture specific size of intp, e.g. on i386 architectures (#7453).

  • Fix degeneracy in skimage.draw.ellipsoid_stats when all semi-axes have the same length (#7473).

  • Prevent skimage.morphology.thin from accidentally modifying the input image in case it is of dtype uint8 (#7469).

  • Fix numerical precision error in skimage.measure.ransac. In some cases, ransac was stopping at the first iteration (#7065).

  • Fix numerical precision error in skimage.measure.ransac; very small probabilities lead to -0 number of max trials (#7496).

  • Ensure that RegionProperties objects returned by skimage.measure.regionprops can be deserialized with pickle (#7569).

  • Fix edge case where setting watershed_lines=True in skimage.segmentation.watershed resulted in an incorrect solution (#7071).

  • Fix the behavior of skimage.segmentation.watershed when the markers don’t align with local minima by making sure every marker is evaluated before successive pixels (#7071).

  • Fix dtype promotion in skimage.segmentation.join_segmentations if numpy.uint is used with NumPy<2 (#7292).

Documentation#

  • In skimage.morphology.skeletonize, clarify the expected image dtypes and how objects of different intensities are handled (#7456).

  • Fix example section in docstring of skimage.feature.graycomatrix (#7297).

  • Use conda-forge consistently in instructions for setting up the development environment (#7483).

  • Use new CITATION.cff instead of CITATION.bib (#7505).

  • Use correct spin test --coverage in contribution guide (#7515).

  • Tweak advice to new developers; remove AI warning (#7522).

  • Rework installation instructions (#7434).

  • Improve the description of the image parameter in skimage.restoration.richardson_lucy (#7477).

  • Account for empty arrays when counting segments per contour level in gallery example “Segment human cells (in mitosis)” (#7551).

  • Fix typo in morphology doc (#7606).

  • Change type description of parameter radius in skimage.morphology.ball from int to float (#7627).

Infrastructure#

  • Fix CI tests with minimal dependencies and make dependency resolution more robust (#7462).

  • Add CI to test scikit-image against free-threaded Python 3.13 (#7463).

  • Address autosummary.import_cycle warning (#7486).

  • Temporarily exclude Dask 2024.8.0 to fix CI (#7493).

  • Uncomment currentmodule directive again (#7492).

  • Add CI to release nightly free-threaded wheels (#7481).

  • Update deprecated configuration (#7501).

  • Bump spin version to 0.11 (#7507).

  • Ensure only a single type: label is present in PRs (#7512).

  • Update pydata-sphinx-theme (#7511).

  • Fix OpenBLAS s_cmp unresolved symbol error, update Emscripten CI testing (#7525).

  • Render paragraphs in dormant message (#7549).

  • Build sphinx documentation with parallel jobs (#7579).

  • Don’t check test coverage in CI (#7594).

  • Explicitly setup conda on macos for wheel building (#7608).

Maintenance#

  • Verify all artifacts that have been attested by looping over them in CI (#7447).

  • Update circleci-artifacts-redirector-action that moved to the Scientific Python org (#7446).

  • Use NumPy 2.0 stable to build packages (#7451).

  • FIX Use python3 in Meson version script shebang (#7482).

  • Refactored tests for skeletonize (#7459).

  • Remove unused and deprecated dependency pytest-runner (#7495).

  • Exclude imageio 2.35.0 that forces numpy downgrade (#7502).

  • Don’t test thresholding funcs for Dask compatibility (#7509).

  • Fix build dependency (#7510).

  • Add sdist check to spin sdist (#7438).

  • Reorder items in TODO list (#7519).

  • Use Rotation.from_euler to compute 3D rotation matrix (#7503).

  • Update spin (0.12) (#7532).

  • Import lazy_loader as private symbol in top-level namespaces (#7540).

  • Set -DNPY_NO_DEPRECATED_API=NPY_1_23_API_VERSION on build (#7538).

  • Update up/download artifact version (#7545).

  • Don’t use deprecated io.show and io.imshow (#7556).

  • Hide traceback inside assert_stacklevel (#7558).

  • Update pre-commit versions (#7560).

  • Drop Python 3.9 support (#7561).

  • Update minimum dependencies (SPEC 0) (#7562).

  • Remove unused PYX files in io/_plugins (#7557).

  • Support Python 3.13 (#7565).

  • During deprecation cycles, preserve the value of deprecated parameters that don’t have a new parameter as a replacement (#7552).

  • Fix missing minigalleries by using full names in directives (#7567).

  • Build Python 3.13 wheels (#7571).

  • Update TODO (#7573).

  • Remove deprecated gaussian output parameter (#7574).

  • Test Py3.13 on windows (#7578).

  • Update ruff linter / formatter (#7580).

  • Fix formatting issues (#7581).

  • CI: bump macos image pin from 12 to 13 (#7582).

  • Update build dependencies (#7587).

  • Update minimum supported pyamg (#7586).

  • Update documentation dependencies (#7590).

  • Bump changelist to v0.5 (#7601).

  • Pin kaleido to 0.2.1 (#7612).

  • Update upload-nightly-action (#7609).

  • Update pillow (#7615).

  • Remove Python 2.7 cruft (#7616).

  • Use intersphinx_registry package in conf.py to keep intersphinx urls up to date. This means that building docs now requires the intersphinx-registry package (#7611).

  • Update build dependencies (#7614).

  • Update file extension and reformat Markdown file (#7617).

  • Add forgotten TODO about deprecated square, cube & rectangle (#7624).

  • Upgrade to spin 0.13 (#7622).

  • Lazy load legacy imports in skimage top module (#6892).

  • CI pre-commit fix (#7631).

Contributors#

30 authors added to this release (alphabetically):

25 reviewers added to this release (alphabetically):

_These lists are automatically generated, and may not be complete or may contain duplicates._