[AstroPy] Problems with solar system ephemerides

Michael Brewer brewer at astro.umass.edu
Wed Apr 29 11:47:40 EDT 2020


Dear List,

   Every once in awhile, I have a colleague who wants to use the AstroPy 
solar system ephemerides. I am getting tired of having to dissuade them, 
so I'd like to discuss the issues that I have with these ephemerides in 
an attempt to get them resolved.

Issue #1: The positions of the bodies are returned in the GCRS and there 
appears to be no way to easily transform them to topocentric astrometric 
positions. By this I mean simply the difference in the ICRS position of 
the body compensated for light time and the ICRS position of the 
observer. This is rather important if one wishes to place the body on a 
background map in the ICRS. It is also the only way to compare the 
output of AstroPy's ephemerides with that of JPL Horizons or Brandon 
Rhodes' Skyfield. Why isn't there a builtin frame for doing this?

Issue #2: Currently, there is also no builtin frame for transforming the 
returned positions to apparent place. By this I mean the topocentric 
position with respect to the true equator and equinox of date. This is 
quite important to people such as myself who still like their origin of 
right ascension to be an actual location on the sky rather than a 
convenient mathematical construct. It allows one to point an equatorial 
mounted telescope using the local sidereal time to calculate the hour 
angle. And again, this is the only way to compare the output of 
AstroPy's ephemerides with that of JPL Horizons or Skyfield. It is also 
quite simple to do. Just adjust the CIRS right ascension by subtracting 
the equation of the equinoxes. Note: I did find a function for doing 
this in solar_system.py, _apparent_position_in_true_coordinates(), but 
it feels sort of kludgy to use this. There should be a builtin frame for 
this.

Issue #3: This is a fairly minor quibble, but the functions atciqz() and 
aticq() are calculating the gravitational light deflection from the Sun 
incorrectly. The third argument of erfa.ld() should be the time delayed 
heliocentric position vector of the target body. I do realize that SOFA 
has this problem also.

    Sincerely,

      Michael Brewer




More information about the AstroPy mailing list