Skip to content

Releases: sunpy/ndcube

2.4.0

14 Jan 15:00
v2.4.0
76c5821

Choose a tag to compare

Breaking Changes

  • The minimum supported version of some dependencies has increased:
    • python >= 3.11
    • astropy >= 6.1
    • gwcs >= 0.21
    • numpy >= 1.26
    • scipy >= 1.12
    • matplotlib >= 3.9
    • mpl_animators >= 1.2
    • reproject >= 0.14 (#776, #889)
  • Make ndcube.NDCube.crop exclude rightward pixel when upper limit determined from world points falls exactly on a pixel edge. (#874)

New Features

  • Add support for serialization of most ndcube objects to ASDF files. (#776)
  • Allows addition of an NDCube and NDData (with the WCS of NDData being set to None), and combines their uncertainties and masks. (#794)
  • Added Ellipsis functionality to ndcube.mixins.ndslicing (#818)
  • Added fill_masked method to NDCube, a new feature which allows users to replace masked values and uncertainty values with user-given fill values, to change the mask values back to False or not (Default), and to set whether the new instance is returned (Default) or not. (#829)
  • Allows multiplication of an NDCube and NDData (with the WCS of NDData being set to None), and handles their units, uncertainties and masks. (#840)
  • Allow constructing a NDCollection with a dictionary. (#841)
  • Enable subtraction and division of ~ndcube.NDCube by an ~astropy.nddata.NDData instance (without a WCS), including uncertainty, mask and unit support. (#880)
  • 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)
  • ~ndcube.NDCube now accepts global_coords= and extra_coords= in the constructor of the class. (#892)

Bug Fixes

  • Removed the check for compatible coordinate systems within ~ndcube.NDCube.reproject_to as it was redundant. (#833)
  • 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)
  • Enable length-1 inputs to ndcube.NDCube.crop, not only scalars. (#863)
  • 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)
  • 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)
  • Fixed adding unitful ~ndcube.NDCube and astropy.nddata.NDData objects backed by dask not preserving underlying arrays as dask arrays. (#880)
  • 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)

Documentation

  • Clarified an error message that cropping to single pixel is not supported only when keepdims=False (the default value). (#869)
  • Fix a mistake in the docstring for ndcube.NDCube.rebin, which misdescribed the behaviour of the -1 sentinel value. (#885)

Internal Changes

  • 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)
  • Breaks test_ndcube module into multiple to make development and maintenance easier. (#844)

2.3.4

06 Oct 10:15
v2.3.4
9fa4d3f

Choose a tag to compare

Documentation

  • Fix a mistake in the docstring for ndcube.NDCube.rebin, which misdescribed the behaviour of the -1 sentinel value. (#885)

2.3.3

02 Oct 13:54
v2.3.3
b80c9e5

Choose a tag to compare

Bug Fixes

  • 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)

Documentation

  • Clarified an error message that cropping to single pixel is not supported only when keepdims=False (the default value). (#869)

v2.3.2

12 Jun 15:24

Choose a tag to compare

What's Changed

Full Changelog: v2.3.1...v2.3.2

v2.3.1

12 Jun 15:23

Choose a tag to compare

What's Changed

Full Changelog: v2.3.0...v2.3.1

v2.3.0

16 Jan 08:45
v2.3.0
5181bb2

Choose a tag to compare

Breaking Changes

  • "dimensions" property on ndcube.NDCube and ndcube.NDCubeSequence have been deprecated and replaced by "shape" (#684)

Removals

  • The ability to create an .NDCollection object with numerical keys is deprecated as it leads to ambiguous behavior when slicing the collection. (#778)

New Features

  • Add Sliceable ndcube.meta.NDMeta class for axis-associated metadata. (#455)
  • Added a new ndcube.NDCube.squeeze method to ndcube.NDCube. It will remove all axes of length 1. (#669)
  • Added ndcube.NDCube.quantity attribute to ndcube.NDCube to return the data array with in the cube with the physical units stored in the ndcube.NDCube.unit attribute. (#677)
  • Enable ndcube.NDCube to be raised to a power. (#678)
  • Added ndcube.NDCube.shape as a replacement for "dimensions". (#684)
  • Enable rtruediv on ~ndcube.NDCube such that a user can now do 1/ndcube.NDCube. (#685)
  • Add a keepdims=False kwarg to ndcube.NDCube.crop and ndcube.NDCube.crop_by_values setting to true keeps length-1 dimensions default behavior drops these dimensions. (#732)
  • When calling ndcube.NDCubeBase.axis_world_coords or ndcube.NDCubeBase.axis_world_coords_values with a specific axis or axes specified, the methods now avoid doing calculations for any other uncorrelated axes, offering significant speedups when those other axes are large. (#767)
  • Add support for passing -1 as an element of the bin_shape argument to .NDCube.rebin which will not rebin along that dimension (sets the bin shape to equal the data shape). (#777)
  • It is now possible to set the NDCube.data property of a cube with an array of the same shape and unit as the current cube. (#795)

Bug Fixes

  • ndcube.NDCube.rebin bin_shape argument now accepts a astropy.units.Quantity as input if the units are convertible to pixels. (#744)
  • Fix support for astropy 7.0, this involved a change to CompoundLowLevelWCS so that in handles pixel_bounds if only one component WCS sets a pixel bound. (#772)
  • Fixed a bug which caused NDCubeSequence.cube_like_dimensions to break. (#788)
  • Added an internal code to shortcut non-correlated axes avoiding the creation of a full coordinate grid, reducing memory use in specific circumstances. (#798)

Documentation

  • Added a gallery example (sphx_glr_generated_gallery_creating_even_spaced_wavelength_visualisation.py) showcasing how to create a visualisation of unevenly spaced wavelength data cube using AIA data. (#691)
  • Added a gallery example (sphx_glr_generated_gallery_creating_a_gwcs_from_quantities.py) showcasing how to create a GWCS from quantities. (#695)

Internal Changes

  • Move code creating a masked array for ndcube.NDCube.rebin to a private function which is then called by ndcube.NDCube.rebin. (#705)
  • Added explicit support for numpy 2.0. (#729)

v2.2.4

23 Oct 19:35

Choose a tag to compare

Full Changelog: v2.2.3...v2.2.4

v2.2.3

23 Oct 14:58

Choose a tag to compare

What's Changed

Full Changelog: v2.2.2...v2.2.3

v2.2.2

18 Jun 18:36

Choose a tag to compare

Added support for numpy 2.0

v2.2.1post

17 Jun 16:57
46386d5

Choose a tag to compare

Fix version in the documentation sidebar.