hera_sim.sigchain.OverAirCrossCoupling

class hera_sim.sigchain.OverAirCrossCoupling(emitter_pos: ndarray | Sequence | None = None, cable_delays: dict[int, float] | None = None, base_amp: float = 2e-05, amp_norm: float = 100, amp_slope: float = -1, amp_decay_base: float = 10, n_copies: int = 10, amp_jitter: float = 0, dly_jitter: float = 0, max_delay: float = 2000, amp_decay_fac: float = 0.01, rng: Generator | None = None)[source]

Crosstalk model based on the mechanism described in HERA Memo 104.

This model describes first-order coupling between a visibility \(V_{ij}\) and the autocorrelations for each antenna involved. Physically, it is modeled as the signal from one antenna traveling to the receiverator, then being broadcast to the other antenna. Under this model, the cross-coupling component \(V_{ij}^{\rm cc}\) can be described via

\[V_{ij}^{\rm cc} = \epsilon_{ij}^* V_{ii} + \epsilon_{ji} V_{jj},\]

where the reflection coefficient \(\epsilon_{ij}\) is modeled as

\[\epsilon_{ij} = A_i \exp \bigl[2\pi i\nu(\tau_{i,{\rm cable}} + \tau_{X \rightarrow j} ) \bigr].\]

Here, \(X\) denotes the position of the receiverator (or rather, where the excess signal is radiated from), and the indices \(i,j\) refer to antennas. So, \(\tau_{i,{\rm cable}}\) is the delay from the signal traveling down the cable from antenna \(i\) to the receiverator, and \(\tau_{X \rightarrow j}\) denotes the delay from the signal traveling over-the-air from the receiverator to antenna \(j\). As usual, \(A_i\) is the amplitude of the reflection coefficient. Here, the amplitude is described by three free parameters, \(a, \vec{r}_X, \beta\):

\[A_i = a |\vec{r}_i - \vec{r}_X|^\beta.\]

\(a\) is a base amplitude, \(\vec{r}_X\) is the receiverator position, and \(\beta\) describes how quickly the amplitude falls off with distance from the receiverator, and is typically taken to be negative. For more details, refer to HERA Memo 104 for more details:

http://reionization.org/manual_uploads/HERA104_Crosstalk_Physical_Model.html

Parameters:
  • emitter_pos – Receiverator position, in meters, in local ENU coordinates.

  • cable_delays – Mapping from antenna numbers to cable delays, in nanoseconds.

  • base_amp – Base amplitude of reflection coefficient. If amp_slope is set to 0, then this is the amplitude of all of the reflection coefficients.

  • amp_norm – Distance from the receiverator, in meteres, at which the cross-coupling amplitude is equal to base_amp.

  • amp_slope – Power-law index describing how rapidly the reflection coefficient decays with distance from the receiverator.

  • amp_decay_base – Logarithmic base to use when generating the additional peaks in the cross-coupling spectrum.

  • n_copies – Number of peaks in the cross-coupling spectrum at positive and negative delays, separately.

  • amp_jitter – Fractional jitter to apply to the amplitudes of the peaks in the cross-coupling spectrum.

  • dly_jitter – Absolute jitter to apply to the delays of the peaks in the cross-coupling spectrum, in nanoseconds.

  • max_delay – Magnitude of the maximum delay to which the cross-coupling spectrum extends, in nanoseconds.

  • amp_decay_fac – Ratio of the amplitude of the last peak in the cross-coupling spectrum to the first peak. In other words, how much the cross-coupling spectrum decays over the full range of delays it covers.

  • rng – Random number generator.

Methods

__call__(freqs, antpair, antpos, autovis_i, ...)

Generate a cross-coupling spectrum modeled via HERA Memo 104.

get_aliases()

Get all the aliases by which this model can be identified.

get_model(mdl)

Get a model with a particular name (including aliases).

get_models([with_aliases])

Get a dictionary of models associated with this component.

Attributes

attrs_to_pull

Mapping between parameter names and Simulator attributes

is_multiplicative

Whether this systematic multiplies existing visibilities

is_randomized

Whether this systematic contains a randomized component

return_type

Whether the returned value is per-antenna, per-baseline, or the full array