An opt-in decomposition of the fitted RFI visibility into its per-satellite contributions, for diagnosing astronomical signal leaking into the RFI model.
Why
The diagnostic is visual and unambiguous: a genuine satellite RFI is a clean streak in exactly one per-source image. A feature appearing in several is sky flux that the fit has split across satellites — the failure mode #77's elevation mask addressed from one direction, seen directly.
Aggregate metrics do not show this. Reduced chi^2 is blind to it (measured identical to 3 decimal places across elevation cuts that visibly changed the sky model), because moving power between two components of the same total costs nothing in the likelihood.
How
The RFI visibility op sums over the satellite (n_rfi) axis, so each source's contribution is recovered by evaluating the same forward op one satellite at a time on the already-fitted fine-grid rfi_A / rfi_phase. No re-fit, no GP re-evaluation, and the per-source visibilities sum back to vis_rfi exactly — which is the check worth keeping as a test.
Scope
data.save_rfi_per_sat (default false) makes a run also store rfi_vis_src (dims sample, src, bl, freq, time) plus a norad_id coord, in the map zarr. It costs ~n_rfi x the rfi_vis storage and n_rfi forward-op evaluations, hence opt-in.
write_per_sat_rfi_ms reads rfi_vis_src back from the zarr and writes one MS column per satellite, TAB_RFI_<NORAD> (e.g. TAB_RFI_58126). Standalone and re-runnable from just the zarr plus the MS, so the decomposition does not have to be decided before the fit.
- A console script wrapping it, so a single satellite's modelled RFI can be imaged directly.
Acceptance
Draft
153155e on the unpushed gain-tables branch (CSCS daint).
Related
An opt-in decomposition of the fitted RFI visibility into its per-satellite contributions, for diagnosing astronomical signal leaking into the RFI model.
Why
The diagnostic is visual and unambiguous: a genuine satellite RFI is a clean streak in exactly one per-source image. A feature appearing in several is sky flux that the fit has split across satellites — the failure mode #77's elevation mask addressed from one direction, seen directly.
Aggregate metrics do not show this. Reduced chi^2 is blind to it (measured identical to 3 decimal places across elevation cuts that visibly changed the sky model), because moving power between two components of the same total costs nothing in the likelihood.
How
The RFI visibility op sums over the satellite (
n_rfi) axis, so each source's contribution is recovered by evaluating the same forward op one satellite at a time on the already-fitted fine-gridrfi_A/rfi_phase. No re-fit, no GP re-evaluation, and the per-source visibilities sum back tovis_rfiexactly — which is the check worth keeping as a test.Scope
data.save_rfi_per_sat(default false) makes a run also storerfi_vis_src(dimssample, src, bl, freq, time) plus anorad_idcoord, in the map zarr. It costs ~n_rfix therfi_visstorage andn_rfiforward-op evaluations, hence opt-in.write_per_sat_rfi_msreadsrfi_vis_srcback from the zarr and writes one MS column per satellite,TAB_RFI_<NORAD>(e.g.TAB_RFI_58126). Standalone and re-runnable from just the zarr plus the MS, so the decomposition does not have to be decided before the fit.Acceptance
vis_rfiexactlyDraft
153155eon the unpushedgain-tablesbranch (CSCS daint).Related
truth.py#95 — truth handling, the natural neighbour for diagnostics