SENPAI is a software package for the analysis of astronomical images.
Project description
SENPAI
A classic star detector and astrometry tool.
SENPAI is built off of the algorithm descriptions in Gazak et al. 2026, PASP, 138, 014502 — see Citation below if you use this software.
Is SENPAI the tool I'm looking for? SENPAI processes FITS imagery from ground-based telescopes and provides:
- ✔️ Astrometric fitting (WCS) — from a sidereal image, a list of extracted star positions, a sidereal + rate-track series, or a single or series of rate-track images with no prior WCS
- ✔️ Point source detection — stars in sidereal frames, satellites in rate-track frames
- ✔️ Streak detection — satellite/debris trail detection and measurement, with multi-frame confirmation
- ✔️ Photometry — aperture photometry with star catalog cross-matching (Gaia, SDSS, SSTRC7)
- ✔️ Batch processing — process whole directories of imagery via CLI or REST API
- ✔️ ML dataset export — export detections as COCO-format datasets for model training
Dependencies
- astroeasy - Handles all Astrometry.net considerations (installation, index files). See its README for setup and getting your config right
- Star catalogs - See senpai/catalog/README.md for setup and usage
Install
Install from PyPI (package name astro-senpai, imports as senpai):
pip install astro-senpai
Development install
This repo uses uv to manage python dependencies. First, install uv. Then,
make sync
or
uv sync --all-extras
then
source .venv/bin/activate
Run SENPAI
When you run the SENPAI api, it loads a config file, which you can specify on command line (or use default resources/config/local.yaml)
Run SENPAI CLI
you can always provide your own config.yaml with --config <your_config.yaml> flag.
I want to:
- fit a single sidereal image:
python -m senpai.cli.single --image <your_fits_file> --output_dir <your_output_directory> --plot
Run SENPAI API
When you run the SENPAI api, it loads a config file, which you can specify on command line (or use default resources/config/local.yaml)
- the default config is resources/config/local.yaml
- on startup, SENPAI will check for downloaded indices files
local SENPAI API
make run
or
uv run python -m senpai.api.main --config resources/config/local.yaml
containerized SENPAI API
Build container
docker build -t senpai .
Or, if you have a custom base image:
docker build --build-arg BASE_IMAGE=<your-custom-base-image> -t senpai .
run container
- config this container builds with resources/local/containerize.yaml
- port runs on 8000 in container
Run like this, noting that target is the path to your indices in the container, and must match your config file (containerized.yaml by default).
docker run -p 8000:8000 --mount type=bind,source=/path/to/indices/5000/5200,target=/home/starman/indices/5000/5200 senpai:latest
If you want to use a different config file (to specify different indices or other settings), you can do so like this:
docker run -p 8000:8000 \
--mount type=bind,source=/path/to/indices/5000/5200,target=/home/starman/indices/5000/5200 \
--mount type=bind,source=/path/to/your/config.yaml,target=/app/resources/config/containerized.yaml \
senpai:latest
This will mount your custom config file in place of the default containerize.yaml. Make sure your custom config file follows the same format as the default configuration.
Citation
SENPAI implements the algorithms described in:
Gazak, J. Z., Fisher, L., Phelps, M., Swindle, R., Baruela, L., & Fletcher, J. 2026, "SENPAI: Sidereal Enriched Rate-track Astrometry in Deep Imagery of Solar System Bodies", PASP, 138, 014502. doi:10.1088/1538-3873/ae2b35
If you use SENPAI in your research, please cite this paper:
@article{Gazak2026SENPAI,
title = {SENPAI: Sidereal Enriched Rate-track Astrometry in Deep Imagery of Solar System Bodies},
author = {Gazak, J. Zachary and Fisher, Lauren and Phelps, Matthew and Swindle, Ryan and Baruela, Leonard and Fletcher, Justin},
journal = {Publications of the Astronomical Society of the Pacific},
volume = {138},
number = {1},
pages = {014502},
year = {2026},
doi = {10.1088/1538-3873/ae2b35}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file astro_senpai-2.3.1.tar.gz.
File metadata
- Download URL: astro_senpai-2.3.1.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7426af58f8b0949f7385ba8de6b97da7a1ccf84a8ba52ba5332ef539efb8d196
|
|
| MD5 |
57112986cf121d9f53d5c505eab00d0e
|
|
| BLAKE2b-256 |
35f69daa8f2a9bc988fee903fd43dbc0de43469240e7683522a1cd6af1293958
|
File details
Details for the file astro_senpai-2.3.1-py3-none-any.whl.
File metadata
- Download URL: astro_senpai-2.3.1-py3-none-any.whl
- Upload date:
- Size: 521.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa50d7857e5d4ef59d673aeb93df3a5998bb7222568bb7a07ee5339fe308176c
|
|
| MD5 |
8fbd47d6e7f203acd1ff00779af88fb4
|
|
| BLAKE2b-256 |
47b57e8aec69ced18cfe1d40b82a3c9d09345b0a59233709a84de3316fa83b56
|