Skip to content

SkyCoord.transform_to(other) ignores other.equinox if default #5722

@dmopalmer

Description

@dmopalmer

Transforming from one frame to another acts differently depending on whether the destination frame's equinox was its default value or explicitly passed to the constructor.

from astropy.coordinates import SkyCoord,FK5
import astropy.units as u
cfk5_default = SkyCoord(1 * u.deg, 0 * u.deg, frame='fk5')
cfk5_J2000 = SkyCoord(1 * u.deg, 0 * u.deg, frame='fk5', equinox='J2000')
cfk5_B1950 = SkyCoord(1 * u.deg, 0 * u.deg, frame='fk5', equinox='B1950')
print(cfk5_default,cfk5_J2000,cfk5_B1950,sep='\n')

The print claims that both cfk5_default and cfk5_J2000 are equinox J2000

<SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg
    ( 1.,  0.)>
<SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg
    ( 1.,  0.)>
<SkyCoord (FK5: equinox=B1950.000): (ra, dec) in deg
    ( 1.,  0.)>

But when an equinox=1950 coordinate is transformed to the cfk5_default frame, the equinox remains 1950.

print("Transformed:")
print(cfk5_B1950.transform_to(cfk5_default))
print(cfk5_B1950.transform_to(cfk5_J2000))
Transformed:
<SkyCoord (FK5: equinox=B1950.000): (ra, dec) in deg
    ( 1.,  -2.32615580e-17)>
<SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg
    ( 1.64050073,  0.27831554)>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions