Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement upstream changes from scikit-image 0.23 (part 1 of 2) #727

Merged
merged 23 commits into from
May 16, 2024

Conversation

grlee77
Copy link
Contributor

@grlee77 grlee77 commented Apr 21, 2024

This MR updates cuCIM for consistency with version scikit-image 0.23.2rc1. There were a relatively large number of changes in the morphology module, so I am going to submit those in a subsequent MR. I will also bump the scikit-image version pinning as part of that second MR.

The commits in this MR can be reviewed individually. Much of the new code is private functions in cucim.skimage._shared that are copied from upstream and don't need to be reviewed in detail.

The highlights are:

  • cucim.skimage.measure.regionprops (and regionprops_table) support one new region property: intensity_std
  • cucim.skimage.segmentation.expand_labels now supports a spacing keyword argument to take a pixel's physical dimensions into account.
  • additional modules use __init__.pyi instead of just __init__.py
  • various fixes to documentation strings (consistent shape notation, etc.)
  • adopted the private _shared/compat.py for future NumPy 2.0/SciPy compatibility
  • adopted private test utility assert_stacklevel
  • updated the private utility functions for handling deprecations to match those upstream
    • update existing decorators to the new ones
    • new rename of output->out for cucim.skimage.filters.gaussian

@grlee77 grlee77 added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Apr 21, 2024
@grlee77 grlee77 added this to the v24.06.00 milestone Apr 21, 2024
@grlee77 grlee77 requested a review from a team as a code owner April 21, 2024 14:53
Copy link
Contributor

@gigony gigony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @grlee77 for this change!
It looks good to me!

@grlee77
Copy link
Contributor Author

grlee77 commented May 16, 2024

/merge

@rapids-bot rapids-bot bot merged commit 0bd603a into rapidsai:branch-24.06 May 16, 2024
45 checks passed
rapids-bot bot pushed a commit that referenced this pull request May 16, 2024
…ology) (#728)

There were a number of non-trivial changes to the morphology module, so I broke those out from the other changes in #727. Please review and merge that MR first before reviewing this one.

Highlights from upstream are:
- binary morphology functions have a new `mode` argument that controls how values outside the image boundaries are interpreted
- grayscale morphology functions have new `mode` and `cval` arguments that control how boundaries are extended (these were already available in `scipy.ndimage`/`cupyx.scipy.ndimage`, they just weren't exposed via the `skimage`/`cuCIM` APIs)
- binary and grayscale morphology functions have bug fixes in the case of even-sized/non-symmetric footprints
  - additional corresponding test cases were added

Aside from the upstream changes, novel changes in this MR are:
- refactored utility functions to mirror and pad the footprints to allow use with the cuCIM-specific optimization of passing a tuple for rectangular footprints instead of explicitly allocating a GPU footprint array
- refactored some test cases to better use `pytest.mark.parametrize`
- some grayscale tests now compare directly to `skimage` CPU outputs instead fetching previously saved values
- bumped our version pinning for scikit-image to allow 0.23.x to be installed

I marked as "non-breaking" as the existing behavior has not changed except in the case of the bug fixes for even-sized footprints.

Authors:
  - Gregory Lee (https://github.com/grlee77)

Approvers:
  - Gigon Bae (https://github.com/gigony)
  - Jake Awe (https://github.com/AyodeAwe)

URL: #728
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement Improves an existing functionality non-breaking Introduces a non-breaking change
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

None yet

2 participants