🦁 LEO-Vetter: for Lazy Exoplanet Operations
LEO-Vetter (the Lazy-Exoplanet-Operations Vetter) is a tool for automated vetting of transit signals found in light curve data. Inspired by the Kepler Robovetter, LEO-Vetter computes vetting metrics and then checks those metrics against a series of pass-fail thresholds. If a signal passes all checks, it is considered a planet candidate (PC). If a signal fails at least one test, it may be either an astrophysical false positive (FP; e.g. eclipsing binary, nearby eclipsing signal) or false alarm (FA; e.g. systematic, stellar variability). LEO-Vetter also produces vetting reports for quick manual inspection of the signal.
Flux-level vetting can work on light curves from any source, including (but not limited to) Kepler, K2, and TESS. Pixel-level vetting has been implemented for TESS usage only.
Usage
Check out the tutorials for full usage, but at its simplest it will look something like the following:
from leo_vetter.main import TCELightCurve
from leo_vetter.pixel import pixel_vetting
from leo_vetter.thresholds import check_thresholds
tlc = TCELightCurve(ID, time, raw, flux, flux_err, period, epoch, duration)
# Run flux-level vetting
# "star" is a dict containing stellar properties like mass, radius, etc.
tlc.compute_flux_metrics(star)
# Run pixel-level vetting
# "sectors" is a list of desired sectors for making difference images
tdi, good_sectors, good_pixel_data, good_centroids = pixel_vetting(tlc, star, sectors)
# Check metrics against pass-fail thresholds
FA = check_thresholds(tlc.metrics, "FA")
FP = check_thresholds(tlc.metrics, "FP")
Important note: The thresholds that determine whether a signal passes or fails work pretty well for TESS-observed FGKM dwarf stars, but no single set of thresholds will work for all use-cases. You can try changing the thresholds (or even adding/removing tests) to optimize this tool for your own purposes (see Tutorial 4).
Installation
LEO-Vetter is pip-installable:
pip install leo-vetter
If you also want to run pixel-level vetting (recommended), you will need to install the transit-diffImage package available here:
git clone https://github.com/stevepur/transit-diffImage.git
cd transit-diffImage
pip install .
Citing LEO-Vetter
Please cite our paper if you find this package useful 😊
Kunimoto, M., Bryson, S., Jaffee, D., et al. (2025) The Astronomical Journal, 170, 280
Metadata
Release files for leo-vetter 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| leo_vetter-1.2.0.tar.gz | 170.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| leo_vetter-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 341.3 kB
Release files / leo_vetter-1.2.0.tar.gz
| Download URL | leo_vetter-1.2.0.tar.gz |
|---|---|
| Size | 170.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f73983092158072942faa5b4c1875504402905ec666a5ebea0c303d1c80b723
|
|
BLAKE2b-256 checksum How to use checksums |
2cdf5dc9ec66b6c5f0fd66ceabfb3dd23629afd5ce5c97bf23d1d29f45459cb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / leo_vetter-1.2.0-py3-none-any.whl
| Download URL | leo_vetter-1.2.0-py3-none-any.whl |
|---|---|
| Size | 170.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce4d1f72cb8c9794fb505e0315bf610811726981b2c851aa0b1c8047581183a3
|
|
BLAKE2b-256 checksum How to use checksums |
10a4632e9ee158034dda90430e7bb792a10e802d919e5c851f7de282f66c47dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|