ICAL

ICAL provides a Python-based interface that wraps the Rapthor pipeline. Rapthor itself is an iterative self-calibration pipeline designed for direction‑dependent (DD) calibration (using DP3) and high‑resolution imaging (using WSClean) of radio interferometric data. It was originally developed for LOFAR HBA, and is now also being developed for SKA‑Low. It automates calibration and imaging using a sequence of modular operations driven by CWL workflow definitions.

The flowchart below provides an overview of the main steps in the ICAL (Rapthor) pipeline, including calibration, prediction, and imaging stages. It takes pre-processed target visibilities (generated by the BPP pipeline) as input and produces gain tables and facet regions (used downstream by the CIMG pipeline) as well as images after each iteration of self-calibration.

        flowchart TB
    sky_model@{ shape: disk, label: "Initial Sky Model"} --> tessellate["Group: Define DDE calibrators"]
    input_ms@{ shape: disk, label: "Pre-processed <br> Visibilities <br> (Target)"}

    bpp(("Batch Pre-Processing<br>(BPP)")) --> input_ms

    subgraph Predict["Predict"]
        dppp["Predict model visibilities"]
        model_vis@{ shape: disk, label: "Model visibility data"}
        subtract["Subtract model from data"]
        image_vis@{ shape: disk, label: "Imaging visibility data"}
    end

    subgraph Image["Image"]
        dppp_image["Phase shift visibilities"]
        image["Image using facets"]
        facet_regions@{ shape: disk, label: "Facet Regions"}
        images@{ shape: disk, label: "Images"}
        sky_models@{ shape: disk, label: "Updated Sky Model"}
    end

    subgraph Calibrate["Calibrate"]
        ddecal_fast["Calibrate fast phases"]
        ddecal_slow_separate["Calibrate slow gains"]
        process_gains["Process gains: smooth and normalise"]
        solutions_cal@{ shape: disk, label: "Gain Table (DDE)"}
    end

    tessellate & input_ms --> ddecal_fast

    ddecal_fast --> ddecal_slow_separate
    ddecal_slow_separate --> process_gains
    process_gains --> solutions_cal

    solutions_cal --> dppp
    dppp --> model_vis
    model_vis --> subtract
    subtract --> image_vis

    image_vis --> dppp_image
    dppp_image --> image
    image --> images & facet_regions & sky_models

    sky_models --> tessellate

    facet_regions & solutions_cal --> cimg(("Continuum Imaging <br> (CIMG)"))