ddompe/astro-iq
astro-iq — Astrophotography Sub-frame Quality Dataset A machine-learning dataset for no-reference quality scoring of raw astrophotography sub-exposures. Each sample is a 512×512 greyscale PNG thumbnail (center-cropped from the original 6248×4176 sensor frame) paired with photometric features and a continuous quality label in [0, 1]. Dataset summary Property Value Total frames 8,378 Labelled frames 7,828 Sensors ZWO ASI2600MC Pro (OSC), ZWO… See the full description on the dataset page: https://huggingface.co/datasets/ddompe/astro-iq.
astro-iq — Astrophotography Sub-frame Quality Dataset
A machine-learning dataset for no-reference quality scoring of raw astrophotography sub-exposures. Each sample is a 512×512 greyscale PNG thumbnail (center-cropped from the original 6248×4176 sensor frame) paired with photometric features and a continuous quality label in [0, 1].
Dataset summary
Labels
Two auto-generated labels are provided:
- `label_composite` (primary): weighted sum of four percentile-normalised signals — FWHM (0.35), eccentricity (0.20), SNR (0.20), sky sigma (0.15). Each component is normalised within its filter group. Score 1.0 = best quality in the archive, 0.0 = worst.
- `label_fwhm`: FWHM-only label, normalised within each (object, filter) group. Useful as a baseline or sanity check.
Splits
Splits are session-based: all frames from the same (object, night) are in the same split. This prevents atmospheric-condition leakage that would inflate test-set accuracy with a frame-random split.
File structure
data/labels.parquet # one row per frame, all features + labels + split
thumbnails/ # 512×512 8-bit greyscale PNG per frame
<xx>/ # first 2 hex chars of frame_id (directory sharding)
<frame_id>.pngJoin thumbnails to metadata by frame_id:
thumb_path = f"thumbnails/{frame_id[:2]}/{frame_id}.png"Loading the dataset
import polars as pl
from PIL import Image
df = pl.read_parquet("data/labels.parquet")
train = df.filter(pl.col("split") == "train")
# Load a thumbnail
frame_id = train["frame_id"][0]
img = Image.open(f"thumbnails/{frame_id[:2]}/{frame_id}.png")Or with the HuggingFace datasets library (streaming-friendly):
from datasets import load_dataset
ds = load_dataset("ddompe/astro-iq")Citation
If you use this dataset, please cite:
@dataset{astroiq2025,
author = {Dompe, Diego and Ramirez, David},
title = {astro-iq: Astrophotography Sub-frame Quality Dataset},
year = {2025},
publisher = {HuggingFace},
url = {https://huggingface.co/datasets/ddompe/astro-iq}
}Licence
Dataset (Parquet + thumbnails): CC BY 4.0. Pipeline code: MIT — see the GitHub repository.
