TOTEMS - Tidal Orbital decay Timing Extrapolation & Modelling Software

Published:

This code originally evolved from the code I wrote as my primary contribution to my third year Astrophysics group project at University College London, titled “Planet-star interaction in Ultra-Short Period Hot Jupiters with Transit Timing Variations”. This code analyses Exoplanet mid-transit times for signs of orbital decay, a sign of tidal interaction. Orbital period variations are generally expected to be very small, but in the case of ultra-short period planets they can reach hundreds of ms to a few seconds which over a number of years (now that sufficient archive data exists) can amount to “easily observable” time intervals. It also attempts to ascertain between these, or the sometimes similar effects of apsidal precession upon transits. The Levenberg-Marquadt algorithm, as part of ScipPy’s curve_fit, is used to fit three models to data:

  • Normal, circularised, stable orbit: equation
  • Tidal orbital decay: equation
  • Apsidal precession: equation, where equation and equation

(Equations from, and further explanation given in Kishore C. Patra et al 2017 AJ 154 4 and Kishore C. Patra et al 2020 AJ 159 150).

These models can be extrapolated forward to predict what may happen in the future, and later compare additional transits to see how these change the models. Chi-squared analysis can be carried out on each model to judge the quality of the fit. The Akaike and Bayesian Information Criterion can be calculated for each model, to enable the judging of which model is the most suitable of the three.

In this notebook, I provide an example of doing this with WASP-12b. The ability to load in transit mid-times from the Exoplanet Transit Database, or from a user’s own CSV file, with automatic conversion between HJD and BJD, is included. Thanks to Dr Angelos Tsiaras for the PyLightcurve package to enable conversion. Planetary parameters can also be obtained from the Open Exoplanet Catalogue. Future plans are to write this as standalone Python code, to be incorporated into a PyPI package. A long-term goal is to enable MCMC to replace curve_fit, probably using the emcee package.


Example plot generated with the notebook, showing extrapolation of fitted models from past literature data, plus the addition of a later transit (taken by the author’s group as part of the university project this code was originally written for):

Example plot