Skip to main content

cabaret

cabaret is a Python package to simulate astronomical images using the Gaia catalog of stars.

Documentation can be found at cabaret.readthedocs.io.

Installation

You can install cabaret in a Python (>=3.11) environment with

pip install cabaret

or from a local clone

git clone https://github.com/ppp-one/cabaret
pip install -e cabaret

You can test the package has been properly installed with

python -c "import cabaret"

Quick Start

Basic image

To generate an image from RA/DEC coordinates, run:

import cabaret

image = cabaret.Observatory().generate_image(
    ra=12.33230,  # right ascension in degrees
    dec=30.4343,  # declination in degrees
    exp_time=10,  # exposure time in seconds
)

To display the image:

from cabaret.plot import plot_image

plot_image(image, contrast=0.25)

Custom Observatory Configuration

Create a fully customized observatory by defining each component:

from datetime import UTC, datetime
import cabaret

# Define observatory components
site = cabaret.Site(
    sky_background=150,  # e-/m^2/arcsec^2/s
    seeing=1.5,  # arcseconds
    elevation=2500,  # meters
)

telescope = cabaret.Telescope(
    focal_length=8,  # meters
    diameter=1.0,  # meters
)

camera = cabaret.Camera(
    name="Example Camera",
    width=2048,  # pixels
    height=2048,  # pixels
    pitch=10,  # microns
    gain=1,  # electrons per ADU
    read_noise=6.2,  # electrons
)

# Create the observatory
observatory = cabaret.Observatory(
    name="My Observatory",
    site=site,
    telescope=telescope,
    camera=camera,
)

# Generate a FITS image with metadata
hdu = observatory.generate_fits_image(
    ra=323.362583,
    dec=-0.82325,
    exp_time=0.5,
    dateobs=datetime.now(UTC),
    filter_band=cabaret.Filters.G,
    seed=42,
)

# Save as FITS file
hdu.writeto("simulated_image.fits", overwrite=True)

Custom Source Lists

You can manipulate the source catalog before generating images:

from astropy.coordinates import SkyCoord
import numpy as np

# Query Gaia catalog
center = SkyCoord(ra=323.362583, dec=-0.82325, unit="deg")
table = cabaret.GaiaQuery.query(
    center=center,
    radius=camera.get_fov_radius() * 1.5,
    filter_bands=cabaret.Filters.G,
)

# Filter out bright sources
fluxes = table[cabaret.Filters.G.value].value.data
mask = fluxes < 1e4
filtered_table = table[mask]

# Create custom source list
sources = cabaret.Sources.from_arrays(
    ra=filtered_table["ra"].value.data,
    dec=filtered_table["dec"].value.data,
    fluxes=filtered_table[cabaret.Filters.G.value].value.data,
)

# Generate image with custom sources
image = observatory.generate_image(
    ra=center.ra.deg,
    dec=center.dec.deg,
    exp_time=0.5,
    sources=sources,
)

Offline SQLite Catalogs

You can query a local SQLite catalog instead of a remote TAP endpoint.

The local table is expected to contain at least ra and dec, and optionally pmra, pmdec, plus Gaia/2MASS magnitude columns like phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, j_m, h_m, ks_m.

import cabaret
from astropy.coordinates import SkyCoord

sqlite_source = cabaret.GaiaSQLiteSource(
    database="/data/catalogs/gaia_subset.sqlite",
)

table = cabaret.GaiaQuery.query(
    center=SkyCoord(ra=323.362583, dec=-0.82325, unit="deg"),
    radius=0.1,
    filter_bands=[cabaret.Filters.G],
    tap_source=sqlite_source,
    limit=5000,
)

Explore the full documentation, API reference, and advanced usage examples at cabaret.readthedocs.io.

Metadata

Release files for cabaret 0.5.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cabaret 0.5.5
File Size Uploaded Provenance Actions
cabaret-0.5.5.tar.gz 658.3 kB With provenance Details for cabaret-0.5.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cabaret 0.5.5
File Interpreter ABI Platform Actions
cabaret-0.5.5-py3-none-any.whl Python 3 none any Details for cabaret-0.5.5-py3-none-any.whl

Total release size: 699.9 kB

Release files / cabaret-0.5.5.tar.gz

Download URL cabaret-0.5.5.tar.gz
Size 658.3 kB
Tags Source
SHA-256 checksum
How to use checksums
84d880cea92c8f6c6d8d0b504db31030d7b8d3e36c2fadef276c8ac1d18e523e
BLAKE2b-256 checksum
How to use checksums
148aef8f3ae8dfc0a98db1c45f9d530402af19d67959366f584ae8c6caf94076
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release files / cabaret-0.5.5-py3-none-any.whl

Download URL cabaret-0.5.5-py3-none-any.whl
Size 41.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9fe43165bc6dba54cb503dff3df17ff0cb022de1c2db16f4cb730470cba08d4
BLAKE2b-256 checksum
How to use checksums
7d7568a5bbcaef70a12e0e4c4740c7f183ca5420041a91538bda51c555cb04cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Security for cabaret 0.5.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for cabaret-0.5.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page