Context
NASA’s TESS satellite records the brightness of hundreds of thousands of stars. Before most people look at the data, a processing step called Pre-search Data Conditioning (PDC) removes trends caused by the spacecraft and the detector. The result is the clean light curve that almost every study starts from.
The catch is that slow stellar rotation produces long, gentle trends too. Some of what the pipeline removes as noise may be the star itself. So I asked a narrow question: in stars that are officially non-variable, is there real signal in the part that was thrown away?
What I built
A pipeline in thirteen phases, each logged separately, with the heavy work on a GCP T4 GPU:
- Data. I took the TESS catalog, excluded every known variable star using TESS-SVC and SIMBAD, and downloaded the rest: about 20–25 GB of light curves. I turned them into one matrix of 50,287 star-sector records, each with 1,024 time points in three channels: raw flux, cleaned flux, and the difference between them.
- Two autoencoders. Two 1D convolutional autoencoders, one trained on the raw flux and one on the delta flux, the difference that the pipeline removed. A star scores as anomalous when the models can’t reconstruct it well, with the delta channel weighted more heavily.
- Selection. I took the top 1% by combined score, then required the raw signal to clearly exceed the cleaned one. That keeps stars where the pipeline really did remove something.
- Structure. I attached stellar parameters, scored density in the autoencoders’ latent space, clustered with UMAP and HDBSCAN, and kept only clusters that held together across 10 independent runs.
- Filtering. Spatial checks on the detector and temporal spike checks removed instrument artifacts. Gaia DR3 flags marked likely binaries.
- Validation. For each candidate I asked whether the same suppressed signal appears in other TESS sectors, ones the models never saw.
- An atlas. A Streamlit app for inspecting every candidate by eye.
What it found
Eighty-eight clean candidates. Fifty-five of them are slow rotators with periods over 13.7 days, none of them in any existing rotation catalog. They split into a long-period group of 25 (over 27 days) and a mid-period group of 30 (14–27 days), with a median gyrochronological age of 3.4 billion years.
Three systems stood out:
- TIC 167812509, an M dwarf rotating every 54.37 ± 2 days. The signal repeats in every sector observed, and per-pixel analysis places it on the star itself, not a neighbour.
- TIC 278614418, a Sun-like star with a period of about 48–60 days. That agrees with an independent spectroscopic measurement from 2016.
- TIC 261202918, a binary confirmed by Gaia with a 204.4-day orbit. It shows suppressed rotation in all 24 sectors observed, plus dimming events of 15–21% in 2018–2019 that are absent from 2020–2025. That’s consistent with a passing cloud of circumstellar debris.
What was hard
Telling stars from the instrument. An anomaly detector is very good at finding detector problems. Most of the work was in throwing candidates away: by position on the detector, by timing, by stability across clustering runs, and by binary flags. A candidate had to survive all of them.
Periods longer than a sector. One TESS sector lasts about 27 days, so a 50-day rotation never completes inside one. For the 16 stars whose periods hit that boundary, I stitched together two sectors to recover the period.
Proving it wasn’t the training data. Each candidate was checked against sectors the models never saw. In the primary cluster, 57% show the same suppressed signal again. That’s the result that makes it more than a curiosity.
The dataset, the trained weights and the full catalog are public, so anyone can check the work.