Sky map - sujineie/BURSTT_ASIAA GitHub Wiki

Contents

Recent updates: https://www.notion.so/astrosujin/8e42181dd8ee4a779bc4169a45477d32?v=4742be7ceb844bf1b1e2909fc5a3912b&pvs=25#aa8ad99433e44647af1d7788efe537e5

  1. Sun imaging
      1.1 Single frequency, single baseline
      1.2 All frequency channels
        1.2.1 Single baseline
        1.2.1 All baselines

  2. Cyg A imaging
      2.1 Single frequency, single baseline
      2.2 All frequency channels
        2.2.1 Single baseline
        2.2.1 All baselines


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')

Sun on 2023 June 20

  * Observation: June 20th, 2023, from 9 am to 12 pm (3 hours)
  * Sun transit at 11:55:09
  * (RA, Dec) of the Sun ~ (88 $\degree$, 23 $\degree$)
  * Visibility recording for 4 antennas (IDs: 2, 6, 10, 14)

UV plane fringes of the Sun

Sun_step2-2_fringes_uv_data

Sun fringes in UV plane for 3 hours and 1024 frequency channels from 400 to 800 MHz)
Reference: Figure 3 of Peterson, Pen, & Wu (2004) (link)


Sun image at a single frequency channel

click to see details

Sun image for 450 MHz

skymap_Sun_450MHz_4m skymap_Sun_450MHz_12m

Sun image in (l, m) space at 450 MHz with the baseline lengths of 4m (left) and 12m (right). The image center is set to be the North Celestial Pole. The grid size in (l, m) space corresponds to ~ 8.5 arcmin.


With the UV grid of (-200, 200, 2000), the max($l$) are max($m$) are 2.5. To see more of the dirty beam structure, the plots below are presented up to the max($l$) = 2.5, max($m$) = 2.5.

skymap_Sun_450MHz_4m_wide skymap_Sun_450MHz_12m_wide

  • baseline = 4m
    skymap_Sun_450MHz_4m_all

Sun image for 610 MHz

skymap_Sun_610MHz_4m skymap_Sun_610MHz_12m Sun image in (l, m) space at 610 MHz with the baseline lengths of 4m (left) and 12m (right). The image center is set to be the North Celestial Pole.

  • baseline = 4m
    skymap_Sun_610MHz_4m_all

Back to top


Sun image for all frequency channels

Sun image for 4-m baseline

  1. $V(u, \ m)$
Sun_step2-2 _uv_data_4m

  • After simple gain calibration
Sun_step2-3 _uv_data_gcal_4m

  1. np.fft.fftshift( $V(u, \ m)$ )
Sun_step2-3 _fftshift_uv_data_4m

  • After simple gain calibration
Sun_step2-3 _fftshift_uv_data_gcal_4m

  1. $I(l, , m)$ = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift( $V(u, \ m)$ )))
  • Before gain calibration
Sun_step3-2 _lm_data_all_4m
  • zoom-in
Sun_step3-2 _lm_data_all_zoom_4m
  • After gain calibration
Sun_step3-2 _lm_data_gcal_all_4m
  • zoom-in
Sun_step3-2 _lm_data_gcal_all_zoom_4m

Back to top


Sun image for all baselines

1. UV plane fringes for all frequency channels at different baselines.

fringes_Sun_uv_6baselines_sep

UV image for each baseline. Antennas IDs are noted on the top of each panel.

Sun_step2-2_fringes_uv_data

UV image for all baselines. Same as the first figure on this page.


2. after simply adding all frequency channels

The sky images for 1024 frequency channels are added. Since low-frequency components are dominated (see also upper images), bandpass calibration is required.

skymap_Sun_allfreq_4m skymap_Sun_allfreq_12m

3. Visibilities divided by the squared root of auto-correlations

3.1. visibility vs FFT-shifted visibility
Sun_step2-3_uv_data_acal Sun_step2-3_fftshift_uv_data_acal

(left) Visibility after the gain calibration. (right) FFT-shifted visibility.

3.2. sky image

Sun_step3-2 _lm_data_acal_all

  • zoom-in

Sun_step3-2 _lm_data_acal_all_zoom




4. Simple gain correction: dividing by $\lambda^2$

4.1. visibility vs FFT-shifted visibility
Sun_step2-3_uv_data_gcal Sun_step2-3_fftshift_uv_data_gcal

(left) Visibility after the gain calibration. (right) FFT-shifted visibility.

4.2. Sky image

Sun_step3-2 _lm_data_gcal_all

  • zoom-in

Sun_step3-2 _lm_data_gcal_all_zoom


Back to top


Cyg A on 2023 June 26

  * Observation: June 26th, 2023, from 1 am to 4 pm Taiwan Time (3 hours)
  * Cyg A transit at 01:39:33
  * (RA, Dec) of the Cyg A = (300 $\degree$, 41 $\degree$)
  * Visibility recording for 4 antennas (IDs: 2, 6, 10, 14)

Note. At 400 MHz, Sun flux ~ 4.6e5 Jy, Cyg A flux ~ 3500 Jy

Cyg-A image at a single frequency channel

click to see details

Cyg A image for 450 MHz

skymap_CygA_450MHz_4m skymap_CygA_450MHz_12m

Cyg A image for 610 MHz

skymap_CygA_610MHz_4m skymap_CygA_610MHz_12m

Cyg A image for all frequency channels

Cyg-A image for 4-m baseline

1. visibility vs FFT-shifted visibility

  • After gain calibation
CygA_step2-3 _uv_data_gcal_4m CygA_step2-3 _fftshift_uv_data_gcal_4m

(left) Visibility after the gain calibration. (right) FFT-shifted visibility.

2. sky image

  • raw visibility

CygA_step3-2 _lm_data_gcal_all_4m

  • after divided by sqrt(auto-corr)

CygA_step3-2 _lm_data_acal_all_4m

** zoom-in

CygA_step3-2 _lm_data_acal_all_zoom_4m

  • after gain calibration

CygA_step3-2 _lm_data_gcal_all_zoom_4m

** zoom-in

CygA_step3-2 _lm_data_gcal_all_zoom_4m

Cyg-A-image-for-all-baselines

1. UV plane fringes of the Cyg A

CygA_step2-2 _fringes_uv_data

UV image for all baselines taken on 2023 June 26th from 1 am to 4 am Taiwan Time.


2. Raw visibility

2.1. visibility vs FFT-shifted visibility
CygA_step2-3 _uv_data CygA_step2-3 _fftshift_uv_data

(left) Visibility after the gain calibration. (right) FFT-shifted visibility.

2.2. Sky map

CygA_step3-2 _lm_data_all

3. Visibilities divided by the squared root of auto-correlations

3.1. visibility vs FFT-shifted visibility
CygA_step2-3 _uv_data_acal CygA_step2-3 _fftshift_uv_data_acal

(left) Visibility after the gain calibration. (right) FFT-shifted visibility.


3.2. sky image

CygA_step3-2 _lm_data_acal_all

  • zoom-in

CygA_step3-2 _lm_data_acal_all_zoom


4. Simple gain correction: dividing by $\lambda^2$

4.1. visibility vs FFT-shifted visibility
CygA_step2-3 _uv_data_gcal CygA_step2-3 _fftshift_uv_data_gcal

Sky image of the Cyg A. (left) scaled to the data, (right) scaled as the Sun image


4.2. sky image

CygA_step3-2 _lm_data_gcal_all

  • zoom-in CygA_step3-2 _lm_data_gcal_all_zoom

Back to top

⚠️ **GitHub.com Fallback** ⚠️