Instrument Simulation Toolkit Boîte à outils de simulation d'instrument
VROOMM
Night planning, physically motivated detector synthesis, and batch execution for spectrograph simulation workflows. Planification de nuit, synthèse physique du détecteur et exécution par lots pour les flux de travail de simulation de spectrographe.
How The Project Is OrganizedComment le projet est organisé
Five plain-Python files cover the whole pipeline, from GUI to physics engine to this website. Data flow: night_planner.py (build a night) → run_night.py (walk the sequence) → simulate_detector.py (one physics run per exposure) → FITS/PNG/JPG frames in night_output/. Cinq fichiers Python couvrent tout le pipeline, de l'interface graphique au moteur physique jusqu'à ce site. Flux de données : night_planner.py (construire une nuit) → run_night.py (parcourir la séquence) → simulate_detector.py (une exécution physique par pose) → images FITS/PNG/JPG dans night_output/.
- night_planner.py — GUI entry point. Builds a night's observing sequence (calibrations + science targets), enriches targets via SIMBAD/Gaia DR3, and launches the runner.
- night_planner.py — point d'entrée de l'interface graphique. Construit la séquence d'observation d'une nuit (calibrations + cibles scientifiques), enrichit les cibles via SIMBAD/Gaia DR3, et lance l'exécuteur.
- run_night.py — batch execution engine. Walks the planned sequence exposure by exposure, calls the physics engine for each one, and shows live progress.
- run_night.py — moteur d'exécution par lots. Parcourt la séquence planifiée pose par pose, appelle le moteur physique pour chacune, et affiche la progression en direct.
- simulate_detector.py — the physics core. Turns a 1D spectrum into a 2D detector image via the PSF / trace-geometry / spline pipeline described below; also runnable standalone from the command line.
- simulate_detector.py — le cœur physique. Transforme un spectre 1D en image de détecteur 2D via le pipeline PSF / géométrie de trace / spline décrit plus bas ; peut aussi être exécuté seul en ligne de commande.
- simulate_params.yaml — central configuration for a single simulate_detector.py run: telescope, target, spectrum model, sky, telluric absorption, fiber setup.
- simulate_params.yaml — configuration centrale pour une exécution de simulate_detector.py : télescope, cible, modèle spectral, ciel, absorption tellurique, configuration de fibre.
- make_webpage_assets.py — builds this website: copies preview images, computes the stats below, and regenerates the mini-lecture figures.
- make_webpage_assets.py — construit ce site : copie les images d'aperçu, calcule les statistiques ci-dessous, et régénère les figures du mini-cours.
- assets/ — bundled and auto-fetched data (Zemax optical design, TAPAS telluric transmission, throughput curves, cached spectral models). See “Where The Data Comes From” below.
- assets/ — données groupées et récupérées automatiquement (conception optique Zemax, transmission tellurique TAPAS, courbes de transmission, modèles spectraux en cache). Voir « Origine des données » plus bas.
Local InstallationInstallation locale
Clone the repository, create an isolated virtual environment so these dependencies don't collide with anything else on your system, activate it, then install the required packages. Everything else (Zemax optical data, telluric transmission) is bundled in the repo as compressed archives and auto-extracts on first run — no separate download step. Runs entirely locally with plain Python; no web backend required. Clonez le dépôt, créez un environnement virtuel isolé pour que ces dépendances n'entrent pas en conflit avec le reste de votre système, activez-le, puis installez les paquets requis. Tout le reste (données optiques Zemax, transmission tellurique) est fourni dans le dépôt sous forme d'archives compressées et s'extrait automatiquement au premier lancement — aucun téléchargement séparé. Fonctionne entièrement en local avec du Python pur ; aucun serveur web requis.
Daily Workflow (In Practice)Utilisation quotidienne (en pratique)
The planner drives the observing sequence and launches the runner. This is the only command you normally need day-to-day. Le planificateur pilote la séquence d'observation et lance l'exécuteur. C'est normalement la seule commande dont vous avez besoin au quotidien.
Planner GUIInterface du planificateur
night_planner.py's main window. Build the night's sequence with +Calibration/+Science/+Slew/+Delay, reorder or delete steps, then Recompute BERV+AM before hitting Run Night. Each row tracks its own RA/Dec, systemic RV, BERV, airmass, fiber routing, and status live as run_night.py executes it; Export YAML saves the sequence to replay later. La fenêtre principale de night_planner.py. Construisez la séquence de la nuit avec +Calibration/+Science/+Slew/+Delay, réordonnez ou supprimez des étapes, puis Recompute BERV+AM avant de lancer Run Night. Chaque ligne suit sa propre RA/Dec, RV systémique, BERV, masse d'air, routage de fibre, et son statut en direct pendant l'exécution par run_night.py ; Export YAML enregistre la séquence pour la rejouer plus tard.
Detector PreviewAperçu détecteur
PNG preview is true 2x2 binned and scaled to 0..2xP90. L'aperçu PNG est un vrai binning 2x2, mis à l'échelle de 0 à 2×P90.
Perceptual-Color PreviewAperçu en couleurs perceptuelles
Hue = wavelength (blue → red, following the eye's spectral response). Brightness = sqrt(flux), so faint orders stay visible next to bright ones. Teinte = longueur d'onde (bleu → rouge, selon la réponse spectrale de l'œil). Luminosité = √flux, pour que les ordres faibles restent visibles à côté des plus brillants.
Simulation SummaryRésumé de la simulation
MethodsMéthodes
Auto-extracted from simulate_params.yaml during asset generation. Extrait automatiquement de simulate_params.yaml lors de la génération des ressources.
Mini Lecture: How A 1D Spectrum Becomes A 2D Detector Image Mini-cours : comment un spectre 1D devient une image de détecteur 2D
This simulator does not draw arbitrary lines on an image. It starts with optical design products from Zemax, then propagates a calibrated spectrum through trace geometry and PSF deposition so every detector pixel receives physically motivated photon counts.
Ce simulateur ne trace pas des lignes arbitraires sur une image. Il part des produits de conception optique de Zemax, puis propage un spectre calibré à travers la géométrie de trace et le dépôt de PSF, de sorte que chaque pixel du détecteur reçoive un nombre de photons physiquement motivé.
The four figures below are generated automatically from your local data and are meant to be read in order. They illustrate the exact sequence used in the code path.
Les quatre figures ci-dessous sont générées automatiquement à partir de vos données locales et sont pensées pour être lues dans l'ordre. Elles illustrent la séquence exacte utilisée dans le code.
Step 1. Build Detector-Scale PSFs Étape 1. Construction des PSF à l'échelle du détecteur
Input: Zemax PSF stamp (80x80 at 3 um sampling). Operation: true block binning to detector sampling (20x20 at 12 um), with flux conservation. Output: detector-scale PSF kernels ready for sub-pixel placement.
Entrée : vignette PSF Zemax (80×80 à 3 µm d'échantillonnage). Opération : vrai binning par blocs vers l'échantillonnage du détecteur (20×20 à 12 µm), avec conservation du flux. Sortie : noyaux PSF à l'échelle du détecteur, prêts pour un placement sous-pixel.
Step 2. Trace Geometry From XY Maps Étape 2. Géométrie de trace à partir des cartes XY
Input: per-order wavelength-position map from the Zemax XY table. Operation: convert mm to detector pixels and construct order centerlines. Output: wavelength-tagged trajectories for each order on detector coordinates.
Entrée : carte longueur d'onde-position par ordre, issue de la table XY de Zemax. Opération : conversion des mm en pixels du détecteur et construction des lignes centrales de chaque ordre. Sortie : trajectoires étiquetées en longueur d'onde pour chaque ordre, en coordonnées du détecteur.
Step 3. Spline Interpolation Along The Trace Étape 3. Interpolation par spline le long de la trace
Input: sparse optical-design samples. Operation: fit cubic splines x(lambda) and y(lambda), then sample at the simulation wavelength step. Output: smooth wavelength to sub-pixel detector mapping.
Entrée : échantillons épars issus de la conception optique. Opération : ajustement de splines cubiques x(λ) et y(λ), puis échantillonnage au pas de longueur d'onde de la simulation. Sortie : correspondance lisse entre longueur d'onde et position sous-pixel sur le détecteur.
Step 4. Photon-Conserving 2D Stamp Accumulation Étape 4. Accumulation 2D des vignettes à photons conservés
Input: sampled spectral flux, interpolated coordinates, and detector-scale PSF kernels. Operation: shift and add PSF stamps at each wavelength coordinate. Output: final detector frame in photons per pixel.
Entrée : flux spectral échantillonné, coordonnées interpolées, et noyaux PSF à l'échelle du détecteur. Opération : décalage et addition des vignettes PSF à chaque coordonnée de longueur d'onde. Sortie : image finale du détecteur, en photons par pixel.
Transmission SnapshotAperçu de la transmission
Where The Data Comes FromOrigine des données
Everything below is fetched or bundled automatically — no manual downloads needed to run the simulator. Tout ce qui suit est récupéré ou fourni automatiquement : aucun téléchargement manuel n'est nécessaire pour exécuter le simulateur.
- Zemax optical design (PSF stamps + order XY maps): bundled in the repo as compressed archives, auto-extracted on first run.
- Conception optique Zemax (vignettes PSF + cartes XY des ordres) : fournie dans le dépôt sous forme d'archives compressées, extraites automatiquement au premier lancement.
- BT-Settl CIFIST synthetic spectra: nearest grid point to the requested Teff/logg fetched live from the SVO theoretical spectra service and cached locally.
- Spectres synthétiques BT-Settl CIFIST : le point de grille le plus proche du Teff/logg demandé est récupéré en direct depuis le service de spectres théoriques SVO et mis en cache localement.
- TAPAS telluric transmission (per-species H2O/CO2/CH4/O2/O3/N2O/NO2): bundled compressed FITS, auto-extracted on first run.
- Transmission tellurique TAPAS (par espèce H2O/CO2/CH4/O2/O3/N2O/NO2) : fichier FITS compressé fourni, extrait automatiquement au premier lancement.
- Gaia DR3 / SIMBAD: queried live for target astrometry, parallax, and photometry during night planning.
- Gaia DR3 / SIMBAD : interrogés en direct pour l'astrométrie, la parallaxe et la photométrie des cibles lors de la planification de nuit.
- Sky OH airglow & arc lamp lines: fetched from ExoMol MoLLIST-OH and NIST ASD, then cached as local line lists.
- Raies d'émission du ciel (OH) et de lampe à arc : récupérées depuis ExoMol MoLLIST-OH et NIST ASD, puis mises en cache sous forme de listes de raies locales.
Key FeaturesFonctionnalités clés
- Science fiber routing with simultaneous sky in both fibers.
- Routage de la fibre scientifique avec ciel simultané dans les deux fibres.
- Wavelength-dependent throughput and adaptive spectral sampling.
- Rendement dépendant de la longueur d'onde et échantillonnage spectral adaptatif.
- SIMBAD plus Gaia DR3 target enrichment with per-target overrides.
- Enrichissement des cibles via SIMBAD et Gaia DR3, avec surcharges par cible.
- Planner-to-runner pipeline with status-aware execution.
- Pipeline planificateur-exécuteur avec suivi d'état de l'exécution.