Skip to main content

Logo

An optimized transit-fitting algorithm to search for periodic transits of small planets

Image Image Image Image Image Image

Motivation

We present a new method to detect planetary transits from time-series photometry, the Transit Least Squares (TLS) algorithm. While the commonly used Box Least Squares (BLS, Kovács et al. 2002) algorithm searches for rectangular signals in stellar light curves, TLS searches for transit-like features with stellar limb-darkening and including the effects of planetary ingress and egress. Moreover, TLS analyses the entire, unbinned data of the phase-folded light curve. These improvements yield a ~10 % higher detection efficiency (and similar false alarm rates) compared to BLS. The higher detection efficiency of our freely available Python implementation comes at the cost of higher computational load, which we partly compensate by applying an optimized period sampling and transit duration sampling, constrained to the physically plausible range. A typical Kepler K2 light curve, worth of 90 d of observations at a cadence of 30 min, can be searched with TLS in about half a second on a standard laptop computer (after a one-time JIT compilation of a few seconds) — as fast as BLS.

image

What's new in TLS 2.0

  • 30–60x faster than TLS 1.33 on warm benchmarks, with unchanged detection rates: a rewritten numba kernel stack evaluates the same statistic using algebraic correlations, prefix sums and validated approximations. The default backend is validated against the exact statistic on hundreds of injection-recovery cases; the backend="fused" backend is exact up to rounding and bit-identical to the original algorithm.
  • 18 bug fixes, 10 of which change results (among them: a weighted final T0 fit, a correct out-of-transit noise estimate for the SNR, honest reporting when no transit is fit, and honouring user-supplied stellar limits and template parameters). The duration-limit mass pairing reported by Talens et al. (2026) is fixed.
  • Own limb-darkened transit model — batman is no longer a runtime dependency (it remains an optional dependency for the test suite).
  • Opt-in analytic SDE background detrending: power(SDE_detrend="hybrid") (see the documentation).
  • Pluggable search backends (power(backend=...)), modern packaging (pyproject.toml), and a golden test set that freezes all result fields.

Installation

TLS can be installed conveniently using: pip install transitleastsquares

If you have multiple versions of Python and pip on your machine, try: pip3 install transitleastsquares

The latest version can be pulled from github:

git clone https://github.com/hippke/tls.git
cd tls
pip install .

For an editable (development) install, use pip install -e . instead of the last line.

Dependencies: Python 3.9+ (tested up to 3.14), NumPy (>= 1.22), numba, tqdm, optional: astroquery (for LD and stellar density priors from Kepler K1, K2, and TESS), batman-package (only needed to run the test suite).

If you have trouble installing, please open an issue.

Getting started

Here is a terminal recording of a real TLS 2.0 search: 231,000 trial periods on 8 CPU cores in about 6 seconds (3 years of simulated photometry of a solar-type star with an Earth-like planet). For more examples, have a look at the tutorials and the documentation.

image

Attribution

Please cite Hippke & Heller (2019, A&A 623, A39) if you find this code useful in your research. The BibTeX entry for the paper is:

@ARTICLE{2019A&A...623A..39H,
       author = {{Hippke}, Michael and {Heller}, Ren{\'e}},
        title = "{Optimized transit detection algorithm to search for periodic transits of small planets}",
      journal = {\aap},
         year = "2019",
        month = "Mar",
       volume = {623},
          eid = {A39},
        pages = {A39},
          doi = {10.1051/0004-6361/201834672},
archivePrefix = {arXiv},
       eprint = {1901.02015},
 primaryClass = {astro-ph.EP},
       adsurl = {https://ui.adsabs.harvard.edu/\#abs/2019A&A...623A..39H},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Contributing Code, Bugfixes, or Feedback

We welcome and encourage contributions. If you have any trouble, open an issue.

Copyright 2019-2026 Michael Hippke & René Heller.

Metadata

Release files for transitleastsquares 2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for transitleastsquares 2.0
File Size Uploaded
transitleastsquares-2.0.tar.gz 124.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for transitleastsquares 2.0
File Interpreter ABI Platform
transitleastsquares-2.0-py3-none-any.whl Python 3 none any Details

Total release size: 222.9 kB

Release files / transitleastsquares-2.0.tar.gz

Download URL transitleastsquares-2.0.tar.gz
Size 124.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4a1f7772b7cc14a814f2f077c5f14c2a0434790fac3e720d8022298fd0668d56
BLAKE2b-256 checksum
How to use checksums
9e6b801f7e009a75c4424fdfd05c11e975cbf74a3add9a4d6d9a086e5e93c609
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2

Release files / transitleastsquares-2.0-py3-none-any.whl

Download URL transitleastsquares-2.0-py3-none-any.whl
Size 98.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6033521f5167d265991e4e7f3e5be0763a956b5550dd3511d55d11e77fb31bfa
BLAKE2b-256 checksum
How to use checksums
0efb20cba6d4331163c43d262f901ed56e57e2f7549c153c833f963bc7507408
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page