GUI User Guide#
For the full class/method API reference (auto-generated from
src/songs/gui.py docstrings), see GUI Module (songs.gui).
Overview#
The SONGS GUI (src/songs/gui.py) is a Tkinter-based interactive front end
for generating and inspecting synthetic spectral cubes. It features a
4-column dark-themed card layout with the SONGS banner across the top.
Layout#
Controls are grouped into four card columns:
Initialisation Parameters — grid size, number of spectral channels, number of galaxies, random seed, output directory.
Central Galaxy Properties — Sérsic index \(n\), effective radius \(R_e\) (via resolution parameter r), scale height \(h_z\), central flux density \(S_e\), inclination, position angle.
Satellite Properties — satellite offset (pixels), satellite systemic velocity offset, beam parameters (bmin, bmaj, BPA).
Diffuse Features — interactive sliders and entry fields that map directly to
DEFAULT_DIFFUSE_PARAMS: halo amplitude (halo_Se_factor), bridge amplitude (bridge_Se_factor), streamer/tail amplitude (tail_Se_factor), tail velocity gradient (tail_vel_gradient), tail decay scale (tail_decay_scale), and the masterenabledtoggle. See Generator Reference for the full parameter reference.
All parameter changes take effect immediately when the user clicks Generate.
Launch Instructions#
From the package root:
python -m songs.gui
Or directly:
cd src/songs
python gui.py
Generation runs in a background thread so the interface remains responsive. Progress is streamed to the built-in Log window.
SliceViewer#
After a cube has been generated the Open SliceViewer button launches the built-in IFU SliceViewer:
Per-source sidebar — select which galaxy component (central, satellite 1, satellite 2, …) to highlight; switching sources updates all overlays instantly.
Contour overlays — per-source emission contours drawn at a configurable fraction of the peak channel intensity.
Bounding boxes — axis-aligned bounding boxes around each detected source region for quick spatial extent assessment.
Intensity threshold masking — a threshold slider suppresses low-surface- brightness residuals below a chosen fraction of the peak without re-generating the cube.
Saving#
The Save button writes the current cube and parameter dictionary to disk
without re-running generation. Supported formats: .npz (compressed NumPy
archive) and .pkl (Python pickle). Saved contents include the spectral cube
array, beam information, pixel spatial scale, and average velocity values.