Source code for edges.cal.dicke

"""Functions for dicke-switch calibration."""

import numpy as np
from pygsdata import GSData, gsregister


[docs] @gsregister("calibrate") def dicke_calibration(data: GSData) -> GSData: """Calibrate field data using the Dicke switch data. Assumes that the data has the three loads "ant", "internal_load" and "internal_load_plus_noise_source". The data is calibrated using the Dicke switch model (i.e. ``(ant - internal_load)/(internal_load_plus_noise_source - internal_load)``). """ iant = data.loads.index("ant") iload = data.loads.index("internal_load") ilns = data.loads.index("internal_load_plus_noise_source") with np.errstate(divide="ignore", invalid="ignore"): q = (data.data[iant] - data.data[iload]) / (data.data[ilns] - data.data[iload]) return data.update( data=q[np.newaxis], data_unit="uncalibrated", times=data.times[:, [iant]], time_ranges=data.time_ranges[:, [iant]], effective_integration_time=data.effective_integration_time[[iant]], lsts=data.lsts[:, [iant]], lst_ranges=data.lst_ranges[:, [iant]], loads=("ant",), nsamples=data.nsamples[[iant]], flags={name: flag.any(axis="load") for name, flag in data.flags.items()}, residuals=None, )