Releases: rapidsai/cucim
v23.08.00
🚨 Breaking Changes
🐛 Bug Fixes
- Remove libwebp-base upper bound. (#599) @bdice
- Fix ignore_run_exports_from. (#596) @bdice
- Add ignore_run_exports for CUDA 11 (#593) @raydouglass
- Use linalg & inline
_get_manders_overlap_coeff
(#578) @jakirkham - Fix canny and butterworth (recent CuPy and NumPy compatibility) (#574) @grlee77
🛠️ Improvements
- Postponed the assessment of GPU memory for testing (#601) @gigony
- Do not use x86_64 GDS binaries for aarch64 (#590) @gigony
- remove checks for versions of scikit-image that are no longer supported (#587) @grlee77
- Allow scikit-image 0.21.0 (#580) @jakirkham
- Drop unneeded selector on
libwebp-base
(#579) @jakirkham - switch from bundled lazy loading code to the public lazy_loader package (#575) @grlee77
- Sync cuCIM API with scikit-image 0.21 (#573) @grlee77
- cuCIM: Build CUDA 12 packages (#572) @jakirkham
- use rapids-upload-docs script (#570) @AyodeAwe
- Remove documentation build scripts for Jenkins (#567) @ajschmidt8
v23.06.00
🚨 Breaking Changes
🐛 Bug Fixes
- Fix SHA256 check failure in test suite (#564) @grlee77
- Handle space character in ./run download_testdata (#556) @gigony
- Fix
return_error='always'
behavior in phase_cross_correlation (#549) @grlee77 - Only load versioned
libcufile
(#548) @jakirkham - add a 20 minute timeout for pytest runs on CI (#545) @grlee77
- protect against possible out of bounds memory access in 2D distance transform (#540) @grlee77
📖 Documentation
- Fix doc building via
run build_package
(#553) @grlee77 - update changelog for release 23.04.00 and 23.04.01 (#552) @grlee77
🛠️ Improvements
- Allow numpy 1.24. (#563) @bdice
- run docs nightly too (#560) @AyodeAwe
- Update cupy dependency (#558) @vyasr
- Remove libjpeg dependency (#557) @gigony
- Enable sccache hits from local builds (#551) @AyodeAwe
- Revert shared workflows branch (#550) @ajschmidt8
- Support Python 3.9 build/tests (#547) @shwina
- Remove usage of rapids-get-rapids-version-from-git (#546) @jjacobelli
- Use ARC V2 self-hosted runners for GPU jobs (#538) @jjacobelli
- Remove underscore in build string. (#528) @bdice
v23.04.01
🚨 Breaking Changes
🐛 Bug Fixes
- Fix bug in median filter with non-uniform footprint (#521) @grlee77
- use cp.around instead of cp.round for CuPy 10.x compatiblity (#508) @grlee77
- Fix error in LZ4-compressed Zarr writing demo (#506) @grlee77
- Normalize whitespace. (#474) @bdice
🛠️ Improvements
- Pin
libwebp-base
(#541) @ajschmidt8 - allow scikit-image 0.20 as well (#536) @grlee77
- Pass
AWS_SESSION_TOKEN
andSCCACHE_S3_USE_SSL
vars to conda build (#525) @ajschmidt8 - Update aarch64 to GCC 11 (#524) @bdice
- Update to GCC 11 (#522) @bdice
- Upgrade dockcross and pybind11 (#519) @gigony
- Binary morphology: omit weights array when possible (#517) @grlee77
- Fix inefficiency in handling clipping of image range in
resize
and other transforms (#516) @grlee77 - Fix GHA build workflow (#515) @AjayThorve
- Reduce error handling verbosity in CI tests scripts (#511) @AjayThorve
- Update shared workflow branches (#510) @ajschmidt8
- Remove gpuCI scripts. (#505) @bdice
- Move date to build string in
conda
recipe (#497) @ajschmidt8
v23.04.00
🚨 Breaking Changes
🐛 Bug Fixes
- Fix bug in median filter with non-uniform footprint (#521) @grlee77
- use cp.around instead of cp.round for CuPy 10.x compatiblity (#508) @grlee77
- Fix error in LZ4-compressed Zarr writing demo (#506) @grlee77
- Normalize whitespace. (#474) @bdice
🛠️ Improvements
- allow scikit-image 0.20 as well (#536) @grlee77
- Pass
AWS_SESSION_TOKEN
andSCCACHE_S3_USE_SSL
vars to conda build (#525) @ajschmidt8 - Update aarch64 to GCC 11 (#524) @bdice
- Update to GCC 11 (#522) @bdice
- Upgrade dockcross and pybind11 (#519) @gigony
- Binary morphology: omit weights array when possible (#517) @grlee77
- Fix inefficiency in handling clipping of image range in
resize
and other transforms (#516) @grlee77 - Fix GHA build workflow (#515) @AjayThorve
- Reduce error handling verbosity in CI tests scripts (#511) @AjayThorve
- Update shared workflow branches (#510) @ajschmidt8
- Remove gpuCI scripts. (#505) @bdice
- Move date to build string in
conda
recipe (#497) @ajschmidt8
v23.02.00
🚨 Breaking Changes
🐛 Bug Fixes
- apply bug fix to vendored ndimage code (#494) @grlee77
- Closes #490 -- fixes bug in hue jitter (#491) @benlansdell
- Fix random seed used in test_3d_similarity_estimation (#472) @grlee77
📖 Documentation
🚀 New Features
- Add colocalization measures (#488) @grlee77
- Add disambiguation option to phase_cross_correlation (skimage 0.20 feature) (#486) @grlee77
🛠️ Improvements
- Update shared workflow branches (#501) @ajschmidt8
- Update
isort
version to 5.12.0 (#492) @ajschmidt8 - Improve rank filtering performance by removing use of footprint kernel when possible (#485) @grlee77
- use vendored version of cupy.pad with added performance optimizations (#482) @grlee77
- add docs builds to Github Actions (#481) @AjayThorve
- Update
numpy
version specifier (#480) @ajschmidt8 - Build CUDA
11.8
and Python3.10
Packages (#476) @ajschmidt8 - Add GitHub Actions Workflows. (#471) @bdice
- Fix conflicts in "Forward-merge branch-22.12 to branch-23.02" (#468) @jakirkham
- Enable copy_prs. (#465) @bdice
v22.12.00
🚨 Breaking Changes
- Implement additional deprecations carried out for scikit-image 0.20 (#451) @grlee77
- improved implementation of ridge filters (bug fixes and reduced memory footprint) (#423) @grlee77
🐛 Bug Fixes
- pin to cmake !3.25.0 on CI to avoid bug with CUDA+conda during build (#444) @grlee77
- update incorrect argument and deprecated function for tifffile.TiffWriter (#433) @JoohyungLee0106
- Fix rotate behavior for ndim > 2 (#432) @grlee77
📖 Documentation
- add whole-slide tiled read/write demos for measuring GPUDirect Storage (GDS) I/O performance (#452) @grlee77
- Add demo for distance_transform_edt (#394) @grlee77
🚀 New Features
- Support no-compression method in converter (#443) @gigony
- add three segmentation metrics (#425) @grlee77
- add isotropic binary morphology functions (#421) @grlee77
- Add blob feature detectors (blob_dog, blob_log, blob_doh) (#413) @monzelr
🛠️ Improvements
- additional minor updates (skimage 0.20) (#455) @grlee77
- Implement additional deprecations carried out for scikit-image 0.20 (#451) @grlee77
- Faster
hessian_matrix_*
andstructure_tensor_eigvals
via analytical eigenvalues for the 3D case (#434) @grlee77 - use fused kernels to reduce overhead in corner detector implementations (#426) @grlee77
- Misc updates for consistency with scikit-image 0.20 (#424) @grlee77
- improved implementation of ridge filters (bug fixes and reduced memory footprint) (#423) @grlee77
- analytical moments computations, support pixel spacings in moments and regionprops (#422) @grlee77
- Forward merge branch-22.10 to branch-22.12 (#420) @grlee77
- Support
sampling
kwarg fordistance_transform_edt
(take pixel/voxel sizes into account) (#407) @grlee77 - Improve performance of Euclidean distance transform (#406) @grlee77
v22.10.00
🐛 Bug Fixes
- Correctly use dtype when computing shared memory requirements of separable convolution (#409) @grlee77
- Forward-merge branch-22.08 to branch-22.10 (#403) @jakirkham
- Add missing imports of euler_number and perimeter_crofton (#386) @grlee77
📖 Documentation
- update pypi CHANGELOG.md for releases 22.08.00 and 22.08.01 (#404) @grlee77
- Update README.md (#396) @HesAnEasyCoder
🚀 New Features
- Allow cupy 11 (#399) @galipremsagar
- Add cucim.skimage.feature.match_descriptors (#338) @grlee77
🛠️ Improvements
- Merge docs and add links (#415) @jakirkham
- Add benchmarks for scikit-image functions introduced in 22.08 (#378) @grlee77
v22.08.01
v22.08.00
🚨 Breaking Changes
🐛 Bug Fixes
- create SimilarityTransform using CuPy 9.x-compatible indexing (#365) @grlee77
- Add
__init__.py
incucim.core
(#359) @jakirkham - Stain extraction: use a less strict condition across channels when thresholding (#316) @grlee77
- Incorporate bug fixes from skimage 0.19.3 (#312) @grlee77
- fix RawKernel bug for canny filter when quantiles are used (#310) @grlee77
📖 Documentation
- Defer loading of
custom.js
(#383) @galipremsagar - add cucim.core.morphology to API docs + other docstring fixes (#367) @grlee77
- Update README.md (#361) @HesAnEasyCoder
- remove unimplemented functions from See Also and fix version numbers in deprecation warnings (#356) @grlee77
- Forward-merge branch-22.06 to branch-22.08 (#344) @grlee77
- Update README.md (#315) @HesAnEasyCoder
- Update index.rst (#314) @HesAnEasyCoder
- Update PyPI package documentation for v22.06.00 (#311) @gigony
🚀 New Features
- Add segmentation with the Chan-Vese active contours method (#343) @grlee77
- Add cucim.skimage.morphology.medial_axis (#342) @grlee77
- Add cucim.skimage.segmentation.expand_labels (#341) @grlee77
- Add Euclidean distance transform for images/volumes (#318) @grlee77
🛠️ Improvements
- Revert "Allow CuPy 11" (#362) @galipremsagar
- Fix issues with day & night modes in python docs (#360) @galipremsagar
- Allow CuPy 11 (#357) @jakirkham
- more efficient separable convolution (#355) @grlee77
- Support resolution and spacing metadata (#349) @gigony
- Performance optimizations to morphological segmentation functions (#340) @grlee77
- benchmarks: avoid use of deprecated pandas API (#339) @grlee77
- Reduce memory overhead and improve performance of normalize_colors_pca (#328) @grlee77
- Protect against obscure divide by zero error in edge case of
normalize_colors_pca
(#327) @grlee77 - complete parametrization of cucim.skimage benchmarks (#324) @grlee77
- parameterization of
filters
andfeatures
benchmarks (v2) (#322) @grlee77 - Add a fast histogram-based median filter (#317) @grlee77
- Remove custom compiler environment variables (#307) @ajschmidt8
v22.06.00
The 22.06.00 release adds a new function cucim.skimage.segmentation.clear_border
that can be used to remove any labels touching the image/volume border. There are also new functions for stain extraction and normalization of digital pathology slides stained with hematoxyling and eosin: cucim.core.operations.color.stain_extraction_pca
and cucim.core.operations.color.normalize_colors_pca
.
Aside from this, there are also a number of performance improvements. Specifically, edge detection with cucim.skimage.feature.canny
should be 3-4x faster than previously. Binary and grayscale morphological operations can now be performed much faster for large footprint sizes. To take advantage of this, set the decomposition
kwarg of the footprint-generation functions to 'series'
, 'separable'
or 'crosses'
, as available. This provides a sequence of small footprints (structuring elements) that can be passed to the footprint
argument of any morphology function, enabling identical output in a much shorter run time. The specific functions in cucim.skimage.morphology
that support this new feature are square
, rectangle
, diamond
, disk
, ellipse
, octagon
, cube
, ball
and octahedron
.
One backward incompatible change was made to the dtype used when casting 8 and 16-bit signed and unsigned integer data types to floating point. Specifically when functions convert these types to floating point, 32-bit precision will now be used. Previously these were promoted to 64-bit floating point as in upstream scikit-image. This change was made to improve performance and reduce memory consumption.
Although not new to this release, we would like to encourage users to set the CUPY_ACCELERATORS environment variable to "cub,cutensor". This improves the performance of many functions involving histograms (e.g. cucim.skimage.filters.threshold_otsu
) or reduction operations (e.g. cucim.skimage.transform.integral_image
).
Additional details of the changes in this release are given below.
🚨 Breaking Changes
🐛 Bug Fixes
- Populate correct channel names for RGBA image (#294) @gigony
- Merge branch-22.04 into branch-22.06 (#258) @jakirkham
- Fix: return object-typed properties as NumPy arrays in
skimage.measure.regionprops_table
(#272) @alxndrkalinin
📖 Documentation
🚀 New Features
- add missing
cucim.skimage.segmentation.clear_border
function (#267) @grlee77 - add
cucim.core.operations.color.stain_extraction_pca
andcucim.core.operations.color.normalize_colors_pca
for digital pathology H&E stain extraction and normalization (#273) @grlee77, @drbeh
🛠️ Improvements
- Update to use DLPack v0.6 (#295) @gigony
- Remove plugin-related messages temporarily (#291) @gigony
- Simplify recipes (#286) @Ethyling
- Use cupy.fuse to improve efficiency hessian_matrix_eigvals (#280) @grlee77
- Promote small integer types to single rather than double precision (#278) @grlee77
- improve efficiency of histogram-based thresholding functions (#276) @grlee77
- Enable footprint decomposition for morphology (#274) @grlee77
- Remove unused dependencies in GPU tests job (#268) @Ethyling
- Use conda compilers (#232) @Ethyling
- Build packages using mambabuild (#216) @Ethyling
New Contributors
- Alexandr Kalinin (@alxndrkalinin) made their first contribution in #272
- Behrooz Hashemian (@drbeh) made their first contribution in #273