poliastro.frames.equatorial¶

Module Contents¶

Classes¶

 MercuryICRS A base class that defines default representation info for frames that VenusICRS A base class that defines default representation info for frames that MarsICRS A base class that defines default representation info for frames that JupiterICRS A base class that defines default representation info for frames that SaturnICRS A base class that defines default representation info for frames that UranusICRS A base class that defines default representation info for frames that NeptuneICRS A base class that defines default representation info for frames that

Attributes¶

poliastro.frames.equatorial.ICRS
poliastro.frames.equatorial.HCRS
poliastro.frames.equatorial.GCRS
class poliastro.frames.equatorial.MercuryICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.VenusICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.MarsICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.JupiterICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.SaturnICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.UranusICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.

class poliastro.frames.equatorial.NeptuneICRS(*args, copy=True, representation_type=None, differential_type=None, **kwargs)

Bases: _PlanetaryICRS

A base class that defines default representation info for frames that represent longitude and latitude as Right Ascension and Declination following typical “equatorial” conventions.

body
obstime
frame_specific_representation_info
default_representation
default_differential
frame_attributes
representation_type
representation_component_names
representation_component_units
static to_icrs(planet_coo, _)
static from_icrs(icrs_coo, planet_frame)
static self_transform(from_coo, to_frame)
classmethod __init_subclass__(cls, **kwargs)
property cache(self)

Cache for this frame, a dict. It stores anything that should be computed from the coordinate data (not from the frame attributes). This can be used in functions to store anything that might be expensive to compute but might be re-used by some other function. E.g.:

if 'user_data' in myframe.cache:
data = myframe.cache['user_data']
else:
myframe.cache['user_data'] = data = expensive_func(myframe.lat)


If in-place modifications are made to the frame data, the cache should be cleared:

myframe.cache.clear()

property data(self)

The coordinate data for this object. If this frame has no data, an ValueError will be raised. Use has_data to check if data is present on this frame object.

property has_data(self)

True if this frame has data, False otherwise.

property shape(self)

The shape of the underlying data.

__len__(self)
__bool__(self)

Any instance should evaluate to True, except when it is empty.

property size(self)

The size of the object, as calculated from its shape.

property isscalar(self)
classmethod get_frame_attr_names(cls)
get_representation_cls(self, which='base')

The class used for part of this frame’s data.

Parameters

which ((‘base’, ‘s’, None)) – The class of which part to return. ‘base’ means the class used to represent the coordinates; ‘s’ the first derivative to time, i.e., the class representing the proper motion and/or radial velocity. If None, return a dict with both.

Returns

representation

Return type

~astropy.coordinates.BaseRepresentation or ~astropy.coordinates.BaseDifferential.

set_representation_cls(self, base=None, s='base')

Set representation and/or differential class for this frame’s data.

Parameters
• base (str, ~astropy.coordinates.BaseRepresentation subclass, optional) – The name or subclass to use to represent the coordinate data.

• s (~astropy.coordinates.BaseDifferential subclass, optional) – The differential subclass to use to represent any velocities, such as proper motion and radial velocity. If equal to ‘base’, which is the default, it will be inferred from the representation. If None, the representation will drop any differentials.

property differential_type(self)

The differential used for this frame’s data.

This will be a subclass from ~astropy.coordinates.BaseDifferential. For simultaneous setting of representation and differentials, see the set_representation_cls method.

property representation_info(self)

A dictionary with the information of what attribute names for this frame apply to particular representations.

get_representation_component_names(self, which='base')
get_representation_component_units(self, which='base')
replicate(self, copy=False, **kwargs)

Return a replica of the frame, optionally with new frame attributes.

The replica is a new frame object that has the same data as this frame object and with frame attributes overridden if they are provided as extra keyword arguments to this method. If copy is set to True then a copy of the internal arrays will be made. Otherwise the replica will use a reference to the original arrays when possible to save memory. The internal arrays are normally not changeable by the user so in most cases it should not be necessary to set copy to True.

Parameters
• copy (bool, optional) – If True, the resulting object is a copy of the data. When False, references are used where possible. This rule also applies to the frame attributes.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

replicate_without_data(self, copy=False, **kwargs)

Return a replica without data, optionally with new frame attributes.

The replica is a new frame object without data but with the same frame attributes as this object, except where overridden by extra keyword arguments to this method. The copy keyword determines if the frame attributes are truly copied vs being references (which saves memory for cases where frame attributes are large).

This method is essentially the converse of realize_frame.

Parameters
• copy (bool, optional) – If True, the resulting object has copies of the frame attributes. When False, references are used where possible.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object.

Returns

frameobj – Replica of this object, but without data and possibly with new frame attributes.

Return type

BaseCoordinateFrame subclass instance

realize_frame(self, data, **kwargs)

Generates a new frame with new data from another frame (which may or may not have data). Roughly speaking, the converse of replicate_without_data.

Parameters
• data (~astropy.coordinates.BaseRepresentation) – The representation to use as the data for the new frame.

• **kwargs – Any additional keywords are treated as frame attributes to be set on the new frame object. In particular, representation_type can be specified.

Returns

frameobj – A new object in this frame, with the same frame attributes as this one, but with the data as the coordinate data.

Return type

BaseCoordinateFrame subclass instance

represent_as(self, base, s='base', in_frame_units=False)

Generate and return a new representation of this frame’s data as a Representation object.

Note: In order to make an in-place change of the representation of a Frame or SkyCoord object, set the representation attribute of that object to the desired new representation, or use the set_representation_cls method to also set the differential.

Parameters
• base (subclass of BaseRepresentation or string) – The type of representation to generate. Must be a class (not an instance), or the string name of the representation class.

• s (subclass of ~astropy.coordinates.BaseDifferential, str, optional) – Class in which any velocities should be represented. Must be a class (not an instance), or the string name of the differential class. If equal to ‘base’ (default), inferred from the base class. If None, all velocity information is dropped.

• in_frame_units (bool, keyword-only) – Force the representation units to match the specified units particular to this frame

Returns

newrep – A new representation object of this frame’s data.

Return type

BaseRepresentation-derived object

Raises

AttributeError – If this object had no data

Examples

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord, CartesianRepresentation
>>> coord = SkyCoord(0*u.deg, 0*u.deg)
>>> coord.represent_as(CartesianRepresentation)
<CartesianRepresentation (x, y, z) [dimensionless]
(1., 0., 0.)>

>>> coord.representation_type = CartesianRepresentation
>>> coord
<SkyCoord (ICRS): (x, y, z) [dimensionless]
(1., 0., 0.)>

transform_to(self, new_frame)

Transform this object’s coordinate data to a new frame.

Parameters

new_frame (coordinate-like or BaseCoordinateFrame subclass instance) – The frame to transform this coordinate frame into. The frame class option is deprecated.

Returns

transframe – A new object with the coordinate data represented in the newframe system.

Return type

coordinate-like

Raises

ValueError – If there is no possible transformation route.

is_transformable_to(self, new_frame)

Determines if this coordinate frame can be transformed to another given frame.

Parameters

new_frame (BaseCoordinateFrame subclass or instance) – The proposed frame to transform into.

Returns

transformableTrue if this can be transformed to new_frame, False if not, or the string ‘same’ if new_frame is the same system as this object but no transformation is defined.

Return type

bool or str

Notes

A return value of ‘same’ means the transformation will work, but it will just give back a copy of this object. The intended usage is:

if coord.is_transformable_to(some_unknown_frame):
coord2 = coord.transform_to(some_unknown_frame)


This will work even if some_unknown_frame turns out to be the same frame class as coord. This is intended for cases where the frame is the same regardless of the frame attributes (e.g. ICRS), but be aware that it might also indicate that someone forgot to define the transformation between two objects of the same frame class but with different attributes.

is_frame_attr_default(self, attrnm)

Determine whether or not a frame attribute has its value because it’s the default value, or because this frame was created with that value explicitly requested.

Parameters

attrnm (str) – The name of the attribute to check.

Returns

isdefault – True if the attribute attrnm has its value by default, False if it was specified at creation of this frame.

Return type

bool

is_equivalent_frame(self, other)

Checks if this object is the same frame as the other object.

To be the same frame, two objects must be the same frame class and have the same frame attributes. Note that it does not matter what, if any, data either object has.

Parameters

other () – the other frame to check

Returns

isequiv – True if the frames are the same, False if not.

Return type

bool

Raises

TypeError – If other isn’t a BaseCoordinateFrame or subclass.

__repr__(self)

Return repr(self).

__setitem__(self, item, value)
__dir__(self)

Override the builtin dir behavior to include representation names.

TODO: dynamic representation transforms (i.e. include cylindrical et al.).

__getattr__(self, attr)

Allow access to attributes on the representation and differential as found via self.get_representation_component_names.

TODO: We should handle dynamic representation transforms here (e.g., .cylindrical) instead of defining properties as below.

__setattr__(self, attr, value)

Implement setattr(self, name, value).

__eq__(self, value)

Equality operator for frame.

This implements strict equality and requires that the frames are equivalent and that the representation data are exactly equal.

__ne__(self, value)

Return self!=value.

separation(self, other)

Computes on-sky separation between this coordinate and another.

Note

If the other coordinate object is in a different frame, it is first transformed to the frame of this object. This can lead to unintuitive behavior if not accounted for. Particularly of note is that self.separation(other) and other.separation(self) may not give the same answer in this case.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate to get the separation to.

Returns

sep – The on-sky separation between this and the other coordinate.

Return type

~astropy.coordinates.Angle

Notes

The separation is calculated using the Vincenty formula, which is stable at all locations, including poles and antipodes [1]_.

1

https://en.wikipedia.org/wiki/Great-circle_distance

separation_3d(self, other)

Computes three dimensional separation between this coordinate and another.

Parameters

other (~astropy.coordinates.BaseCoordinateFrame) – The coordinate system to get the distance to.

Returns

sep – The real-space distance between these two coordinates.

Return type

~astropy.coordinates.Distance

Raises

ValueError – If this or the other coordinate do not have distances.

property cartesian(self)

Shorthand for a cartesian representation of the coordinates in this object.

property cylindrical(self)

Shorthand for a cylindrical representation of the coordinates in this object.

property spherical(self)

Shorthand for a spherical representation of the coordinates in this object.

property sphericalcoslat(self)

Shorthand for a spherical representation of the positional data and a SphericalCosLatDifferential for the velocity data in this object.

property velocity(self)

Shorthand for retrieving the Cartesian space-motion as a CartesianDifferential object. This is equivalent to calling self.cartesian.differentials['s'].

property proper_motion(self)

Shorthand for the two-dimensional proper motion as a ~astropy.units.Quantity object with angular velocity units. In the returned ~astropy.units.Quantity, axis=0 is the longitude/latitude dimension so that .proper_motion[0] is the longitudinal proper motion and .proper_motion[1] is latitudinal. The longitudinal proper motion already includes the cos(latitude) term.

Shorthand for the radial or line-of-sight velocity as a ~astropy.units.Quantity object.

property ndim(self)

The number of dimensions of the instance and underlying arrays.

__getitem__(self, item)
__iter__(self)
__array_function__(self, function, types, args, kwargs)

Wrap numpy functions that make sense.

copy(self, *args, **kwargs)

Return an instance containing copies of the internal data.

Parameters are as for copy().

reshape(self, *args, **kwargs)

Returns an instance containing the same data with a new shape.

Parameters are as for reshape(). Note that it is not always possible to change the shape of an array without copying the data (see reshape() documentation). If you want an error to be raise if the data is copied, you should assign the new shape to the shape attribute (note: this may not be implemented for all classes using NDArrayShapeMethods).

ravel(self, *args, **kwargs)

Return an instance with the array collapsed into one dimension.

Parameters are as for ravel(). Note that it is not always possible to unravel an array without copying the data. If you want an error to be raise if the data is copied, you should should assign shape (-1,) to the shape attribute.

flatten(self, *args, **kwargs)

Return a copy with the array collapsed into one dimension.

Parameters are as for flatten().

transpose(self, *args, **kwargs)

Return an instance with the data transposed.

Parameters are as for transpose(). All internal data are views of the data of the original.

property T(self)

Return an instance with the data transposed.

Parameters are as for T. All internal data are views of the data of the original.

swapaxes(self, *args, **kwargs)

Return an instance with the given axes interchanged.

Parameters are as for swapaxes(): axis1, axis2. All internal data are views of the data of the original.

diagonal(self, *args, **kwargs)

Return an instance with the specified diagonals.

Parameters are as for diagonal(). All internal data are views of the data of the original.

squeeze(self, *args, **kwargs)

Return an instance with single-dimensional shape entries removed

Parameters are as for squeeze(). All internal data are views of the data of the original.

take(self, indices, axis=None, out=None, mode='raise')

Return a new instance formed from the elements at the given indices.

Parameters are as for take(), except that, obviously, no output array can be given.