Skip to content

Commit

Permalink
Render changelog for 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Cadair committed Oct 29, 2021
1 parent 25fe62e commit 1394b28
Show file tree
Hide file tree
Showing 78 changed files with 145 additions and 116 deletions.
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ Aoife Maria Ryan <ryana38@tcd.ie> aoife <ryana38@tcd.ie>
Baptiste Pellorce <baptiste.pellorce@etu.univ-lyon1.fr> Baptiste PELLORCE <baptiste.pellorce@etu.univ-lyon1.fr>
Baptiste Pellorce <baptiste.pellorce@etu.univ-lyon1.fr> Baptiste Pellorce <37335327+BaptistePellorceAstro@users.noreply.github.com>
Yash Sharma <yashrsharma44@gmail.com> Yash <yashrsharma44@gmail.com>
Laura Hayes <hayesla@tcd.ie> hayesla <hayesla@tcd.ie>
128 changes: 128 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,131 @@
2.0.0 (2021-10-29)
==================

Backwards Incompatible Changes
------------------------------

- Remove unused util functions and the ndcube WCS class. Refactor util functions for converting between between data and WCS indices to reflect the APE14 nomenclature that distinguishes between array, pixel and world axes. (`#280 <https://github.com/sunpy/ndcube/pull/280>`__)
- NDCubeSequence animation axes can no longer be set by extra coords. (`#294 <https://github.com/sunpy/ndcube/pull/294>`__)
- ImageAnimatorNDCubeSequence, ImageAnimatorCubeLikeNDCubeSequence, LineAnimatorNDCubeSequence and LineAnimatorCubeLikeNDCubeSequence have been removed and replaced by NDCubeSequenceAnimator. (`#294 <https://github.com/sunpy/ndcube/pull/294>`__)
- Change type of output of `.NDCollection.aligned_world_axis_physical_types` from tuple to list. This is to be consistent with output of `astropy.wcs.WCS.world_axis_physical_types`. (`#302 <https://github.com/sunpy/ndcube/pull/302>`__)
- Change output type when common axis item is a slice that covers only one subcube. Previously this would return an NDCube. Now an NDCubeSequence is always returned unless the common axis item is an integer. Also, refactor NDCubeSequence.index_as_cube so codebase is simpler. (`#311 <https://github.com/sunpy/ndcube/pull/311>`__)
- Replace NDCube.crop_by_coords and NDCube.crop_by_extra_coords with new method, NDCube.crop (`#316 <https://github.com/sunpy/ndcube/pull/316>`__)
- Remove NDCubeSequence plotting. (`#322 <https://github.com/sunpy/ndcube/pull/322>`__)
- Update `.NDCube.array_axis_physical_types` return physical types from extra coords as well as the WCS. (`#338 <https://github.com/sunpy/ndcube/pull/338>`__)
- Rename `.ExtraCoords.add` method from previous name "add_coordinate". (`#394 <https://github.com/sunpy/ndcube/pull/394>`__)
- The `~.NDcube` object no longer inherits from `astropy.nddata.NDArithmeticMixin` as the methods were not coordinate aware. (`#457 <https://github.com/sunpy/ndcube/pull/457>`__)


Deprecations and Removals
-------------------------

- Remove `NDCube.pixel_to_world` and `NDCube.world_to_pixel`. (`#300 <https://github.com/sunpy/ndcube/pull/300>`__)
- Remove ``world_axis_physical_types`` methods from `.NDCube` and `.NDCubeSequence`. (`#302 <https://github.com/sunpy/ndcube/pull/302>`__)
- Remove NDCubeSequence.sequence_axis_extra_coords. This is replaced by NDCubeSequence.sequence_axis_coords. (`#335 <https://github.com/sunpy/ndcube/pull/335>`__)
- Remove `ndcube.NDCubeSequence.common_axis_extra_coords`. Will be replaced by `ndcube.NDCubeSequence.common_axis_coords`. (`#344 <https://github.com/sunpy/ndcube/pull/344>`__)
- Remove NDCollection.aligned_world_axis_physical_types. It will be replaced by `~ndcube.NDCollection.aligned_axis_physical_types`. (`#347 <https://github.com/sunpy/ndcube/pull/347>`__)


Features
--------

- Implement a new `.ExtraCoords` class which allows the specification of extra coordinates via lookup tables or WCS. This class exposes the extra coords as an APE 14 WCS object. (`#271 <https://github.com/sunpy/ndcube/pull/271>`__)
- Add new method, `~ndcube.NDCube.axis_world_coord_values`, to return world coords for all pixels for all axes in WCS as quantity objects. (`#279 <https://github.com/sunpy/ndcube/pull/279>`__)
- Added a new method `ndcube.NDCube.array_axis_physical_types` to show which physical types are associated with each array axis. (`#281 <https://github.com/sunpy/ndcube/pull/281>`__)
- Add properties to NDCubeSequence giving the world physical types for each array axis. (`#301 <https://github.com/sunpy/ndcube/pull/301>`__)
- Add as_mpl_axes method to NDCube plotting mixin so the an NDCube can be provided to astropy WCSAxes as a projection. (`#314 <https://github.com/sunpy/ndcube/pull/314>`__)
- Make pyplot colorbar work with the output on NDCube.plot when it is a 2D image. (`#314 <https://github.com/sunpy/ndcube/pull/314>`__)
- Introduce a new class, `~ndcube.global_coords.GlobalCoords`, for holding scalar coordinates that don't apply to any pixel axes. (`#323 <https://github.com/sunpy/ndcube/pull/323>`__)
- Implement `.NDCube.world_axis_coords` which returns high level coordinate
objects for all, or a subset of, axes. (`#327 <https://github.com/sunpy/ndcube/pull/327>`__)
- New property, NDCubeSequence.sequence_axis_coords creates lists of GlobalCoords from each NDCube in the sequence. This replaces NDCubeSequence.sequence_axis_extra_coords, but because it uses the GlobaCoords infrastructure, can handle more than just coords that began as extra coords. (`#335 <https://github.com/sunpy/ndcube/pull/335>`__)
- Implement `ndcube.NDCubeSequence.common_axis_coords` to replace `~ndcube.NDCubeSequence.common_axis_extra_coords`. In contrast to old property, this new property collates coordinates from the wcs as well as extra_coords. (`#344 <https://github.com/sunpy/ndcube/pull/344>`__)
- New property, `ndcube.NDCollection.aligned_axis_physical_types`. This replaces `~ndcube.NDCollection.aligned_world_axis_physical_types` and returns a list of tuples, where each tuple gives the physical types common between all memebers of the collection for a given aligned axis. (`#347 <https://github.com/sunpy/ndcube/pull/347>`__)
- Allow `ndcube.NDCubeSequence.explode_along_axis` to explode sequence along any axis, not just the common axis. (`#358 <https://github.com/sunpy/ndcube/pull/358>`__)
- Plotting functionality on `NDCube` has been refactored to use pluggable
"plotter" classes. All plotting functionality can now be accessed via the
`.NDCube.plotter` attribute, with `.NDCube.plot` becoming an alias for
`.NDCube.plotter.plot`.

Advanced users, or package maintainers that which to customise the plotting
functionality of an ``NDCube`` instance can set the ``.plotter`` attribute of
a cube to be a subclass of `ndcube.visualization.BasePlotter` which then
customises the behaviour of the ``NDCube.plot()`` method and provides any other
methods implemented on the plotter. (`#401 <https://github.com/sunpy/ndcube/pull/401>`__)
- Preserve sliced-out coordinates from WCS in the GlobalCoords instance. (`#402 <https://github.com/sunpy/ndcube/pull/402>`__)
- Enable instantiating an NDCube from an existing NDCube by copying extra/global coords. (`#404 <https://github.com/sunpy/ndcube/pull/404>`__)
- Support exposing dropped dimensions when `.ExtraCoords` is sliced. (`#411 <https://github.com/sunpy/ndcube/pull/411>`__)
- `~ExtraCoords` is now explicitly limited to one dimensional tables because of a limitation in our use of `astropy.modeling`. (`#414 <https://github.com/sunpy/ndcube/pull/414>`__)
- Adds functionality to reproject an `~.NDCube` object to coordinates described by another WCS or FITS Header by calling the new `~.NDCube.reproject_to` method. (`#434 <https://github.com/sunpy/ndcube/pull/434>`__)
- Change the ``edges=`` keyword to ``pixel_corners=`` in
`NDCube.axis_world_coords` and `NDCube.axis_world_coords_values` to make its
meaning clearer based on SEP feedback. (`#437 <https://github.com/sunpy/ndcube/pull/437>`__)
- `~.NDCube.axis_world_coords` and `~.NDCube.axis_world_coords_values` now use a different, substantially faster and more memory efficient algorithm to generate the coordinates along all axes. (`#442 <https://github.com/sunpy/ndcube/pull/442>`__)
- Extends `~.NDCube.reproject_to` functionality by supporting ``adaptive`` and ``exact`` algorithms for an `~NDCube` with 2D celestial WCS. (`#448 <https://github.com/sunpy/ndcube/pull/448>`__)
- Introduce optional offset between old and new pixel grids in `~ndcube.wcs.wrappers.resampled_wcs.ResampledLowLevelWCS`. (`#449 <https://github.com/sunpy/ndcube/pull/449>`__)
- `.ExtraCoords.from_lookup_table` accepts (a seqence of) ``physical_types`` as kwarg to set the types of its ``lookup_tables``. (`#451 <https://github.com/sunpy/ndcube/pull/451>`__)
- Create new plotter class for animating `~ndcube.NDCubeSequence` is the 2.0 framework. This class always sets the sequence axis as a slider and leverages `ndcube.NDCube.plot`. (`#456 <https://github.com/sunpy/ndcube/pull/456>`__)
- Add ``__len__`` method to `~ndcube.NDCubeSequence` which makes ``len(sequence)`` return the number of cubes in the sequence. (`#464 <https://github.com/sunpy/ndcube/pull/464>`__)
- Add ``__iter__`` method to `~ndcube.NDCubeSequence` which iterates through the cubes within the sequence. (`#465 <https://github.com/sunpy/ndcube/pull/465>`__)
- Add property to `~ndcube.extra_coords.ExtraCoords` that returns a WCS of extra coords that describes all axes of associated cube. (`#472 <https://github.com/sunpy/ndcube/pull/472>`__)


Bug Fixes
---------

- Fix NDCollection.aligned_dimensions so it doesnt crash when components of collection are NDCubeSequences. (`#264 <https://github.com/sunpy/ndcube/pull/264>`__)
- Generalize int type checking so it is independent of the bit-type of the OS. (`#269 <https://github.com/sunpy/ndcube/pull/269>`__)
- Fix axis_world_coord_values when the WCS is 1D and ensure it always returns
Quantities (`#287 <https://github.com/sunpy/ndcube/pull/287>`__)
- Change name of NDCube.axis_world_coord_values to NDCube.axis_world_coords_values to be consistent with NDCube.axis_world_coords (`#293 <https://github.com/sunpy/ndcube/pull/293>`__)
- Remove NDCubeSequence animation dependence of deprecated sunpy ImageAnimator and LineAnimator classes in favour of ArrayAnimatorWCS class. (`#294 <https://github.com/sunpy/ndcube/pull/294>`__)
- Fix bug whereby common axis was not updated appropriately when slicing an NDCubeSequence. (`#310 <https://github.com/sunpy/ndcube/pull/310>`__)
- Fix bug in NDCube.axis_world_coords_values when number of pixel and world dimensions differ. (`#319 <https://github.com/sunpy/ndcube/pull/319>`__)
- Fixes bug in `~ndcube.utils.wcs.array_indices_for_world_objects` when the WCS input does not have a world_axis_object_components attribute. The fix causes the low_level_wcs version is tried before the code fails. This enables `ndcube.NDCube.combined_wcs` to be used with this function. (`#344 <https://github.com/sunpy/ndcube/pull/344>`__)
- Fixes IndexError in `~ndcube.utils.wcs.array_indices_for_world_objects` which occurred when some of the world axes are dependent. (`#344 <https://github.com/sunpy/ndcube/pull/344>`__)
- Stop `ndcube.NDCube.explode_along_axis` setting a common axis to the output `~ndcube.NDCubeSequence`. The output sequence should have no common axis. (`#358 <https://github.com/sunpy/ndcube/pull/358>`__)
- Enable 2-D NDCubes to be visualized as a 1-D animated line. (`#381 <https://github.com/sunpy/ndcube/pull/381>`__)
- Ensure corner inputs to `ndcube.NDCube.crop` are converted to units stored in WCS as `~astropy.wcs.WCS.world_to_array_index_values` does not handle units. (`#382 <https://github.com/sunpy/ndcube/pull/382>`__)
- updated ndcube github repository link in `ndcube.docs.installation.rst`. (`#392 <https://github.com/sunpy/ndcube/pull/392>`__)
- Fix bug in NDCube.axis_world_coords_values when axes_coords is initially a
bare astropy coordinate object rather than a list/tuple of coordinate objects. (`#400 <https://github.com/sunpy/ndcube/pull/400>`__)
- Change the implementation of `.NDCube.crop` so that it takes into account all
the corners of the world region specified by the upper and lower corners, not
just those two points. (`#438 <https://github.com/sunpy/ndcube/pull/438>`__)
- Ensure `NDCube` init forces WCS to become high level.

This patches a bug in astropy. (`#447 <https://github.com/sunpy/ndcube/pull/447>`__)
- Fix bug in `~ndcube.NDCube.axis_world_coords_values` which caused the units to be stripped when an ``axes`` input was given. (`#461 <https://github.com/sunpy/ndcube/pull/461>`__)
- Fix bug in `~ndcube.utils.wcs.get_dependent_world_axes` where an erroneous matrix transpose caused an error for non-square axis correlation matrices and wrong results for diagonally non-symmetric ones. (`#471 <https://github.com/sunpy/ndcube/pull/471>`__)
- Extend support for cropping an `~ndcube.NDCube` using an `~ndcube.extra_coords.ExtraCoords` instance as the wcs. (`#472 <https://github.com/sunpy/ndcube/pull/472>`__)
- Fix check as to whether user inputs to `ndcube.wcs.wrappers.CompoundLowLevelWCS.world_to_pixel_values` result in consistent pixel values when world dimensions share pixel dimensions. Previously this check was unreliable when non-trivial mapping between world and pixel dimensions was used. (`#472 <https://github.com/sunpy/ndcube/pull/472>`__)
- Fix slicing `~ndcube.ExtraCoords` made of lookup tables. This bug meant that mapping of coords to arrays axes was not adjusted when an axis was dropped. (`#482 <https://github.com/sunpy/ndcube/pull/482>`__)


Improved Documentation
----------------------

- Document accepted input to ``lookup_table`` in `.ExtraCoords` setting its ``physical_types``. (`#451 <https://github.com/sunpy/ndcube/pull/451>`__)
- Improved information and formatting of ``__str__`` methods. (`#453 <https://github.com/sunpy/ndcube/pull/453>`__)


Trivial/Internal Changes
------------------------

- Simplify and speed up implementation of NDCubeSequence slicing. (`#251 <https://github.com/sunpy/ndcube/pull/251>`__)
- Fix docstring formatting to help docs build. (`#262 <https://github.com/sunpy/ndcube/pull/262>`__)
- Use pytest-mpl for figure tests. (`#312 <https://github.com/sunpy/ndcube/pull/312>`__)
- Port the tests for NDCube to use pytest fixtures (`#318 <https://github.com/sunpy/ndcube/pull/318>`__)
- Allow corner inputs to `~ndcube.NDCube.crop` to not be wrapped in a `tuple` is only one high level coordinate objects required. (`#380 <https://github.com/sunpy/ndcube/pull/380>`__)
- Make sunpy an optional dependence. Without it, the _animate_cube plotting
functionality will be disabled. (`#393 <https://github.com/sunpy/ndcube/pull/393>`__)
- Adds a function to compare the physical types of two WCS objects. (`#433 <https://github.com/sunpy/ndcube/pull/433>`__)
- Propagate reference to NDCube object through `~ndcube.extra_coords.ExtraCoords` string slicing. (`#454 <https://github.com/sunpy/ndcube/pull/454>`__)
- Adds a function to identify invariant axes between two WCS objects. (`#459 <https://github.com/sunpy/ndcube/pull/459>`__)
- The matplotlib animators code has been moved from `sunpy` to a new package
`mpl_animators` so ndcube no longer has an optional dependancy on sunpy. (`#484 <https://github.com/sunpy/ndcube/pull/484>`__)


1.3.0 (2020-03-27)
==================

Expand Down
37 changes: 16 additions & 21 deletions RELEASE.rst
Original file line number Diff line number Diff line change
@@ -1,28 +1,23 @@
The SunPy project is very happy to announce a new release of "ndcube".
The SunPy project is very happy to announce the 2.0 release of "ndcube"!

ndcube is a package built for handling, inspecting and visualizing a wide
variety of data, of any number of dimensions, along with coordinate information
described by WCS. The `~ndcube.NDCube` provides functionality for slicing
the data, WCS and other metadata simultaneously, plotting and animating,
and associating extra coordinate information along any axis.

In addition, the ndcube package provides the `~nddata.NDCubeSequence`
class for representing sequences of `~ndcube.NDCube` objects where the
coordinate information may or may not align, and accessing these sequences in a
way consistent with a singular cube.

This release of ndcube contains 95 commits in 12 merged pull requests closing 5 issues from 5 people, 2 of which are first time contributors to ndcube.
This release of ndcube contains 912 commits in 38 merged pull requests closing 56 issues from 12 people, 6 of which are first-time contributors to ndcube.

The people who have contributed to the code for this release are:

Daniel Ryan
David Stansby *
Nabil Freij
P. L. Lim *
Stuart Mumford (boooooooo)

Where a * indicates their first contribution to ndcube.

- Adwait Bhope *
- Daniel Ryan
- David Stansby
- Derek Homeier *
- Dr Matthieu Wes *
- Kris Stern *
- Kritika Ranjan *
- Laura Hayes
- Nabil Freij
- Ricky O'Steen *
- Stuart Mumford
- Yash Sharma

Where a * indicates that this release contains their first contribution to ndcube.
For more information about ndcube see the `documentation <http://docs.sunpy.org/projects/ndcube/>`__.

ndcube can be installed from pip or conda using the following commands::
Expand Down
1 change: 0 additions & 1 deletion changelog/251.trivial.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/262.trivial.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/264.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/269.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/271.feature.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/279.feature.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/280.breaking.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/281.feature.rst

This file was deleted.

2 changes: 0 additions & 2 deletions changelog/287.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/293.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/294.breaking.1.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/294.breaking.2.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/294.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/300.removal.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/301.feature.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/302.breaking.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/302.removal.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/310.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/311.breaking.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/312.trivial.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/314.feature.1.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/314.feature.2.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/316.breaking.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/318.trivial.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/319.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/322.breaking.rst

This file was deleted.

1 change: 0 additions & 1 deletion changelog/323.feature.rst

This file was deleted.

2 changes: 0 additions & 2 deletions changelog/327.feature.rst

This file was deleted.

0 comments on commit 1394b28

Please sign in to comment.