Software
An array of sixteen telescopes producing three thousand images a night is a software problem as much as an optical one. Three systems carry it.
RTCSpy
Robotic Telescope Control System with Python
The autonomous operations framework that drives the array. Built on the TCSpy control layer, RTCSpy automates the whole night — startup, target selection, science observation, calibration acquisition, data transfer and shutdown — while coordinating all sixteen operational units over real-time network communication. A dedicated Target of Opportunity manager watches external alerts and can interrupt an ongoing observation, giving a response time of less than one minute between alert ingestion and the start of a follow-up exposure.
Operational since August 2024
Control layer
Device interfaces to mounts, cameras, focusers and filter wheels through ASCOM Alpaca and the PWI4 HTTP API.
Support layer
A MySQL dynamic target database holding targets, status and precomputed observability; an observation queue manager that ranks candidates in real time; a data transfer manager; and a weather monitor that suspends and resumes operation.
Application layer
Composes those components into the high-level applications executed during routine nightly operation.
Py7DT
7DT data reduction pipeline
Py7DT reduces heterogeneous data from many telescope units, filters and observing modes while sustaining nightly survey throughput and minimizing latency for transient events. It succeeds gpPy-GPU, inheriting its scientific routines and choice of external engines but rebuilding the orchestration around them. Images are grouped by their properties into configurations, submitted to an SQLite-backed system queue, and dispatched in parallel according to priority and stage hierarchy — typically fifteen workers, three of them reserved for preprocessing.
Sole operational pipeline since January 2026
Orchestration
DataReduction, BluePrint and Scheduler convert observations into executable processing units and track their dependencies.
Processing
Preprocess, Astrometry, Photometry, ImCoadd and ImSubtract run the standard reduction on each group.
Management
Multi-level logging, a composite-error registry for structured exception handling, automatically generated quality-assessment flags carried in FITS headers, and a web-based monitoring interface.
gwportal
7DS data and operations database
A Django and PostgreSQL database that manages all 7DT data and integrates the operations of RTCSpy and Py7DT. Its survey schema is synchronized in real time and mirrors the operational state of the pipeline: process_status records the progress of every product along with its software version and any error codes, while image_qa holds quality metrics — seeing, ellipticity, 5σ depth, astrometric precision — for every image produced. A companion dependency table traces the provenance of any output back through coadds, processed singles, master frames and raw exposures.
In operational use
Pipeline status
Real-time processing progress, QA summaries, logs, check plots and manual reprocessing triggers.
ToO page
Observation requests, the history of past events and the current status of the telescope units.
Documentation wiki
User manuals, event logs and QA criteria for internal team members and external users of 7DT data.
How a night is reduced
Py7DT is the operational data reduction pipeline. It addresses the reduction challenge specific to 7DT: heterogeneous data from many telescope units, filters and observing modes, reduced at survey throughput while keeping latency low for transient events. Orchestration modules group images by their properties into configurations backed by YAML files and submit them to an SQLite-based system queue, which dispatches them in parallel by priority and stage. Processing modules then run the standard sequence on each group, wrapping established astronomical software behind Python interfaces rather than reimplementing it.
- 01
Preprocess
Bias, dark and flat correction against master frames matched to the science data by camera, gain, binning, unit, night and filter. Raw frames sharing a master set are loaded as a cube and processed by array broadcasting, reducing per-image time to about one second under optimal conditions, and to 3.3 ± 2.0 s in routine operation; GPU preprocessing through CuPy is available as an option, though the throughput gain in this deployment is minimal. Master-frame selection quality is recorded as a bitmask in the FITS header so that a compromise is always visible downstream.
- 02
Astrometry
World coordinate solutions against Gaia DR3, pre-cut to RIS tiles and to HEALPix cells for arbitrary pointings. SCAMP is the default engine, with Astrometry.net as a fallback for blind solves. This is also the first stage that extracts sources, so it generates the image-quality metrics: astrometric separation statistics, field vertices and position angle, PSF size and elongation in radial bins, and source counts against a magnitude-limited reference.
- 03
Photometry
Flux-calibrated source catalogs from SExtractor, in fixed apertures and in the AUTO aperture. Zero points come from synthetic photometry integrated from Gaia XP spectra over each 7DT bandpass — an unusual advantage for an instrument with an unusual filter set. The module runs on single, coadd and difference images alike.
- 04
ImCoadd
Background subtraction, zero-point scaling, weight maps, bad-pixel interpolation, PSF homogenization, reprojection and combination via SWarp with a LANCZOS3 kernel. Flux scaling is defined to put the coadd at a zero point of 23.9 AB, so that pixel values carry units of microjansky.
- 05
ImSubtract
Difference image analysis with HOTPANTS against a reference of the same field. Because of the unusual filter set, 7DT uses homogeneous references from RIS taken with the same instrument; Pan-STARRS templates are available as an option for the broad bands. Difference imaging is skipped where no reference exists yet.
Target-of-opportunity handling
Target-of-opportunity data are handled in the same framework at elevated priority. A ToO configuration is placed ahead of routine survey work in the queue, and for the highest-priority cases - typically broadband frames, where a rapid community report is valuable - all other processing pauses to dedicate the full system to the job. Users receive notification when raw data arrive, again as each filter set completes, and once more on full completion with an SED plot and magnitude table attached. Every ToO event is tracked in a dedicated database recording timestamps, progress and output products, and all ToO data are reprocessed alongside routine data in the next daily run to produce the deepest possible coadds.
Running the pipeline yourself
Beyond its pipeline role, Py7DT is structured for offline reuse. Researchers inside and outside the 7DT team can run the same codebase to reprocess data with custom configurations, resuming from any stage of the reduction, and choose for themselves how far to trust the standard products. Images are passed through the pipeline as string paths with metadata in FITS headers and YAML files, rather than wrapped in a bespoke data model - a deliberate choice that keeps products inspectable outside the pipeline and keeps the learning cost of processing 7DT data low.
Py7DT adopts a rolling-release version scheme in which the last digit is incremented whenever a scientific decision changes how data are processed. That version is recorded in every configuration file and in the process status database, so any product can be traced to the code that made it — and reprocessed in bulk when the code changes.
| SExtractor | Source extraction and photometry |
|---|---|
| SCAMP | Astrometric and photometric solution |
| SWarp | Reprojection and coaddition |
| HOTPANTS | Difference image analysis |
| Astrometry.net | Blind astrometric fallback |
| CuPy | GPU-accelerated preprocessing |
| Gaia DR3 / XP | Astrometric and spectrophotometric reference |
Full technical descriptions are given in Hyun et al., Py7DT: Data Reduction Pipeline of the 7-Dimensional Telescope (Proc. SPIE 14155-12), and in Choi et al., Proc. SPIE 14151-12, which covers RTCSpy in full. See Publications.