diff --git a/CAL/CalibrationProcessing/lib/processing/inspect.py b/CAL/CalibrationProcessing/lib/processing/inspect.py index ce55e37afa42c4702d58843e445aa2c277822c55..d99cae00108aa89c9bd875e964c88108c294e6a1 100644 --- a/CAL/CalibrationProcessing/lib/processing/inspect.py +++ b/CAL/CalibrationProcessing/lib/processing/inspect.py @@ -7,9 +7,10 @@ from matplotlib import cm from matplotlib.figure import Figure from numpy import mgrid from scipy.constants import c as light_speed -from scipy.fftpack import fft2, fftshift +from numpy.fft import fft2, fftshift from scipy.interpolate import griddata + __LIST_OR_NPARRAY = typing.Union[typing.List[float], numpy.ndarray] __DATATABLE_TYPE = typing.Dict[ str, typing.Dict[str, typing.Dict[str, typing.Dict[str, numpy.ndarray]]]] @@ -36,7 +37,7 @@ def complex_value_to_color(complex_array: numpy.ndarray, abs_max=None, abs_min=N norm_abs_array = (abs_array - abs_min) / normalization phase_array = (numpy.angle(linearized_complex_array) + numpy.pi) / 2 / numpy.pi - color_map = cm.get_cmap('autumn') + color_map = cm.get_cmap('hsv') colors = color_map(phase_array) colors[:, 0] *= norm_abs_array @@ -66,11 +67,12 @@ def _grid_visibilities_lm_plane(l, m, v, sampling): points = numpy.stack((l, m), axis=1) grid_x, grid_y = mgrid[-1: 1: sampling * 1.j, -1: 1: sampling * 1.j] - from scipy.ndimage.filters import gaussian_filter - vis = griddata(points, v, (grid_x, grid_y), fill_value=0., method='cubic') - sigma = [2, 2] - vis.real = gaussian_filter(vis.real, sigma) - vis.imag = gaussian_filter(vis.imag, sigma) + #from scipy.ndimage.filters import gaussian_filter + vis = griddata(points, v, (grid_x, grid_y), fill_value=0., method='linear') + #sigma = [2, 2] + #vis.real = gaussian_filter(vis.real, sigma) + #vis.imag = gaussian_filter(vis.imag, sigma) + return vis @@ -82,7 +84,7 @@ def _fft_visibilities_lm_plane(l, m, v, sampling): def _plot_station_averaged_visibilities_lm_plane_single_frequency(figure: Figure, l_m_v, - sampling=250): + sampling=512): l, m, v, flagged = list(zip(*l_m_v)) for index, polarization in enumerate(('XX', 'XY', 'YX', 'YY')): @@ -95,7 +97,7 @@ def _plot_station_averaged_visibilities_lm_plane_single_frequency(figure: Figure canvas.set_ylim(-1, 1) vis = _grid_visibilities_lm_plane(l, m, v_pol, sampling) - color_mapped_vis = complex_value_to_color(vis, log=False) + color_mapped_vis = complex_value_to_color(vis, log=True) canvas.imshow(color_mapped_vis, extent=[-1, 1, -1, 1], origin='lower', resample=True) @@ -110,13 +112,13 @@ def _plot_station_averaged_visibilities_station_plane_single_frequency(figure: F fft_vis = _fft_visibilities_lm_plane(l, m, v_pol, sampling) canvas = figure.add_subplot(2, 2, index + 1) - canvas.set_xlim(-60, 60) - canvas.set_ylim(-60, 60) + canvas.set_xlim(-30, 30) + canvas.set_ylim(-30, 30) canvas.set_xlabel('x [m]') canvas.set_ylabel('y [m]') - antenna_array_length = light_speed / frequency * sampling + antenna_array_length = light_speed / frequency * sampling / 2. / 2. color_mapped_fft = complex_value_to_color(fft_vis, log=False) canvas.imshow(color_mapped_fft[:, ::-1], origin='lower', extent=[-1 * antenna_array_length, @@ -127,11 +129,15 @@ def _plot_station_averaged_visibilities_station_plane_single_frequency(figure: F canvas.set_title(polarization) -def _plot_station_averaged_visibilities_lm_plane_datatable(data_table: __DATATABLE_TYPE): +def _plot_station_averaged_visibilities_lm_plane_datatable(data_table: __DATATABLE_TYPE, + central_beamlets): for station, data_per_station in data_table.items(): for frequency_str, data_per_frequency in data_per_station.items(): - l_m_v = [(data_per_beam['mean']['l'][0], - data_per_beam['mean']['m'][0], + + central_beam = data_per_frequency[central_beamlets[frequency_str]]['mean'] + + l_m_v = [(data_per_beam['mean']['l'][0] - central_beam['l'][0], + data_per_beam['mean']['m'][0] - central_beam['m'][0], dict(XX=data_per_beam['mean']['XX'][0], XY=data_per_beam['mean']['XY'][0], YX=data_per_beam['mean']['YX'][0], YY=data_per_beam['mean']['YY'][0]), data_per_beam['mean']['flag'][0]) @@ -171,6 +177,7 @@ def _plot_gains_as_frequency(data_table: __DATATABLE_TYPE, target_station): canvas = figure.add_subplot(2, 2, polarization_index + 1) canvas.set_title(polarization) + canvas.set_ylim(-numpy.pi, numpy.pi) canvas.plot(frequencies / __MHZ_IN_HZ, numpy.angle(gains_per_antenna), '+-') plt.tight_layout() @@ -187,7 +194,8 @@ def plot_station_averaged_visibilities_lm_plane(dset: HolographyDataset, derived_datatable_name='STATION_AVERAGED'): __apply_to_datatable(dset, derived_datatable_name, - _plot_station_averaged_visibilities_lm_plane_datatable) + _plot_station_averaged_visibilities_lm_plane_datatable, + dset.central_beamlets) def plot_gains_per_antenna(dset: HolographyDataset, derived_datatable_name='GAINS'):