PyAstronomy.pyasl.co_aberration(jd, ra, dec, radian=False)

Computes the changes in RA and DEC due to annual aberration.

jdfloat or array

The Julian date(s). If array, must be the same size as ra and dec.

rafloat or array

The right ascension in degrees. If array, it must be the same size as dec.

decfloat or array

The declination in degrees. If array, it must be the same size as ra.

radianboolean, optional

Results are returned in radian instead of degrees. The default is False.

dRafloat or array

The change in right ascension [by default in deg].

dDecfloat or arrays

The change in declination [by default in deg].



This function was ported from the IDL Astronomy User’s Library.

IDL - Documentation



Calculate changes to Ra and Dec due to the effect of annual aberration


as described in Meeus, Chap 23.


co_aberration, jd, ra, dec, d_ra, d_dec, [EPS = ]


jd : Julian Date [scalar or vector] ra, dec : Arrays (or scalars) of the ra and dec’s in degrees

Note: if jd is a vector, then ra and dec must either be scalars, or

vectors of the same length.

d_ra, d_dec: the corrections to ra and dec due to aberration in

arcseconds. (These values can be added to the true RA and dec to get the apparent position). Note that d_ra

is not multiplied by cos(dec), so that apparent_ra = ra + d_ra/3600.

epsset this to the true obliquity of the ecliptic (in radians), or
it will be set for you if you don’t know it (in that case, set it to

an empty variable).


Compute the change in RA and Dec of Theta Persei (RA = 2h46m,11.331s, Dec = 49d20’,54.54”) due to aberration on 2028 Nov 13.19 TD

IDL> jdcnv,2028,11,13,.19*24,jd ;Get Julian date IDL> co_aberration,jd,ten(2,46,11.331)*15,ten(49,20,54.54),d_ra,d_dec

==> d_ra = 30.045” (=2.003s) d_dec = 6.697”

These formula are from Meeus, Chapters 23. Accuracy is much better than 1


The maximum deviation due to annual aberration is 20.49” and occurs when the Earth velocity is perpendicular to the direction of the star.


Written, June 2002, Chris O’Dell, U. of Wisconsin Fix error with vector input W. Landsman June 2009 June 2009 update fixed case where JD was scalar but RA,Dec were vectors, but broke the case when both JD and RA,Dec were vectors Aug 2012 W. Landsman


from __future__ import print_function, division
from PyAstronomy import pyasl
import datetime
import numpy as np

# Convert calendar date to JD
# use the datetime package
jd = datetime.datetime(2013, 4, 16)
jd = pyasl.jdcnv(jd)
# Specify RA and DEC
ra = 10.
dec = 30.
print("Get change in RA and DEC due to annual aberration")
print("  for JD = " + str(jd) + ":",
      np.ravel(pyasl.co_aberration(jd, ra, dec)))

print("Get change for several RAs and DECs for the same JD")
ra = np.arange(10., 50., 10.)
dec = np.arange(30., 70., 10.)
res = pyasl.co_aberration(np.repeat(jd, ra.size), ra, dec)
print(res[0], res[1])

print("Get change for several RAs and DECs for different JDs")
jds = np.arange(jd, jd+ra.size, 1)
res = pyasl.co_aberration(jds, ra, dec)
print("JD             delta(RA)   delta(DEC)")
for i in range(ra.size):
    print("%12.5f   %8.5f   %8.5f" % (jds[i], res[0][i], res[1][i]))