N-dimensional representation classes#

For the examples below the following imports have already been executed:

>>> import astropy.units as u
>>> import numpy as np
>>> import gala.dynamics as gd

Introduction#

The Astropy representations framework presently only support 3D positions and differential objects. The NDCartesianRepresentation and NDCartesianDifferential classes add Cartesian representation classes that can handle arbitrary numbers of dimensions. For example, 2D coordinates:

>>> xy = np.arange(16).reshape(2, 8) * u.kpc
>>> rep = gd.NDCartesianRepresentation(xy)
>>> rep
<NDCartesianRepresentation (x1, x2) in kpc
    [(0.,  8.), (1.,  9.), (2., 10.), (3., 11.), (4., 12.), (5., 13.),
     (6., 14.), (7., 15.)]>

4D coordinates:

>>> x = np.arange(16).reshape(4, 4) * u.kpc
>>> rep = gd.NDCartesianRepresentation(x)
>>> rep
<NDCartesianRepresentation (x1, x2, x3, x4) in kpc
    [(0., 4.,  8., 12.), (1., 5.,  9., 13.), (2., 6., 10., 14.),
     (3., 7., 11., 15.)]>

These can be passed in to the PhaseSpacePosition or Orbit classes as with any of the Astropy core representation objects:

>>> xy = np.arange(16).reshape(2, 8) * u.kpc
>>> vxy = np.arange(16).reshape(2, 8) / 10. * u.kpc / u.Myr
>>> w = gd.PhaseSpacePosition(pos=xy, vel=vxy)
>>> fig = w.plot()

(Source code, png, pdf)

../_images/nd-representations-1.png

However, certain functionality such as representation transformations, dynamical quantity calculation, and coordinate frame transformations are disabled when the number of dimensions is not 3 (i.e. when not using the Astropy core representation classes).

N-dimensional representations API#

Classes#

NDCartesianRepresentation(x[, ...])

Representation of points in ND cartesian coordinates.

NDCartesianDifferential(d_x[, unit, copy])

Differentials in of points in ND cartesian coordinates.

Class Inheritance Diagram#

Inheritance diagram of gala.dynamics.representation_nd.NDCartesianRepresentation, gala.dynamics.representation_nd.NDCartesianDifferential