Migrating from RASCIL

The transitional cohabitation release (v0.35.0) supported RASCIL alongside SDP, OSKAR, and WSClean. The current source tree removes the RASCIL implementation, selectors, warnings, and dependency. Old workflows must select a supported backend; there is no compatibility adapter that executes RASCIL.

Replacement APIs

Upgrade map

Removed usage

Replacement

SimulatorBackend.RASCIL

SimulatorBackend.SDP in simulation and telescope construction

ImagingBackend.RASCIL or get_imager("rascil")

get_imager(ImagingBackend.SDP) or get_imager(ImagingBackend.WSCLEAN)

IMAGING_BACKEND=rascil / --imaging-backend rascil

sdp or wsclean in the same setting

RascilDirtyImager / RascilDirtyImagerConfig

get_imager plus ImageSpec and invert

RascilImageCleaner / RascilImageCleanerConfig

SdpImagerConfig or WscleanBackendConfig through the factory, followed by restore

SkyModel.from_fits_image(..., backend="rascil")

backend=SimulatorBackend.SDP (also the default for this method)

SkyModel.convert_to_backend(SimulatorBackend.RASCIL, ...)

SimulatorBackend.SDP with the same frequency and channel-bandwidth arguments

LineEmissionSimulation_RASCIL.ipynb

LineEmissionSimulation.ipynb in karabo/examples

Removed enum attributes and modules are no longer importable. Parsing a legacy value through SimulatorBackend("RASCIL"), get_imager("rascil"), or the FITS sky-model loader raises an actionable ValueError. Remove imports and warning filters for the deleted RASCIL deprecation helpers and karabo.util.rascil_util; those warnings are no longer emitted.

Use the SDP telescope constructor directly

For an existing Karabo sky and observation:

from karabo.simulator_backend import SimulatorBackend
from karabo.simulation.interferometer import InterferometerSimulation
from karabo.simulation.telescope import Telescope

telescope = Telescope.constructor("MID", backend=SimulatorBackend.SDP)
simulation = InterferometerSimulation()
vis = simulation.run_simulation(
    telescope=telescope,
    sky=sky,
    observation=observation,
    backend=SimulatorBackend.SDP,
    visibility_format="MS",
)

Do not access the old telescope configuration aliases. Use the public telescope constructor and simulation APIs. OSKAR simulation remains supported and remains the default when no simulator is passed.

Replace direct imaging calls

For a Measurement Set in vis, with phase centre RA 20 degrees, Dec -30 degrees:

from karabo.imaging.imager_factory import (
    ImagingBackend,
    SdpImagerConfig,
    get_imager,
)
from karabo.imaging.imager_interface import ImageSpec

imager = get_imager(
    ImagingBackend.SDP,
    config=SdpImagerConfig(clean_niter=500, override_cellsize=True),
)
spec = ImageSpec(npix=1024, cellsize_arcsec=1.0, phase_centre_deg=(20.0, -30.0))
dirty, psf = imager.invert(vis, spec)
restored = imager.restore(dirty, psf)
restored.write_to_file("restored.fits", overwrite=True)

Migration is not a one-to-one rename of cleaner options. The current SDP adapter supports Hogbom CLEAN only. Choose supported settings explicitly; use WSClean through the same factory with WscleanBackendConfig when appropriate. WSClean restoration requires a preceding invert on that same instance.

Check units and scientific outputs

  • Old direct-imager imaging_cellsize values are radians. Convert them to ImageSpec.cellsize_arcsec with math.degrees(value) * 3600.

  • ImageSpec.phase_centre_deg should match the Measurement Set; it does not rephase input visibilities. Check the output WCS.

  • Set override_cellsize=True in SDP to preserve the requested pixel scale. Set combine_across_frequencies=False if channel images must be preserved; by default SDP sums channel images.

  • A restoring beam uses degrees for bmaj, bmin, and bpa. The SDP restoration fix removes an erroneous extra division by 3600; images produced before that correction should be regenerated if the restoring-beam scale matters to the analysis.

  • Check source position, flux units, PSF width, and residuals after migration. Different gridders, weighting, restoring beams, and CLEAN controls can change images; exact numerical equivalence to the retired backend is not promised.

Installation and modernization

Use the updated project environment/recipe when installing this source version. RASCIL is no longer a dependency. python-casacore is now an explicit dependency for Karabo’s Measurement Set I/O, and Astropy is constrained to >=5.1,<5.2 for the pinned SDP data-model package.

Removal enables further dependency work; it does not complete it. NumPy remains below 2, and the SDP stack remains pinned. NumPy 2, broader dependency upgrades, and ARM64/HPC validation are separate follow-up tasks. See Release Notes for the unreleased status and remaining validation.