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
. Useskimage.feature.plot_matched_features
going forward (#7487).Deprecate
skimage.io.imshow
,skimage.io.imshow_collection
andskimage.io.show
. Please usematplotlib
,napari
, etc. to visualize images (#7508).Remove deprecated
skimage.morphology.skeletonize_3d
; useskimage.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 newscipy.sparse
array interface [here](https://docs.scipy.org/doc/scipy/reference/sparse.html) (#7576).Deprecate
skimage.morphology.rectangle
in favor of the new functionskimage.morphology.footprint_rectangle
(#7566).Deprecate
skimage.morphology.cube
in favor of the new functionskimage.morphology.footprint_rectangle
(#7566).Deprecate
skimage.morphology.square
in favor of the new functionskimage.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
inskimage.feature.plot_matched_features
(#7541).Make sure that
skimage.feature.plot_matched_features
uses the same random colors, ifmatches_color
isn’t provided explicitly (#7541).
Performance#
skimage.feature.peak_local_max
will now skip unnecessary distance computations in the case ofmin_distance=1
. This results in performance improvements to functions likeskimage.feature.blob_dog
,skimage.feature.blob_log
,skimage.feature.blob_doh
andskimage.feature.corner_peaks
that callpeak_local_max
internally (#7548).In
skimage.featurepeak_local_max
, skip unnecessary check for cases wheremin_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 ofintp
, 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 byskimage.measure.regionprops
can be deserialized with pickle (#7569).Fix edge case where setting
watershed_lines=True
inskimage.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
ifnumpy.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 ofCITATION.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 inskimage.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
inskimage.morphology.ball
fromint
tofloat
(#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
andio.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 inconf.py
to keep intersphinx urls up to date. This means that building docs now requires theintersphinx-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):
Adeyemi Biola (@decorouz)
Aditi Juneja (@Schefflera-Arboricola)
Agriya Khetarpal (@agriyakhetarpal)
Brigitta Sipőcz (@bsipocz)
Dan Schult (@dschult)
Edgar Andrés Margffoy Tuay (@andfoy)
Egor Panfilov (@soupault)
Erik Welch (@eriknw)
Gianluca (@geeanlooca)
Gregory Lee (@grlee77)
Hayato Ikoma (@hayatoikoma)
Henrik Finsberg (@finsberg)
Jarrod Millman (@jarrodmillman)
Jordão Bragantini (@JoOkuma)
João Seródio (@SerodioJ)
Kushaan Gupta (@kushaangupta)
Lars Grüter (@lagru)
Loïc Estève (@lesteve)
M Bussonnier (@Carreau)
Marianne Corvellec (@mkcor)
Mark Harfouche (@hmaarrfk)
Matthew Feickert (@matthewfeickert)
Paritosh Dahiya (@hnhparitosh)
Piyush Amitabh (@pamitabh)
Ricky Walsh (@rickymwalsh)
Stefan van der Walt (@stefanv)
25 reviewers added to this release (alphabetically):
Agriya Khetarpal (@agriyakhetarpal)
Brigitta Sipőcz (@bsipocz)
Dan Schult (@dschult)
Edgar Andrés Margffoy Tuay (@andfoy)
Egor Panfilov (@soupault)
Gianluca (@geeanlooca)
Gregory Lee (@grlee77)
Hayato Ikoma (@hayatoikoma)
Jarrod Millman (@jarrodmillman)
Jordão Bragantini (@JoOkuma)
João Seródio (@SerodioJ)
Juan Nunez-Iglesias (@jni)
Kushaan Gupta (@kushaangupta)
Lars Grüter (@lagru)
Marianne Corvellec (@mkcor)
Mark Harfouche (@hmaarrfk)
Matthew Feickert (@matthewfeickert)
Nathan Goldbaum (@ngoldbaum)
Piyush Amitabh (@pamitabh)
Ralf Gommers (@rgommers)
Stefan van der Walt (@stefanv)
_These lists are automatically generated, and may not be complete or may contain duplicates._