|
| 1 | +v2.4.0 (2025-12-09) |
| 2 | +=================== |
| 3 | + |
| 4 | +Breaking Changes |
| 5 | +---------------- |
| 6 | + |
| 7 | +- The minimum supported version of some dependencies has increased: |
| 8 | + |
| 9 | + * python >= 3.11 |
| 10 | + * astropy >= 6.0 |
| 11 | + * gwcs >= 0.20 |
| 12 | + * numpy >= 1.26 |
| 13 | + * scipy >= 1.12 |
| 14 | + * matplotlib >= 3.8 |
| 15 | + * mpl_animators >= 1.1 |
| 16 | + * reproject >= 0.11 (`#776 <https://github.com/sunpy/ndcube/pull/776>`__, `#889 <https://github.com/sunpy/ndcube/pull/889>`__) |
| 17 | +- Make `ndcube.NDCube.crop` exclude rightward pixel when upper limit determined from world points falls exactly on a pixel edge. (`#874 <https://github.com/sunpy/ndcube/pull/874>`__) |
| 18 | + |
| 19 | + |
| 20 | +New Features |
| 21 | +------------ |
| 22 | + |
| 23 | +- Add support for serialization of most `ndcube` objects to ASDF files. (`#776 <https://github.com/sunpy/ndcube/pull/776>`__) |
| 24 | +- Allows addition of an ``NDCube`` and ``NDData`` (with the WCS of ``NDData`` being set to None), and combines their uncertainties and masks. (`#794 <https://github.com/sunpy/ndcube/pull/794>`__) |
| 25 | +- Added Ellipsis functionality to ndcube.mixins.ndslicing (`#818 <https://github.com/sunpy/ndcube/pull/818>`__) |
| 26 | +- Added ``fill_masked`` method to ``NDCube``, a new feature which allows users to replace masked values and uncertainty values with user-given fill values, |
| 27 | + to change the mask values back to False or not (Default), and to set whether the new instance is returned (Default) or not. (`#829 <https://github.com/sunpy/ndcube/pull/829>`__) |
| 28 | +- Allows multiplication of an ``NDCube`` and ``NDData`` (with the WCS of ``NDData`` being set to None), and handles their units, uncertainties and masks. (`#840 <https://github.com/sunpy/ndcube/pull/840>`__) |
| 29 | +- Allow constructing a NDCollection with a dictionary. (`#841 <https://github.com/sunpy/ndcube/pull/841>`__) |
| 30 | +- Enable subtraction and division of `~ndcube.NDCube` by an `~astropy.nddata.NDData` instance (without a WCS), including uncertainty, mask and unit support. (`#880 <https://github.com/sunpy/ndcube/pull/880>`__) |
| 31 | +- Add new method, `ndcube.NDCube.to_nddata`, which allows easy conversion of an `~ndcube.NDCube` to a subclass of `~astropy.nddata.NDData`. Attribute values can be altered during the conversion by supplying the new values via kwargs. (`#887 <https://github.com/sunpy/ndcube/pull/887>`__) |
| 32 | +- `~ndcube.NDCube` now accepts ``global_coords=`` and ``extra_coords=`` in the constructor of the class. (`#892 <https://github.com/sunpy/ndcube/pull/892>`__) |
| 33 | + |
| 34 | + |
| 35 | +Bug Fixes |
| 36 | +--------- |
| 37 | + |
| 38 | +- Removed the check for compatible coordinate systems within `~ndcube.NDCube.reproject_to` as it was redundant. (`#833 <https://github.com/sunpy/ndcube/pull/833>`__) |
| 39 | +- Fix conversion in `~ndcube.wcs.wrappers.resampled_wcs.ResampledLowLevelWCS` between original and resampled pixel grids. This fixes an accuracy issue in ``NDCube`` objects which have had the `ndcube.NDCube.rebin` method applied. (`#857 <https://github.com/sunpy/ndcube/pull/857>`__) |
| 40 | +- Enable length-1 inputs to `ndcube.NDCube.crop`, not only scalars. (`#863 <https://github.com/sunpy/ndcube/pull/863>`__) |
| 41 | +- Fix bug in `ndcube.NDCube.crop` revealed by trying to crop a 1-D cube. It was caused by the code creating a `~astropy.wcs.wcsapi.SlicedLowLevelWCS` object with a ``slice(None)`` slice item. (`#872 <https://github.com/sunpy/ndcube/pull/872>`__) |
| 42 | +- Prevent `~ndcube.NDCube.crop` cropping array axes of a cube to length 0 when: 1, an input point is below the extent of the cube due to misinterpreting negative array indices; 2, all point lie above the extent of the cube. (`#874 <https://github.com/sunpy/ndcube/pull/874>`__) |
| 43 | +- Fixed adding unitful `~ndcube.NDCube` and ``astropy.nddata.NDData`` objects backed by ``dask`` not preserving underlying arrays as ``dask`` arrays. (`#880 <https://github.com/sunpy/ndcube/pull/880>`__) |
| 44 | +- Fix bug where error was returned rather than raised with trying to perform arithmetic operation between `~ndcube.NDCube` and an object whose WCS attribute is not ``None``. (`#880 <https://github.com/sunpy/ndcube/pull/880>`__) |
| 45 | + |
| 46 | + |
| 47 | +Documentation |
| 48 | +------------- |
| 49 | + |
| 50 | +- Clarified an error message that cropping to single pixel is not supported only when ``keepdims=False`` (the default value). (`#869 <https://github.com/sunpy/ndcube/pull/869>`__) |
| 51 | +- Fix a mistake in the docstring for `ndcube.NDCube.rebin`, which misdescribed the behaviour of the ``-1`` sentinel value. (`#885 <https://github.com/sunpy/ndcube/pull/885>`__) |
| 52 | + |
| 53 | + |
| 54 | +Internal Changes |
| 55 | +---------------- |
| 56 | + |
| 57 | +- Make `~ndcube.visualization.mpl_plotter.MatplotlibPlotter` only add data to line plots if at least one value of the data is unmasked and finite. (`#802 <https://github.com/sunpy/ndcube/pull/802>`__) |
| 58 | +- Breaks ``test_ndcube`` module into multiple to make development and maintenance easier. (`#844 <https://github.com/sunpy/ndcube/pull/844>`__) |
| 59 | + |
| 60 | + |
1 | 61 | 2.3.0 (2025-01-14) |
2 | 62 | ================== |
3 | 63 |
|
|
0 commit comments