Analysis

# Load visibility data
vis_data.shape = (n_times, n_channels, n_baselines)

u_grid = np.linspace(-35, 35, 701)
v_grid = np.linspace(-35, 35, 701)
uv_data = np.zeros((len(u_grid), len(v_grid), nBl), dtype=np.complex128)

for bl_index in range(nBl):
    for t in range(nWin):
        # Calculate baseline vector
        B = calculate_baseline_vector(t*1.024, bl_meters[bl_index])
        
        # auto-correlation of two antennas
        auto_a = vars()[ant_comb[bl_index][0]]
        auto_b = vars()[ant_comb[bl_index][1]]
        
        for freq_index in range(nChan):
            # Calculate U, V
            frequency = freqs[freq_index] * 1e6
            u = B[0] / (c / frequency)
            v = B[1] / (c / frequency)

            # Find the closest indices in the UV grid
            u_index = np.argmin(np.abs(u_grid - u))
            v_index = np.argmin(np.abs(v_grid - v))

            # Bin visibility data onto UV grid for each frequency
            uv_data[u_index, v_index, bl_index] += (vis_data[t, freq_index, bl_index] / np.sqrt(auto_a[t, freq_index]**2 + auto_b[t,freq_index]**2) / (c/frequency)**2)

            # Find the closest indices in the UV grid for (-u, -v)
            u_index_neg = np.argmin(np.abs(u_grid + u))
            v_index_neg = np.argmin(np.abs(v_grid + v))

            # Bin visibility data onto UV grid at (-u, -v) and take complex conjugate
            uv_data[u_index_neg, v_index_neg, bl_index] += (np.conj(vis_data[t, freq_index, bl_index]) / np.sqrt(auto_a[t, freq_index]**2 + auto_b[t,freq_index]**2) / (c/frequency)**2)

# Fourier Transform to obtain image in (l, m) space
tmp = np.sum(uv_data, axis=2) # V(u, v) for all baselines
lm_data = np.fft.fftshift(np.fft.ifft2(np.fft.ifftshift(tmp)))

u_min = (u_grid[1]-u_grid[0]).round(3) # 0.2
l_max = 1/(2*u_min) # 2.5
l_grid = np.linspace(-l_max, l_max, len(u_grid))
m_grid = l_grid.copy()

plt.pcolormesh(l_grid, m_grid, lm_data.T, shading='nearest')

24-hr Visibility

Observation information

Sky chart

skychart_2023-12-07.png

Fringes in frequency vs. time

Visibility phase in frequency (MHz) and local time domain. Note that antenna 16 indicates antenna 15 — the longest baseline is 15 meters.

Visibility phase in frequency (MHz) and local time domain. Note that antenna 16 indicates antenna 15 — the longest baseline is 15 meters.

Expected sky map

Location of bright radio sources in (RA, cos(Dec)) space. On December 8th, Sun’s (RA, Dec) = (16h56m48.68s, -22d38’29.88”). The local sidereal time at noon is 17h 12m 58.344s.

Location of bright radio sources in (RA, cos(Dec)) space. On December 8th, Sun’s (RA, Dec) = (16h56m48.68s, -22d38’29.88”). The local sidereal time at noon is 17h 12m 58.344s.

Cyg A 3C405 11:00 - 19:00 (15:00) 3500 Jy
Cas A 3C461 15:00 - 22:00 (18:20) ~4000 Jy
Tau A 3C144 21:00 - 04:00 (00:30) ~1000 Jy
Vir A 3C274 04:00 - 11:00 (07:20) ~600 Jy
Moon 50-150 Jy
3C48 16:30 - 00:30 35 Jy
3C147 20:00 - 05:00 45 Jy

Back to top

Daytime sky map (9 am - 3 pm)

Visibility in UV space. Real, imaginary, and absolute value from left to right.

Visibility in UV space. Real, imaginary, and absolute value from left to right.