py21cmsense.observatory.Observatory

class py21cmsense.observatory.Observatory(*, antpos: tp.Length, beam: beam.PrimaryBeam, latitude: un.rad = <Quantity 0. rad>, Trcv: tp.Temperature | Callable = <Quantity 100. K>, max_antpos: tp.Length = <Quantity inf m>, min_antpos: tp.Length = <Quantity 0. m>)[source]

A class defining an interferometric Observatory and its properties.

Parameters:
  • antpos (array) – An array with shape (Nants, 3) specifying the positions of the antennas. These should be in the ENU (East-North-Up) frame, relative to a central location given by latitude. If not a Quantity, units are assumed to be meters.

  • beam (PrimaryBeam instance) – A beam, assumed to be homogeneous across antennas.

  • latitude (float or Quantity, optional) – Latitude of the array center. If a float, assumed to be in radians. Note that longitude is not required, as we assume an isotropic sky.

  • Trcv (tp.Temperature | Callable) – Receiver temperature, either a temperature Quantity, or a callable that taakes a single frequency Quantity and returns a temperature Quantity.

  • min_antpos, max_antpos – The minimum/maximum radial distance to include antennas (from the origin of the array). Assumed to be in units of meters if no units are supplied. Can be used to limit antennas in arrays like HERA and SKA that have a “core” and “outriggers”. The minimum is inclusive, and maximum exclusive.

Methods

__init__(*, antpos, beam[, latitude, Trcv, ...])

Method generated by attrs for class Observatory.

baseline_coords_from_groups(baseline_groups)

Convert a dictionary of baseline groups to an array of ENU co-ordinates.

baseline_weights_from_groups(baseline_groups)

Get number of baselines in each group.

clone(**kwargs)

Return a clone of this instance, but change kwargs.

from_profile(profile[, frequency])

Instantiate the Observatory from a builtin profile.

from_uvdata(uvdata, beam, **kwargs)

Instantiate an Observatory from a pyuvdata.UVData object.

from_yaml(yaml_file[, frequency])

Instantiate an Observatory from a compatible YAML config file.

get_redundant_baselines([baseline_filters, ...])

Determine all baseline groups.

grid_baselines(coherent[, baselines, ...])

Grid baselines onto a pre-determined uvgrid, accounting for earth rotation.

longest_used_baseline([bl_max])

Determine the maximum baseline length kept in the array, in wavelengths.

projected_baselines([baselines, time_offset])

The projected baseline lengths (in wavelengths).

time_offsets_from_obs_int_time(integration_time)

Compute a list of time offsets within an LST-bin.

ugrid([bl_max])

Centres of the UV grid plane.

ugrid_edges([bl_max])

Get a uv grid out to the maximum used baseline smaller than given bl_max.

Attributes

antpos

The positions of antennas in the array in units of metres.

baseline_lengths

Lengths of baselines in units of wavelengths, shape (Nant, Nant).

baselines_metres

Raw baseline distances in metres for every pair of antennas.

frequency

Central frequency of the observation.

longest_baseline

Longest baseline in units of wavelengths.

metres_to_wavelengths

Conversion factor for metres to wavelengths at fiducial frequency.

n_antennas

Number of antennas in the array.

observation_duration

The time it takes for the sky to drift through the FWHM.

shortest_baseline

Shortest baseline in units of wavelengths.

beam

latitude

Trcv

max_antpos

min_antpos