ska_ost_senscalc.low.sefd_lookup

class ska_ost_senscalc.low.sefd_lookup.SEFDTable(db_path=None)[source]

Encapsulation of the SEFD lookup table to be used for SKA LOW calculations

lookup_stokes_i_sefd(az: float, el: float, start_lst: float, end_lst: float, freq_fine_mhz: ndarray) ndarray[source]

Look up the SEFD values from the database corresponding to the local coordinates (az, el) between LST start_lst and end_lst.

Parameters:
  • az – Azimuth angle in degrees (0-360 deg)

  • el – Elevation angle in degrees (0-90 deg)

  • start_lst – Start local sidereal time (LST) in hours (0-24 hrs)

  • end_lst – End local sidereal time (LST) in hours (0-24 hrs)

  • freq_fine_mhz – Frequency array, in MHz (50-350 MHz)

Returns:

an array of Stokes I SEFD values at frequencies in fine_freq_mhz.

ska_ost_senscalc.low.sefd_lookup.calculate_sefd_eff(sefd_array: array) float[source]

Calculate the effective SEFD of an observation, given an array of SEFD values

Effective overall SEFD is weighted so that the radiometer equation holds: ` dS = SEFD_eff / sqrt(bw * t) ` Where bw is bandwidth, t is total integration time, and dS is noise level.

If the mean SEFD value is used, this leads to incorrect estimates of observing times.

To calculate SEFD_eff, we apply ` SEFD_eff = sqrt(N) / sqrt( sum( 1/(SEFD^2) ) ) ` :param sefd_array: array of SEFD values. Data should have shape (time, frequency) The integration time for each entry must be the same, such that overall integration time is N = length of time axis. :return: sefd_eff a float corresponding to an effective SEFD value over the observation