Metadata-Version: 2.4
Name: exoveil
Version: 0.2.0
Summary: Detecting single-transit exoplanets through learned stellar behaviour
Author: Pratik Priyanshu
Author-email: Pratik Priyanshu <pratikpriyanshu12345@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/pratikpriyanshu/exoveil
Keywords: exoplanet,transit,detection,world-model,astronomy,machine-learning
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.21
Requires-Dist: scipy>=1.7
Requires-Dist: torch>=1.12
Requires-Dist: astropy>=5.0
Requires-Dist: requests>=2.25
Requires-Dist: matplotlib>=3.5
Dynamic: author
Dynamic: requires-python

# EXOVEIL

**Detecting single-transit exoplanets through learned stellar behaviour.**

EXOVEIL is a world-model-based transit detection system. It learns what a star's brightness *should* look like and flags when reality disagrees. Unlike ExoMiner and AstroNet, it detects planets that transit only once.

## Quick Start

```python
from exoveil import ExoVeil

model = ExoVeil.from_pretrained()
results = model.detect("KIC 11812062")

for event in results['events']:
    print(f"Transit at t={event['time']:.2f}, SNR={event['snr']:.1f}, depth={event['depth_ppm']:.0f} ppm")
```

## Key Results

- **Single-transit detection**: 32% recovery at 1000 ppm (ExoMiner/AstroNet: 0%)
- **179 new candidate signals** in Kepler data not in DR25 TCE catalog
- **47/47 TESS planets recovered** in PLATO LOPS2 field (zero-shot transfer)
- **100% recovery at PLATO cadence** down to 100 ppm
- **Conformal uncertainty guarantees**: 95.9% coverage
- Classification AUC: 0.938 on Kepler DR25

## Works With

- Kepler light curves (`model.detect("KIC 11812062")`)
- TESS light curves (`model.detect("TIC 25155310")`)
- Raw flux arrays (`model.detect_from_array(time, flux)`)
- Any photometric time series

## Citation

```bibtex
@article{priyanshu2026exoveil,
    title={EXOVEIL: Detecting Single-Transit Exoplanets Through Learned Stellar Behaviour},
    author={Priyanshu, Pratik},
    journal={arXiv preprint arXiv:XXXX.XXXXX},
    year={2026}
}
```
