Releases: funkelab/gunpowder
v1.4.3
What's Changed
- fix deprecation of z_section_wise in IntensityAugment by @neptunes5thmoon in #227
- Improve DeformAugment - Faster processing, now uses zoom instead of map_coordinates for interpolating values to a new voxel size. Better documentation. Removed unused code.
- Improved error messages for RandomLocation. No longer gives an incorrect "AssertionError: Can not pick a random location, intersection of upstream ROIs is unbounded." When the upstream roi's are not actually unbounded. Instead properly checks for the unbounded case and gives a more informative error including both the request and upstream spec.
Full Changelog: v1.4.2...v1.4.3
v1.4.2
v1.4.2
Changelog:
- Bugfix, DeformAugment: No longer creates new dependency request, instead modifies dependencies in place. This is because creating a new dependency request results in it being unioned with the provided request instead of replacing it. I.e. if you request a 1x10 array, DeformAugment rotates it to 10x1, you could be requesting the union and fetching a 10x10 array.
- Feature Expansion, DeformAugment: You can now rotate with non isotropic control point spacing. This throws a warning because it may result in large deformations.
v1.4.1
Features:
- @pattonw (902afa9) intensity augment takes a "slabs" argument, allowing intensities to be augmented per slice.
- @pattonw (1701741) add support for specifying rotation axes in
DeformAugment.
Bug fixes:
- @yajivunev (0e5aa79) snapshot nodes uses "voxel_size" instead of "resolution" to define the size of each pixel
- @cmalinmayor (87cb530) "assert plain" in pytest. See scipy/scipy#22236
- @cmalinmayor (ac31a15) fix missing import in GPGraphSource, expand test coverage for GPGraphSource
- @cmalinmayor (9e1ac02) fix bug in
DeformAugmentthat failed when all nodes were lost to interpolation. Expand test coverage forDeformAugment - @pattonw (ad893da) fix bug where loss function keyword arguments were requiring a "loss_" prefix. Expand test coverage for this case.
Quality of life:
- @cmalinmayor improve ruff/mypy coverage
- @pattonw update CI/CD docs workflow
v1.4.0
changelog:
features
add probability for applying augmentation nodes via an overrideable can_skip method.
errors now print in reversed order
improve CSVReader to use built in python csv reader
torch predict supports arrays as position arguments
add funlib.persistence.Array source
add ScanCallback
bugfixes:
pytorch train: move hooks to being added in start method. This caused problems when trying to run the model in some multithreaded use cases.
Deform Augment subsampling fixed
avoid np.sctypes["float"] to work on numpy >= 2.0
v1.3.4
Bug fixes:
- Snapshot node: removed depricated numpy function
np.asscalar. Improved docstring to mention zarr storage options - Moved two sources from tests to gunpowder.
GPArraySourceandGPGraphSourcewhich make it easy to provide data directly to your pipeline by providing a simple array or graph along with their associated key. - remove many references to depricated
scipy.ndimagesubmodules (measurements,morphology,interpolation). - Simplify the
RandomLocationprovidemethod since it doesn't need the same features as theBatchFilterit inherits from. - Fix subsampling in the
DeformAugment. Add tests to cover this behavior
v1.3.3
- Fix bugs in RasterizeGraph edge coloring
- Resample Node no longer results in volume shrinkage by 1 pixel
- SpecifiedLocation won't get stuck in an infinite loop if None of the points to choose from are valid, instead throws an error.
- removed references to
np.float128which may not be available on all platforms (mac). Tests now pass on mac. - Removed code for python 2 compatibility
- padding falls back on 'constant' if mode provided is not supported
v1.3.2
Merging patch branch into master and making new release
Change Log:
bugs fixed:
- torch nodes forward hooks moved to start method of nodes to work better with the
spawn_subprocessflag - torch train/predict work when setting multiprocessing start method = "spawn"
- fixed bug in rasterize graph due to usage of the old api for accessing graph nodes
new features:
- torch nodes support defining specific cuda devices via e.g. "cuda:0"
- added support for "reflect" mode padding in the pad node
- improved error printing.
- Reversed the order of exceptions so the cause of the error is printed at the bottom, and you can scroll up to trace the requests and batches through the tree. Now we no longer need to scroll to the top to see the cause of the error,
- PreCache and other multiprocessing nodes no print repeats of the same error, it is simply printed once
- removed unhelpful tracebacks (and many repititions) for the
try,exceptblocks in node superclasses
general improvements:
- moved many tests from unittest to pytest, adding parametrization to simplify them and cover more cases
- improved the dependency version bounds
- improved docs, formatting, and pass more ci/cd workflows
- removed unused imports and f-strings
V1.3.1
Bug fixes:
- RandomLocation is more robust to rounding errors when selecting locations based on points
- Request seeds have been updated to be less likely to accidentally repeat
- Torch Predict can now take checkpoints that were saved directly instead of as dicts
- zarr read/write now properly inverts voxel size for n5 containers
v1.3
Change log:
Features:
- Added
GraphSourcewith tests and added to docs - Added
IterateLocationsnode with tests and added to docs - Added
write_ifhelper function toSnapshotthat can be overwritten for data dependent snapshot saving - Added Jax
Train/Predictnodes RandomLocationcan save the chosen location to a nonspatial array.- support the
spawnstart method for gunpowder subprocesses ZarrSourceandZarrWritenow matchzarr.openconvenience functionHDF5LikeSourceandHDF5LikeWritedepricatedElasticAugmentdepricatedDeformAugmentreplacesElasticAugmentand works in world units.
Dependencies:
- Switched to
funlib.geometryforRoiandCoordinateto make use with daisy and other similar libraries simpler - Update daisy version in dependencies
Bug Fixes:
- avoid hanging teardown in generic predict if worker process dies
- fix nonspatial array handling during training
- up/downsampling arrays with channel dimensions works now
- removed depricated numpy dtypes (np.int, np.bool, ...)
v1.1
Change log:
- add PyTorch
TrainandPredictnodes - introduce
gunpowder.Graphto replacegunpowder.Points - add support for non-spatial arrays (like one-hot classification vectors)
- add
Stackto create batches with multiple samples - add
Upsample - improved logging/error messages
- guarantee availability of requested dependencies, independent of other node's requests
- several minor bugfixes