Quantities#

This guide demonstrates how to convert quantity-like objects between coordinax and astropy using plum dispatch and from_ constructors.

>>> import jax.numpy as jnp
>>> import plum

>>> import coordinax.main as cx
>>> import coordinax.astro as cxastro

>>> import astropy.coordinates as apyc
>>> import astropy.units as apyu

Angle conversions#

Create a coordinax.angles.Angle:

>>> angle = cx.Angle(jnp.array([1, 2, 3]), "rad")
>>> angle
Angle([1, 2, 3], 'rad')

Convert coordinax to astropy:

>>> plum.convert(angle, apyu.Quantity)
<Quantity [1., 2., 3.] rad>

>>> angle_apy = plum.convert(angle, apyc.Angle)
>>> angle_apy
<Angle [1., 2., 3.] rad>

Convert astropy back to coordinax:

>>> plum.convert(angle_apy, cx.Angle)
Angle([1., 2., 3.], 'rad')

>>> cx.Angle.from_(angle_apy)
Angle([1., 2., 3.], 'rad')

Distance conversions#

Create a coordinax.distances.Distance:

>>> distance = cx.Distance(jnp.array([1, 2, 3]), "km")
>>> distance
Distance([1, 2, 3], 'km')

Convert coordinax to astropy:

>>> plum.convert(distance, apyu.Quantity)
<Quantity [1., 2., 3.] km>

>>> distance_apy = plum.convert(distance, apyc.Distance)
>>> distance_apy
<Distance [1., 2., 3.] km>

Convert astropy back to coordinax:

>>> plum.convert(distance_apy, cx.Distance)
Distance([1., 2., 3.], 'km')

>>> cx.Distance.from_(distance_apy)
Distance([1., 2., 3.], 'km')

Distance modulus conversions#

Create a coordinax.astro.DistanceModulus:

>>> distmod = cxastro.DistanceModulus(jnp.array([1, 2, 3]), "mag")
>>> distmod
DistanceModulus([1, 2, 3], 'mag')

Convert coordinax to astropy:

>>> distmod_apy = plum.convert(distmod, apyu.Quantity)
>>> distmod_apy
<Quantity [1., 2., 3.] mag>

Convert astropy back to coordinax:

>>> plum.convert(distmod_apy, cxastro.DistanceModulus)
DistanceModulus([1., 2., 3.], 'mag')

>>> cxastro.DistanceModulus.from_(distmod_apy)
DistanceModulus([1., 2., 3.], 'mag')

Parallax conversions#

Create a coordinax.astro.Parallax:

>>> parallax = cxastro.Parallax(jnp.array([1, 2, 3]), "rad")
>>> parallax
Parallax([1, 2, 3], 'rad')

Convert coordinax to astropy:

>>> parallax_apy = plum.convert(parallax, apyu.Quantity)
>>> parallax_apy
<Quantity [1., 2., 3.] rad>

Convert astropy back to coordinax:

>>> plum.convert(parallax_apy, cxastro.Parallax)
Parallax([1., 2., 3.], 'rad')

>>> cxastro.Parallax.from_(parallax_apy)
Parallax([1., 2., 3.], 'rad')