Skip to content

Releases: scikit-image/scikit-image

v0.26.0

20 Dec 17:13
v0.26.0
ee0a7a3

Choose a tag to compare

scikit-image 0.26.0

We're happy to announce the release of scikit-image 0.26.0!

New Features

  • Add new parameter max_step_cost to skimage.graph.MCP.find_costs which allows limiting the maximal stepping cost between points (#7625).
  • In skimage.transform, add the identity class constructor to all geometric transforms. For example, you can now use skimage.transform.PolynomialTransform(dimensionality=2) (#7754).
  • Add new property intensity_median to skimage.measure.regionprops (#7745).
  • binary_blobs now supports a mode parameter for the Gaussian filter, allowing periodic boundary conditions with mode="wrap" (#7909).

API Changes

  • In skimage.morphology, deprecate binary_erosion, binary_dilation, binary_opening, and binary_closing in favor of erosion, dilation, opening, and closing respectively. The binary versions weren't actually significantly faster than their non-binary counterparts and sometimes significantly slower. In the future, we might add optimizations internally to the remaining (general, non-binary) functions for when they're used with binary inputs (#7665).
  • Deprecate parameter max_cost in skimage.graph.MCP.find_costs which previously did nothing. Use the new parameter max_step_cost instead (#7625).
  • Deprecate parameter max_cumulative_cost in skimage.graph.MCP.find_costs which did nothing (#7625).
  • In skimage.morphology.remove_small_objects, deprecate the min_size parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes objects smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.morphology.remove_small_holes, deprecate the area_threshold parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes holes smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.transform, deprecate the use of scalar scale, with dimensionality=3 where this can be passed to a geometric transform contructor. This allows us to generalize the use of the constructors to the case where the parameters must specify the dimensionality, unless you mean to construct an identity transform (#7754).
  • In skimage.transform, turn all input parameters to transform constructors keyword-only (other than matrix). This avoids confusion due to the positional parameter order being different from the order by which they are applied in AffineTransform (#7754).
  • Deprecate parameter num_threads in skimage.restoration.rolling_ball; use workers instead (#7302).
  • Deprecate parameter num_workers in skimage.restoration.cycle_spin; use workers instead (#7302).
  • Officially deprecate old properties in skimage.measure.regionprops and related functions. While we removed the documentation for these some time ago, they where still accessible as keys (via __get_item__) or attributes. Going forward, using deprecated keys or attributes, will emit an appropriate warning (#7778).
  • In skimage.measure, add a new class method and constructor from_estimate for LineModelND, CircleModel, and EllipseModel. This replaces the old API—the now deprecated estimate method—which required initalizing a model with undefined parameters before calling estimate (#7771).
  • In skimage.transform, add a new class method and constructor from_estimate for AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, and ThinPlateSplineTransform. This replaces the old API—the now deprecated estimate method—which required initializing an undefined transform before calling estimate (#7771).
  • Deprecate skimage.measure.fit.BaseModel; after we expire the other *Model* deprecations, there is no work for an ancestor class to do (#7789).
  • In skimage.measure, deprecate .params attributes of the models CircleModel, EllipseModel, and LineModelND. Instead set model-specific attributes: origin, direction for LineModelND; center, radius for CircleModel, center, ax_lens, theta for EllipseModel (#7789).
  • In skimage.measure, deprecate use of model constructor calls without arguments leaving an uninitialized instance (for example CircleModel()). This applies to CircleModel, EllipseModel, and LineModelND. Instead prefer input arguments to define instances (for example CircleModel(center, radius)). This follows on from prior deprecation of the estimate method, which had implied the need for the no-argument constructor, of form cm = CircleMoldel(); cm.estimate(data) (#7789).
  • In skimage.measure, deprecate use of params arguments to predict* calls of model objects. This applies to CircleModel, EllipseModel, and LineModelND. We now ask instead that the user provide initialization equivalent to the params content in the class construction. For example, prefer cm = CircleModel((2, 3), 4); x = cm.predict_x(t) to cm = CircleMoldel(); x = cm.predict_x(t, params=(2, 3, 4))) (#7789).

Enhancements

  • Raise a ValueError instead of a TypeError in CircleModel, EllipseModel, and LineModelND in skimage.measure. This applies when failing to pass a value for params (or passing params=None) to predict methods of an uninitialized transform (#7789).
  • In skimage.measure, the RegionProperties class that is returned by regionprops, now has a formatted string representation (__repr__). This representation includes the label of the region and its bounding box (#7887).

Performance

  • Use greedy einsum optimization in skimage.measure.moments_central (#7947).
  • Add lazy loading to skimage.segmentation (#7035).

Bug Fixes

  • Make deconvolution example scientifically sensible (#7589).
  • In skimage.filters.sobel/scharr/prewitt/farid, when mode="constant" is used ensure that cval has an effect. It didn't previously (#7826).
  • Ensure skimage.graph.cut_normalized is deterministic when seeded with the rng parameter and when SciPy 1.17.0.dev0 or newer is installed. With earlier SciPy versions the internally used function scipy.linalg.eigsh is not deterministic and can lead to different results (#7912).
  • Avoid potential integer overflow in skimage.morphology.reconstruction (#7938).
  • Handle negative axis lengths due to numerical errors in axis_major_length and axis_minor_length properties of skimage.measure.regionprops (#7916).
  • In skimage.util.random_noise, ensure that clip argument is handled consistently for various modes (#7924).
  • Apparent fix for Hough transform stray j (#7974).

Documentation

  • Reflect deprecation of I/O plugin infrastructure in user guide (#7710).
  • Display code blocks with a caption and extra indentation (#7706).
  • Edit gallery examples on segmentation to comply with matplotlib's object-oriented style (#7531).
  • Add link to 2.0 TODO (#7716).
  • Denote changes in Frangi filter explicitly (#7721).
  • Add SPEC badges (#7737).
  • Fix math equations in docstrings for manders_coloc_coeff and normalized_mutual_information (#7517).
  • Use the import convention import skimage as ski in the docstrings of ski.measure.euler_number, ski.measure.perimeter and ski.measure.perimeter_crofton (#7741).
  • Fix the definition of entropy in the docstring of skimage.metrics.normalized_mutual_information (#7750).
  • DOC: document use of environment.yml in installatio...
Read more

v0.26.0rc2

18 Dec 18:25
v0.26.0rc2

Choose a tag to compare

v0.26.0rc2 Pre-release
Pre-release

We're happy to announce the release of scikit-image 0.26.0rc2!

New Features

  • Add new parameter max_step_cost to skimage.graph.MCP.find_costs which allows limiting the maximal stepping cost between points (#7625).
  • In skimage.transform, add the identity class constructor to all geometric transforms. For example, you can now use skimage.transform.PolynomialTransform(dimensionality=2) (#7754).
  • Add new property intensity_median to skimage.measure.regionprops (#7745).
  • binary_blobs now supports a mode parameter for the Gaussian filter, allowing periodic boundary conditions with mode="wrap" (#7909).

API Changes

  • In skimage.morphology, deprecate binary_erosion, binary_dilation, binary_opening, and binary_closing in favor of erosion, dilation, opening, and closing respectively. The binary versions weren't actually significantly faster than their non-binary counterparts and sometimes significantly slower. In the future, we might add optimizations internally to the remaining (general, non-binary) functions for when they're used with binary inputs (#7665).
  • Deprecate parameter max_cumulative_cost in skimage.graph.MCP.find_costs which did nothing (#7625).
  • Deprecate parameter max_cost in skimage.graph.MCP.find_costs which previously did nothing. Use the new parameter max_step_cost instead (#7625).
  • In skimage.morphology.remove_small_objects, deprecate the min_size parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes objects smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.morphology.remove_small_holes, deprecate the area_threshold parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes holes smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.transform, turn all input parameters to transform constructors keyword-only (other than matrix). This avoids confusion due to the positional parameter order being different from the order by which they are applied in AffineTransform (#7754).
  • In skimage.transform, deprecate the use of scalar scale, with dimensionality=3 where this can be passed to a geometric transform contructor. This allows us to generalize the use of the constructors to the case where the parameters must specify the dimensionality, unless you mean to construct an identity transform (#7754).
  • Deprecate parameter num_threads in skimage.restoration.rolling_ball; use workers instead (#7302).
  • Deprecate parameter num_workers in skimage.restoration.cycle_spin; use workers instead (#7302).
  • Officially deprecate old properties in skimage.measure.regionprops and related functions. While we removed the documentation for these some time ago, they where still accessible as keys (via __get_item__) or attributes. Going forward, using deprecated keys or attributes, will emit an appropriate warning (#7778).
  • In skimage.transform, add a new class method and constructor from_estimate for AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, and ThinPlateSplineTransform. This replaces the old API—the now deprecated estimate method—which required initializing an undefined transform before calling estimate (#7771).
  • In skimage.measure, add a new class method and constructor from_estimate for LineModelND, CircleModel, and EllipseModel. This replaces the old API—the now deprecated estimate method—which required initalizing a model with undefined parameters before calling estimate (#7771).
  • In skimage.measure, deprecate use of model constructor calls without arguments leaving an uninitialized instance (for example CircleModel()). This applies to CircleModel, EllipseModel, and LineModelND. Instead prefer input arguments to define instances (for example CircleModel(center, radius)). This follows on from prior deprecation of the estimate method, which had implied the need for the no-argument constructor, of form cm = CircleMoldel(); cm.estimate(data) (#7789).
  • Deprecate skimage.measure.fit.BaseModel; after we expire the other *Model* deprecations, there is no work for an ancestor class to do (#7789).
  • In skimage.measure, deprecate use of params arguments to predict* calls of model objects. This applies to CircleModel, EllipseModel, and LineModelND. We now ask instead that the user provide initialization equivalent to the params content in the class construction. For example, prefer cm = CircleModel((2, 3), 4); x = cm.predict_x(t) to cm = CircleMoldel(); x = cm.predict_x(t, params=(2, 3, 4))) (#7789).
  • In skimage.measure, deprecate .params attributes of the models CircleModel, EllipseModel, and LineModelND. Instead set model-specific attributes: origin, direction for LineModelND; center, radius for CircleModel, center, ax_lens, theta for EllipseModel (#7789).

Enhancements

  • Raise a ValueError instead of a TypeError in CircleModel, EllipseModel, and LineModelND in skimage.measure. This applies when failing to pass a value for params (or passing params=None) to predict methods of an uninitialized transform (#7789).
  • In skimage.measure, the RegionProperties class that is returned by regionprops, now has a formatted string representation (__repr__). This representation includes the label of the region and its bounding box (#7887).

Performance

  • Use greedy einsum optimization in skimage.measure.moments_central (#7947).
  • Add lazy loading to skimage.segmentation (#7035).

Bug Fixes

  • Make deconvolution example scientifically sensible (#7589).
  • In skimage.filters.sobel/scharr/prewitt/farid, when mode="constant" is used ensure that cval has an effect. It didn't previously (#7826).
  • Ensure skimage.graph.cut_normalized is deterministic when seeded with the rng parameter and when SciPy 1.17.0.dev0 or newer is installed. With earlier SciPy versions the internally used function scipy.linalg.eigsh is not deterministic and can lead to different results (#7912).
  • Avoid potential integer overflow in skimage.morphology.reconstruction (#7938).
  • Handle negative axis lengths due to numerical errors in axis_major_length and axis_minor_length properties of skimage.measure.regionprops (#7916).
  • In skimage.util.random_noise, ensure that clip argument is handled consistently for various modes (#7924).
  • Apparent fix for Hough transform stray j (#7974).

Documentation

  • Reflect deprecation of I/O plugin infrastructure in user guide (#7710).
  • Display code blocks with a caption and extra indentation (#7706).
  • Edit gallery examples on segmentation to comply with matplotlib's object-oriented style (#7531).
  • Add link to 2.0 TODO (#7716).
  • Denote changes in Frangi filter explicitly (#7721).
  • Add SPEC badges (#7737).
  • Fix math equations in docstrings for manders_coloc_coeff and normalized_mutual_information (#7517).
  • Use the import convention import skimage as ski in the docstrings of ski.measure.euler_number, ski.measure.perimeter and ski.measure.perimeter_crofton (#7741).
  • Fix the definition of entropy in the docstring of skimage.metrics.normalized_mutual_information (#7750).
  • DOC: document use of environment.yml in installation guide ([#7760](https...
Read more

v0.26.0rc1

09 Dec 08:34
v0.26.0rc1
c4cbbc8

Choose a tag to compare

v0.26.0rc1 Pre-release
Pre-release

We're happy to announce the release of scikit-image 0.26.0rc1!

New Features

  • Add new parameter max_step_cost to skimage.graph.MCP.find_costs which allows limiting the maximal stepping cost between points (#7625).
  • In skimage.transform, add the identity class constructor to all geometric transforms. For example, you can now use skimage.transform.PolynomialTransform(dimensionality=2) (#7754).
  • Add new property intensity_median to skimage.measure.regionprops (#7745).
  • binary_blobs now supports a mode parameter for the Gaussian filter, allowing periodic boundary conditions with mode="wrap" (#7909).

API Changes

  • In skimage.morphology, deprecate binary_erosion, binary_dilation, binary_opening, and binary_closing in favor of erosion, dilation, opening, and closing respectively. The binary versions weren't actually significantly faster than their non-binary counterparts and sometimes significantly slower. In the future, we might add optimizations internally to the remaining (general, non-binary) functions for when they're used with binary inputs (#7665).
  • Deprecate parameter max_cumulative_cost in skimage.graph.MCP.find_costs which did nothing (#7625).
  • Deprecate parameter max_cost in skimage.graph.MCP.find_costs which previously did nothing. Use the new parameter max_step_cost instead (#7625).
  • In skimage.morphology.remove_small_objects, deprecate the min_size parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes objects smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.morphology.remove_small_holes, deprecate the area_threshold parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes holes smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.transform, turn all input parameters to transform constructors keyword-only (other than matrix). This avoids confusion due to the positional parameter order being different from the order by which they are applied in AffineTransform (#7754).
  • In skimage.transform, deprecate the use of scalar scale, with dimensionality=3 where this can be passed to a geometric transform contructor. This allows us to generalize the use of the constructors to the case where the parameters must specify the dimensionality, unless you mean to construct an identity transform (#7754).
  • Deprecate parameter num_threads in skimage.restoration.rolling_ball; use workers instead (#7302).
  • Deprecate parameter num_workers in skimage.restoration.cycle_spin; use workers instead (#7302).
  • Officially deprecate old properties in skimage.measure.regionprops and related functions. While we removed the documentation for these some time ago, they where still accessible as keys (via __get_item__) or attributes. Going forward, using deprecated keys or attributes, will emit an appropriate warning (#7778).
  • In skimage.transform, add a new class method and constructor from_estimate for AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, and ThinPlateSplineTransform. This replaces the old API—the now deprecated estimate method—which required initializing an undefined transform before calling estimate (#7771).
  • In skimage.measure, add a new class method and constructor from_estimate for LineModelND, CircleModel, and EllipseModel. This replaces the old API—the now deprecated estimate method—which required initalizing a model with undefined parameters before calling estimate (#7771).
  • In skimage.measure, deprecate use of model constructor calls without arguments leaving an uninitialized instance (for example CircleModel()). This applies to CircleModel, EllipseModel, and LineModelND. Instead prefer input arguments to define instances (for example CircleModel(center, radius)). This follows on from prior deprecation of the estimate method, which had implied the need for the no-argument constructor, of form cm = CircleMoldel(); cm.estimate(data) (#7789).
  • Deprecate skimage.measure.fit.BaseModel; after we expire the other *Model* deprecations, there is no work for an ancestor class to do (#7789).
  • In skimage.measure, deprecate use of params arguments to predict* calls of model objects. This applies to CircleModel, EllipseModel, and LineModelND. We now ask instead that the user provide initialization equivalent to the params content in the class construction. For example, prefer cm = CircleModel((2, 3), 4); x = cm.predict_x(t) to cm = CircleMoldel(); x = cm.predict_x(t, params=(2, 3, 4))) (#7789).
  • In skimage.measure, deprecate .params attributes of the models CircleModel, EllipseModel, and LineModelND. Instead set model-specific attributes: origin, direction for LineModelND; center, radius for CircleModel, center, ax_lens, theta for EllipseModel (#7789).

Enhancements

  • Raise a ValueError instead of a TypeError in CircleModel, EllipseModel, and LineModelND in skimage.measure. This applies when failing to pass a value for params (or passing params=None) to predict methods of an uninitialized transform (#7789).
  • In skimage.measure, the RegionProperties class that is returned by regionprops, now has a formatted string representation (__repr__). This representation includes the label of the region and its bounding box (#7887).

Performance

  • Use greedy einsum optimization in skimage.measure.moments_central (#7947).
  • Add lazy loading to skimage.segmentation (#7035).

Bug Fixes

  • Make deconvolution example scientifically sensible (#7589).
  • In skimage.filters.sobel/scharr/prewitt/farid, when mode="constant" is used ensure that cval has an effect. It didn't previously (#7826).
  • Ensure skimage.graph.cut_normalized is deterministic when seeded with the rng parameter and when SciPy 1.17.0.dev0 or newer is installed. With earlier SciPy versions the internally used function scipy.linalg.eigsh is not deterministic and can lead to different results (#7912).
  • Avoid potential integer overflow in skimage.morphology.reconstruction (#7938).
  • Handle negative axis lengths due to numerical errors in axis_major_length and axis_minor_length properties of skimage.measure.regionprops (#7916).
  • In skimage.util.random_noise, ensure that clip argument is handled consistently for various modes (#7924).
  • Apparent fix for Hough transform stray j (#7974).

Documentation

  • Reflect deprecation of I/O plugin infrastructure in user guide (#7710).
  • Display code blocks with a caption and extra indentation (#7706).
  • Edit gallery examples on segmentation to comply with matplotlib's object-oriented style (#7531).
  • Add link to 2.0 TODO (#7716).
  • Denote changes in Frangi filter explicitly (#7721).
  • Add SPEC badges (#7737).
  • Fix math equations in docstrings for manders_coloc_coeff and normalized_mutual_information (#7517).
  • Use the import convention import skimage as ski in the docstrings of ski.measure.euler_number, ski.measure.perimeter and ski.measure.perimeter_crofton (#7741).
  • Fix the definition of entropy in the docstring of skimage.metrics.normalized_mutual_information (#7750).
  • DOC: document use of environment.yml in installation guide ([#7760](https...
Read more

v0.26.0rc0

26 Nov 04:57
v0.26.0rc0
52ac1c2

Choose a tag to compare

v0.26.0rc0 Pre-release
Pre-release

We're happy to announce the release of scikit-image 0.26.0rc0!

New Features

  • Basic infrastructure for dispatching to a backend (#7520).
  • Add new parameter max_step_cost to skimage.graph.MCP.find_costs which allows limiting the maximal stepping cost between points (#7625).
  • Add new property intensity_median to skimage.measure.regionprops (#7745).
  • Refactor fundamental matrix scaling (#7767).
  • binary_blobs now supports a mode parameter for the Gaussian filter, allowing periodic boundary conditions with mode="wrap" (#7909).

API Changes

  • In skimage.morphology, deprecate binary_erosion, binary_dilation, binary_opening, and binary_closing in favor of erosion, dilation, opening, and closing respectively. The binary versions weren't actually significantly faster than their non-binary counterparts and sometimes significantly slower. In the future, we might add optimizations internally to the remaining (general, non-binary) functions for when they're used with binary inputs (#7665).
  • Deprecate parameter max_cost in skimage.graph.MCP.find_costs which previously did nothing. Use the new parameter max_step_cost instead (#7625).
  • Deprecate parameter max_cumulative_cost in skimage.graph.MCP.find_costs which did nothing (#7625).
  • In skimage.morphology.remove_small_holes, deprecate the area_threshold parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes holes smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • In skimage.morphology.remove_small_objects, deprecate the min_size parameter in favor of the new max_size parameter to make API and behavior clearer. This new threshold removes objects smaller than or equal to its value, while the previous parameter only removed smaller ones (#7739).
  • Deprecate use of scalar scale, with dimensionality=3 where this can be passed to a geometric transform contructor. This allows us to generalize the use of the constructors to the case where the paraters must specify the dimensionality, unless you mean to construct an identity transform. Add identity class constructor to all geometric transforms. Make all input parameters to Transform constructors, other than matrix, keyword only, to work around difference in the order of parameters, from the order of application, in AffineTransform (#7754).
  • Deprecate parameter num_threads in skimage.restoration.rolling_ball; use workers instead (#7302).
  • Deprecate parameter num_workers in skimage.restoration.cycle_spin; use workers instead (#7302).
  • Officially deprecate old properties in skimage.measure.regionprops and related functions. While we removed the documentation for these some time ago, they where still accessible as keys (via __get_item__) or attributes. Going forward, using deprecated keys or attributes, will emit an appropriate warning (#7778).
  • In skimage.measure, add a new class method and constructor from_estimate for LineModelND, CircleModel, and EllipseModel. This replaces the old API—the now deprecated estimate method—which required initalizing a model with undefined parameters before calling estimate (#7771).
  • In skimage.transform, add a new class method and constructor from_estimate for AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, and ThinPlateSplineTransform. This replaces the old API—the now deprecated estimatemethod—which required initializing an undefined transform before callingestimate` (#7771).
  • Deprecate use of model constructor calls without arguments (e.g. CircleModel()), leaving an uninitialized instance. Instead prefer input arguments to define instance (e.g. CircleModel(center, radius)). This follows on from prior deprecation of the estimate method, which had implied the need for the no-argument constructor, of form cm = CircleMoldel(); cm.estimate(data). Deprecate .params attributes of models. Instead set model-specific attributes: origin, direction for LineModelND; center, radius for CircleModel, center, ax_lens, theta for EllipseModel. Deprecate use of params arguments to predict* calls of model objects, because we now ask instead that the user provide initialization equivalent to the params content in the class construction (i.e. prefer cm = CircleModel((2, 3), 4); x = cm.predict_x(t) to cm = CircleMoldel(); x = cm.predict_x(t, params=(2, 3, 4))). Deprecate skimage.measure.fit.BaseModel; after we expire the other *Model* deprecations, there is no work for an ancestor class to do. In a small cleanup, we now raise a ValueError instead of a TypeError when failing to pass a value for params (or passing params=None) to predict methods of an uninitialized transform (#7789).

Enhancements

  • In skimage.measure, the RegionProperties class that is returned by regionprops, now has a formatted string representation (__repr__). This representation includes the label of the region and its bounding box (#7887).

Performance

  • Add greedy optimization to einsum in moments (#7947).

Bug Fixes

  • Make deconvolution example scientifically sensible (#7589).
  • In skimage.filters.sobel/scharr/prewitt/farid, when mode="constant" is used ensure that cval has an effect. It didn't previously (#7826).
  • Skip doctest with random component (#7854).
  • Ensure skimage.graph.cut_normalized is deterministic when seeded with the rng parameter and when SciPy 1.17.0.dev0 or newer is installed. With earlier SciPy versions the internally used function scipy.linalg.eigsh is not deterministic and can lead to different results (#7912).
  • Fix integer overflow in reconstruction cython code (#7938).
  • Fix negative axis length due to numerical error (#7916).
  • moments_hu doctest should ignore tiny differences (#7944).
  • Relax constraints of regionprops multichannel test on MacOS with NumPy & "Accelerate" (#7942).
  • In random_noise, ensure that 'clip' argument is handled consistently for various modes (#7924).

Documentation

  • Reflect deprecation of I/O plugin infrastructure in user guide (#7710).
  • Display code blocks with a caption and extra indentation (#7706).
  • Edit gallery examples on segmentation to comply with matplotlib's object-oriented style (#7531).
  • Add link to 2.0 TODO (#7716).
  • Denote changes in Frangi filter explicitly (#7721).
  • Add SPEC badges (#7737).
  • Fix math equations in docstrings for manders_coloc_coeff and normalized_mutual_information (#7517).
  • Use the import convention import skimage as ski in the docstrings of ski.measure.euler_number, ski.measure.perimeter and ski.measure.perimeter_crofton (#7741).
  • Fix the definition of entropy in the docstring of skimage.metrics.normalized_mutual_information (#7750).
  • DOC: document use of environment.yml in installation guide (#7760).
  • Further document use of regionprops function and fix terms (#7518).
  • Display actual threshold value in Global Otsu plot (#7780).
  • DOC: Include missing gain parameter in adjust_gamma equation (#7763).
  • Document output dtype for transform.resize (#7792).
  • Use consistent wording in property description (#7804).
  • Draft migration guide for skimage2 ([#7...
Read more

v0.25.2

18 Feb 18:05
v0.25.2
e8a42ba

Choose a tag to compare

scikit-image 0.25.2

We're happy to announce the release of scikit-image 0.25.2!

Bug Fixes

  • Handle random degenerate case in skimage.graph.cut_normalized gracefully (#7675).
  • In skimage.feature.BRIEF, copy keypoints if necessary to preserve contiguity (#7692).
  • Revert a previous fix to skimage.segmentation.watershed that unintentionally changed the algorithm's behavior for markers placed at maxima in the image. We decided that the behavior originally reported as a bug (gh-6632), is not actually one (#7702).

Documentation

  • Improve docstring of skimage.restoration.rolling_ball (#7682).

Infrastructure

  • Only run the job if the PR got merged (vs merely closed) (#7679).
  • Fix typo in GH workflow (#7681).
  • Refactor GitHub's CI config and helper scripts (#7672).
  • Use pytest config in pyproject.toml in CI (#7555).
  • Lower CI build verbosity (#7688).
  • Port testing on Windows from Azure CI to GitHub's CI (#7687).
  • CI cleanup (#7693).
  • Simultaneously resolve all dependencies; add pip caching (#7690).
  • Reenable graph reproducibility test (#7694).
  • Give milestone labeler necessary permissions (#7695).
  • Milestone labeler permission not needed (#7696).
  • Fix 313t wheel build (#7699).

Maintenance

  • Include a missing image in meson.build so they are included in the wheel (#7660).
  • Add zizmor to pre-commit; address GH workflow issues raised (#7662).

Contributors

6 authors added to this release (alphabetically):

8 reviewers added to this release (alphabetically):

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

v0.25.2rc0

11 Feb 22:04
v0.25.2rc0
109cda4

Choose a tag to compare

v0.25.2rc0 Pre-release
Pre-release

scikit-image 0.25.2rc0

We're happy to announce the release of scikit-image 0.25.2rc0!

Bug Fixes

  • Handle random degenerate case in skimage.graph.cut_normalized gracefully (#7675).
  • Copy keypoints if necessary to preserve contiguity (#7692).
  • Revert a previous fix to skimage.segmentation.watershed that unintentionally changed the algorithm's behavior for markers placed at maxima in the image. We decided that the behavior originally reported as a bug (gh-6632), is not actually one (#7702).

Documentation

  • Improve docstring for rolling_ball function (#7682).

Infrastructure

  • Only run the job if the PR got merged (vs merely closed) (#7679).
  • Fix typo in GH workflow (#7681).
  • Refactor GitHub's CI config and helper scripts (#7672).
  • Use pytest config in pyproject.toml in CI (#7555).
  • Lower CI build verbosity (#7688).
  • Port testing on Windows from Azure CI to GitHub's CI (#7687).
  • CI cleanup (#7693).
  • Simultaneously resolve all dependencies; add pip caching (#7690).
  • Reenable graph reproducibility test (#7694).
  • Give milestone labeler necessary permissions (#7695).
  • Milestone labeler permission not needed (#7696).
  • Fix 313t wheel build (#7699).

Maintenance

  • Include a missing image in meson.build so they are included in the wheel (#7660).
  • Add zizmor to pre-commit; address GH workflow issues raised (#7662).

Contributors

6 authors added to this release (alphabetically):

8 reviewers added to this release (alphabetically):

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

v0.25.1

26 Jan 18:59
v0.25.1
e742bf4

Choose a tag to compare

scikit-image 0.25.1

We're happy to announce the release of scikit-image 0.25.1!

Bug Fixes

  • Include centroid in __all__ of the PYI file in skimage.measure (#7652).
  • Improve numerical stability of blur_effect (#7643).
  • Because under-determined fits are unreliable, skimage.measure.EllipseModel will now warn and return False (no fit) when fewer than 5 data points are provided (#7648).
  • Explicitly upcast data with dtype float16 to float32 in skimage.segmentation.random_walker; this fixes passing float16 on NumPy 1.26 (#7655).

Documentation

  • Don't use removed QuadContourSet.collections in gallery example (#7638).
  • Change old import convention in the gallery examples (#7630).

Infrastructure

  • Make apigen.py work with editable hooks (#7647).
  • Build Linux ARM wheels natively (#7664).

Maintenance

  • Infer floating point type for sigma parameter (#7637).
  • In skimage.segmentation.active_contour, change the type of the default argument for w_line to indicate it is a float (#7645).
  • Temporarily disable parallel building of gallery (#7656).
  • [pre-commit.ci] pre-commit autoupdate (#7649).
  • Skip flaky test on azure (#7669).

Contributors

8 authors added to this release (alphabetically):

8 reviewers added to this release (alphabetically):

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

v0.25.0

13 Dec 21:16
v0.25.0
f172eba

Choose a tag to compare

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. 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 (#7576).
  • Deprecate skimage.morphology.rectangle 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).
  • Deprecate skimage.morphology.cube 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).
  • Make sure that skimage.feature.plot_matched_features uses the same random colors, if matches_color isn't provided explicitly (#7541).
  • Allow passing a sequence of colors to the parameter matches_color in skimage.feature.plot_matched_features (#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](https://github.com/scikit-image/scikit...
Read more

v0.25.0rc2

10 Dec 18:59
v0.25.0rc2
ee3f821

Choose a tag to compare

v0.25.0rc2 Pre-release
Pre-release

scikit-image 0.25.0rc2

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

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 (#7576).
  • Deprecate skimage.morphology.rectangle 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).
  • Deprecate skimage.morphology.cube 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 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 edge case where setting watershed_lines=True in skimage.segmentation.watershed resulted in an incorrect solution (#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](https://github.com/scikit-image/...
Read more

v0.25.0rc1

07 Oct 07:58
v0.25.0rc1
5b79219

Choose a tag to compare

v0.25.0rc1 Pre-release
Pre-release

scikit-image 0.25.0rc1

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

New Features

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

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).

Enhancements

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

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).

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).

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).

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 skeletonize_3d (#7572).
  • Remove deprecated gaussian output parameter (#7574).

Contributors

21 authors added to this release (alphabetically):

20 reviewers added to this release (alphabetically):

Read more