Radio Interferometry ==================== Dataset name: ``radio_interferometry`` Data and Inverse Problem ------------------------ Radio interferometers do not measure a sky image directly. Pairs of antennas sample complex spatial frequencies called *visibilities*. Reconstructing the sky therefore amounts to recovering an image from incomplete, non-Cartesian Fourier measurements, with sampling weights determined by the telescope observation. This use case downloads a FITS sky image and uses Karabo to simulate a MeerKAT observation. The simulation produces a Measurement Set and a metadata file. At dataset load time, the cached visibilities are converted into a DeepInv physics operator and measurement tensor by the benchmark's dirty-imaging interface. The FITS image is retained as ground truth, and visibility weights are passed to the solver. There are two distinct noise controls. ``add_noise`` belongs to the Karabo observation simulation and therefore changes the prepared cache. ``noise_level`` adds reproducible Gaussian noise through the DeepInv physics when the benchmark dataset is loaded. What ``benchopt install`` Does ------------------------------ Radio interferometry provides a custom shell installer. It checks for Apptainer or Singularity, loads the ``singularity`` module when the environment supports modules, and pulls the Karabo image from an OCI registry if it is absent. The image is stored as ``benchmark_inference/tools/karabo.sif``. On Jean Zay, the installer also detects ``SINGULARITY_ALLOWED_DIR`` and ensures that ``karabo.sif`` is present there, using the site container-copy command when available. An existing image is reused. The registry can be overridden with the ``KARABO_IMAGE_URI`` environment variable. What ``benchopt prepare`` Does ------------------------------ Preparation first downloads the FITS file selected by ``fits_size``, either "1024" or "10k". It then builds a deterministic cache key from the observation parameters and checks for a matching Measurement Set and metadata file below the dataset's ``meerkat_cache/`` directory. If the cache is missing, preparation runs the Karabo container either directly or in a separate SLURM job according to ``run_on_slurm``. Preparation waits for a submitted simulation to finish and verifies that both cache files were created. Matching completed simulations are reused. Run preparation for every observation configuration before launching the main benchmark, especially on clusters where compute nodes have restricted network or container-registry access. The simulation SLURM settings below control this preparation job; they are separate from the parallel configuration used by ``benchopt run``. Image and Observation Parameters -------------------------------- ``fits_size`` (default ``"1024"``) Selects the source-image collection. Supported values are ``"1024"`` and ``"10k"``. ``pos_ra`` and ``pos_dec`` (defaults ``0.0``) Right ascension and declination used for a fixed observation position. ``random_position`` (default ``true``) Ask the simulator to select the sky position randomly rather than relying only on the fixed coordinates. ``number_of_time_steps`` (default ``64``) Number of temporal samples in the simulated observation. ``start_frequency_hz`` and ``end_frequency_hz`` Frequency interval of the observation; defaults are ``1.300e9`` and ``1.340e9`` Hz. ``number_of_channels`` (default ``8``) Number of frequency channels across the interval. ``pol_mode`` (default ``"Full"``) Polarization mode passed to the simulator. ``use_gpus`` (default ``true``) Enable GPU use inside the Karabo simulation. ``add_noise`` (default ``true``) Enable the simulator's observation noise. ``noise_level`` (default ``0.1``) Standard deviation of the additional Gaussian noise applied when creating the DeepInv measurements. ``seed`` (default ``42``) Seed for the additional DeepInv noise. Preparation-job Parameters -------------------------- ``run_on_slurm`` (default ``false``) Run Karabo immediately in the current allocation, or submit a dedicated simulation job when set to ``true``. ``slurm_folder`` (default ``debug_output/slurm_logs``) Submitit log directory for the simulation job. ``slurm_job_name`` (default ``karabo_simulator``) Name of the simulation job. ``slurm_nodes`` (default ``1``) Number of nodes requested for the simulation. ``slurm_ntasks_per_node`` (default ``1``) Number of simulation tasks started on each node. ``slurm_cpus_per_task`` (default ``40``) CPU cores requested for each simulation task. ``slurm_gres`` (default ``gpu:4``) Generic GPU resource request for the simulation. ``slurm_time`` (default ``60``) Wall-time value passed to Submitit for the simulation job. ``slurm_hint`` (default ``nomultithread``) SLURM hint applied to the simulation job. ``slurm_account`` (default ``null``) Optional SLURM account used for the simulation. ``slurm_constraint`` (default ``v100-32g``) GPU constraint requested for the simulation. ``slurm_setup`` (default loads the Singularity module) Commands executed before the simulation job starts. ``slurm_poll_interval_seconds`` (default ``30``) Interval at which preparation checks the submitted job. ``slurm_wait_timeout_seconds`` (default ``1200``) Maximum time preparation waits before cancelling the simulation job. See ``benchmark_inference/configs/examples/radio_interferometry.yml`` for a complete configuration.