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 2 of 2: morphology) #728

Merged

Conversation

grlee77
Copy link
Contributor

@grlee77 grlee77 commented Apr 21, 2024

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.

@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 self-assigned this Apr 21, 2024
@grlee77 grlee77 requested review from a team as code owners April 21, 2024 15:11
also attempt broadcast_to of provided alpha value
* replace remove_kwarg and deprecate_kwarg with deprecate_parameter
* rename gaussian parameter output->out
* add new intensity_std property
* fix bug in cache
* now warns if any image contained zero intensity everywhere
* add mode argument to control edge handling behavior
* pad any even length dimensions to odd to fix opening and closing behavior in even cases
* also adds boundary mode support for grayscale morphology functions
@grlee77 grlee77 force-pushed the skimage023_morphology_updates branch from 5bc3ed1 to 728f2af Compare April 21, 2024 15:17
* need check based on CuPy, not SciPy
store list in sorted order to avoid error like:
   Different tests were collected between gw1 and gw5
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 !
Looks good to me! (That's a lot of changes! ;) )

python/cucim/src/cucim/skimage/morphology/gray.py Outdated Show resolved Hide resolved
@grlee77
Copy link
Contributor Author

grlee77 commented May 16, 2024

/merge

@rapids-bot rapids-bot bot merged commit b23da22 into rapidsai:branch-24.06 May 16, 2024
45 checks passed
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

3 participants