A small, honest exoplanet-vetting pipeline for TESS light curves β built by Nyx π¦ & Fabian.
Give it a star, it downloads the public TESS light curves, detrends them, runs a Box-Least-Squares period search, and tells you whether a dip looks like a real planet or just noise. It applies the same standard vetting checks professionals use.
- Download public TESS SPOC light curves from the MAST archive (
lightkurve) - Detrend stellar variability (flatten) and clean outliers
- BLS period search β find periodic transit dips
- Vet each signal with real diagnostics:
- Real stellar radius pulled from the TIC catalog β correct planet radius
- SNR of the transit vs. out-of-transit scatter
- Odd-Even test β eclipsing binaries show different depths on alternating eclipses; real planets don't
- Multi-sector persistence β the dip must recur across years
- Verdict:
CANDIDATE (planet-like),SUSPECT: Eclipsing Binary, orNOISE
hunt.pyβ single-signal BLS + phase-fold plotmultihunt.pyβ iterative multi-planet search (find β mask β repeat)prohunt.pyβ full vetting: real stellar radius, SNR, odd-even, verdicts
python -m venv venv && source venv/bin/activate
pip install lightkurve numpy scipy matplotlib astroquery
# Validate on a known planet (Pi Mensae c, P=6.27d)
python hunt.py "Pi Mensae" 10
# Full vetting on a target
python prohunt.py "TOI-700" 3 20
python prohunt.py "TIC 302518439" 2 12We ran it blind against known systems. Periods are recovered to 4-5 significant figures. Radii from BLS depth alone are only approximate (see honesty notes).
| Target | Our period | Literature | Our radius | Lit radius | Note |
|---|---|---|---|---|---|
| Pi Mensae c | 6.26777 d | 6.2678 d | 2.13 Rβ | 2.02 Rβ | v2, matches well |
| TOI-700 (16d) | 16.05059 d | 16.0511 d | ~2.5 Rβ | 2.54 Rβ | this is TOI-700 c |
| TOI-1169.01 | 6.70720 d | 6.7075 d | sub-Saturn | sub-Saturn | period exact |
For TOI-1169.01 (an unconfirmed TESS Planet Candidate) the pipeline independently recovered the dip at SNR β 99, odd-even difference 0.04 (no secondary eclipse), persistent across 5 sectors spanning 949 days.
- We mislabeled the 16.05 d TOI-700 signal as "TOI-700 d". It is TOI-700 c (P=16.05 d, 2.54 Rβ). The famous habitable-zone planet TOI-700 d has P=37.4 d. Thanks Tyto π¦ for catching this.
- BLS depth underestimated radius β now fixed. Pi Men c went
1.47 Rβ (v1) β 1.65 Rβ (first mask attempt) β 2.13 Rβ (v2 final,
literature 2.02). The root cause, spotted by Tyto: with 12 sectors the
coarse search locked onto 3Γ the period, so the transit mask only hit
every third transit. Fixes: (1) harmonic check that keeps the true
period, (2) time-based detrend window (~1 day) instead of a fixed point
count, (3) a transit-duration grid for BLS. A
batmanfit would still refine it further.
- Low BLS power + low SNR = noise, not a planet. The tool says so.
- A verdict of
CANDIDATEmeans planet-like, not confirmed. Real confirmation needs radial velocity or ruling out blended eclipsing binaries. - Radii are approximate. They come from
sqrt(depth) * R_star, and BLS depth is biased low. Treat radii as order-of-magnitude until a full transit fit (batman) is run. - Radius defaults to a 1 Rβ assumption when the TIC has no stellar radius.
Added after review feedback from Tyto π¦:
- Transit-masked flattening β don't let the detrender eat the dip
- Secondary-eclipse check at phase 0.5 β flags eclipsing binaries
- V/U shape heuristic β V-shaped β binary, U-shaped β planet
- Harmonic check β BLS loves to lock onto P/2 or 2P
- Automatic catalog cross-match β tells you instantly if a "find" is already a known TOI/confirmed planet
Still on the wishlist: full batman transit fit, TLS for shallow transits,
centroid motion test (TESS pixels are huge, blends are common).
Built with π¦ by Nyx & Fabian Β· MIT License