Astro-Hunters β€” TESS Transit Detector

Per-cadence exoplanet transit detection in TESS two-minute photometry,
with gold-standard labels derived from published ephemerides.

Paper Demo Weights Corpus Code

The arXiv badge is a placeholder. Replace XXXX.XXXXX with the identifier once the preprint is live.


What this is

A gradient-boosted tree classifier that labels each individual cadence of a detrended TESS light curve as in-transit or not, from seven local statistics computed over a sliding window of Β±32 cadences (130 minutes).

Read the headline numbers with the ceiling in mind. The accompanying paper shows that the median single-cadence signal-to-noise ratio across this corpus is 2.10, which caps the Bayes-optimal per-cadence AUC at 0.932. This model reaches 0.788 β€” near the information a single cadence contains. Per-cadence classification is not the right tool for general transit search; a periodic box search recovers 8 of 12 orbital periods on the same light curves. See Intended use.

Performance

Star-disjoint GroupKFold(4) β€” no light curve appears on both sides of a split. Mean Β± standard deviation across folds.

Metric Value Random baseline
ROC-AUC 0.7880 Β± 0.0550 0.5
PR-AUC (AUPRC) 0.2092 Β± 0.0289 0.0392
Lift over chance Γ—5.3 Γ—1.0

At a 3.9 % positive rate, AUPRC is the metric that matters; accuracy and ROC-AUC are both dominated by the negative class and will flatter any model here.

Files

File What it is
astro_hunters_gold_xgboost.json The released model. XGBoost native JSON, trained on gold-standard labels across all 12 hosts.
model_index.json Machine-readable metrics, hyperparameters and feature spec.
corpus/astro_hunters_corpus.npz Feature matrix, all three label sets, times, flux, host IDs.
corpus/systems.json NASA Exoplanet Archive records for the 12 systems, 36 planets.
corpus/label_provenance.json Per-host labelled rate against predicted duty cycle.
corpus/results.json Every number in the paper's tables.
legacy/legacy_v*_anomaly_labels.json Superseded models β€” see the warning below.

Inputs and outputs

Input β€” one row per cadence, seven float32 features in this order:

["flux", "local_mean", "deviation", "min", "ratio", "std", "skew"]

computed over W = {j-32, …, j+32} on flux that has been median-normalised and divided by a 1001-cadence running median. Feeding raw flux will not work.

Output β€” P(in transit) per cadence. Choose the threshold for your operating point; the paper tunes it on held-out development hosts rather than fixing it at 0.5.

import numpy as np, xgboost as xgb
from huggingface_hub import hf_hub_download

path = hf_hub_download("FatimahEmadEldin/Astro-Hunters-Transit-Detector",
                       "astro_hunters_gold_xgboost.json")
booster = xgb.Booster(); booster.load_model(path)

# X: (n_cadences, 7) float32, features in the order above
proba = booster.inplace_predict(X)

Reproduce the reported metrics from the released corpus:

import numpy as np
from huggingface_hub import hf_hub_download

c = np.load(hf_hub_download("FatimahEmadEldin/Astro-Hunters-Transit-Detector",
                            "corpus/astro_hunters_corpus.npz",
                            repo_type="model"), allow_pickle=True)
X, y, hosts = c["X"], c["y_gold_multi"], c["star_ids"]   # 189,279 x 7

How the labels were built

This is the part that matters most, and the paper's central finding is that it matters more than the choice of model β€” AUPRC moves by a factor of 29 across label sources against 1.8 across six architectures.

y_gold_multi is derived entirely from orbital solutions, never from the photometry it annotates. For every confirmed transiting planet i in each system, a cadence is positive when

| ((t - t0_i + P_i/2) mod P_i) - P_i/2 |  ≀  T14_i / 2

with P, t0 and T14 from the NASA Exoplanet Archive pscomppars table.

Two corrections are load-bearing:

  1. Time system. pl_tranmid is published in BJD (β‰ˆ 2 459 000); TESS light curves are in BTJD = BJD βˆ’ 2 457 000 (β‰ˆ 1 300–3 500). Omitting the subtraction displaces the annotation window by a fraction of a period that depends on the period β€” 0.703 of an orbit for HD 189733 β€” so the labelled window and the real transit do not overlap at all. Performance then falls to chance, which is easy to misread as a finding about the method.
  2. System multiplicity. Five of the twelve hosts have more than one transiting planet. Labelling only the innermost marks 1,794 genuine in-transit cadences as negatives and lowers measured AUPRC from 0.209 to 0.136 β€” a 35 % relative reduction caused purely by annotation.

corpus/label_provenance.json records, per host, the labelled positive rate against the duty cycle Ξ£ T14_i / P_i predicted independently from the ephemerides. Agreement between those two numbers is the cheapest available check that labels are in the right place, and it fails loudly when the time system is wrong.

⚠️ Legacy models β€” do not use for evaluation

legacy/legacy_v3_anomaly_labels.json and legacy_v4_anomaly_labels.json are kept for provenance only. They were trained against labels produced by fitting IsolationForest to the same feature matrix the classifier then consumes, so the model recovers a deterministic function of its own inputs. Their stored holdout_test_auc of 0.9985 measures that circularity, not transit detection, and should not be quoted.

The original pickles are included alongside the JSON exports because they are what the numbers in the earlier project history refer to. Note that pickle deserialisation executes arbitrary code and these files emit an XGBoost version warning on load; prefer the JSON exports.

Intended use

Appropriate

  • Research on label provenance and evaluation protocol in time-series detection.
  • Flagging candidate cadences for human review, with the false-positive rate understood β€” precision at a useful recall is low.
  • The single-transit regime: recovering non-repeating events that a periodic search cannot stack, which is the one setting where a per-cadence decision is the correct formulation rather than a compromise.

Not appropriate

  • General transit search or survey vetting. Use a periodic box search (BLS/TLS) to detect, then a classifier over the phase-folded candidate, which is what the established literature does.
  • Any claim of planet discovery without independent physics-based vetting.
  • Extrapolation beyond the training regime: 12 hosts, 2-minute cadence, Tmag 4.6–6.9, transit depths 155–25,555 ppm.

Limitations

  • Bounded by the observation. Median single-cadence SNR 2.10 β†’ Bayes-optimal AUC 0.932. A better classifier over these inputs cannot exceed that.
  • Window geometry. Seven of twelve hosts have transits longer than the 65-cadence window, so cadences near mid-transit sit in a window with no out-of-transit reference and become indistinguishable from baseline.
  • Stellar activity. Flares and spot modulation on active stars produce local statistics resembling a transit. AU Mic, the most active host, scores AUC 0.711 against a corpus mean of 0.799. Distinguishing a flare from a transit needs the sign and the periodicity of the excursion, neither visible in one window.
  • Small corpus. Twelve hosts. Fold-to-fold standard deviations are wide and per-host variance is not explained by any single factor we tested.
  • Fixed detrending. The 1001-cadence median filter is held constant and interacts with transit duration in ways not explored.

Citation

@article{emadeldin2026astrohunters,
  title   = {Astro-Hunters: An End-to-End Machine Learning Pipeline for
             Exoplanet Transit Detection in TESS Photometry},
  author  = {Emad Eldin, Fatimah},
  year    = {2026},
  note    = {arXiv preprint; identifier to be assigned}
}

Acknowledgements

Built on public TESS SPOC light curves from MAST, retrieved with lightkurve, and ephemerides from the NASA Exoplanet Archive.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support