v0.25.0
scikit-image 0.25.0
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 (#7576). - Deprecate
skimage.morphology.rectangle
in favor of the new functionskimage.morphology.footprint_rectangle
(#7566). - Deprecate
skimage.morphology.square
in favor of the new functionskimage.morphology.footprint_rectangle
(#7566). - Deprecate
skimage.morphology.cube
in favor of the new functionskimage.morphology.footprint_rectangle
(#7566).
Enhancements
- Improve numerical stability of
skimage.morphology.local_minima
for extremely small floats (#7534). - Make sure that
skimage.feature.plot_matched_features
uses the same random colors, ifmatches_color
isn't provided explicitly (#7541). - Allow passing a sequence of colors to the parameter
matches_color
inskimage.feature.plot_matched_features
(#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):
- @aeisenbarth
- @FedericoWZhaw
- @jakirkham
- @michaelbratsch
- 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):
- @aeisenbarth
- @FedericoWZhaw
- @jakirkham
- @michaelbratsch
- 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.