def create_img(metadata): """ Constructs a single image """ metadata.sort(key=lambda x: x[1]) data = [] for i in range(len(subbands)): sb = [] for v in metadata[i * config.inttime * 2:(i + 1) * config.inttime * 2]: f = open(v[3], 'r') f.seek(v[4]) dat = parse_data(f.read(LEN_BDY)) dat[(dat < -1) | (dat > 1)] = 0 # To filter out outlier visibilities sb.append(dat) data.append(np.array(sb).mean(axis=0)) return np.rot90( np.real( gfft.gfft(np.ravel(data), in_ax, out_ax, enforce_hermitian_symmetry=True, verbose=False, W=config.window, alpha=config.alpha)), 1) * mask
dx = 1.0 / res out_ax = [(dx, res), (dx, res)] L = np.linspace(-1, 1, res) M = np.linspace(-1, 1, res) mask = np.ones((res, res)) xv, yv = np.meshgrid(L, M) image = data.copy() im = image.mean(axis=(-1, -2)) im = np.rot90( np.real( gfft.gfft(np.ravel(im), [u, v], out_ax, enforce_hermitian_symmetry=True, verbose=True, W=6, alpha=1.5)), 1) * mask plt.imsave('image.png', im, vmin=np.nanmean(im) - 3 * np.nanstd(im), vmax=np.nanmean(im) + 3 * np.nanstd(im), origin='lower') plt.figure(figsize=(16, 16), facecolor='white') plt.imshow(im, vmin=np.nanmean(im) - 3 * np.nanstd(im), vmax=np.nanmean(im) + 3 * np.nanstd(im), origin='lower') plt.title('SB320-202012281240-lba_outer.vis direct imaging')