From ec95f2abfec7bd181f96260d5f35cbb761bf04b9 Mon Sep 17 00:00:00 2001 From: Mattia Mancini <mancini@astron.nl> Date: Wed, 19 Jun 2019 14:21:57 +0000 Subject: [PATCH] SSB-47: fixing space domain for antenna positions --- .../lib/processing/inspect.py | 38 ++++++++++++++++--- .../lib/processing/interpolate.py | 14 +------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/CAL/CalibrationProcessing/lib/processing/inspect.py b/CAL/CalibrationProcessing/lib/processing/inspect.py index dfff4e8db52..4c93361369a 100644 --- a/CAL/CalibrationProcessing/lib/processing/inspect.py +++ b/CAL/CalibrationProcessing/lib/processing/inspect.py @@ -13,6 +13,13 @@ import numba from numba import jit import numpy +from matplotlib.ticker import AutoMinorLocator + + +def __set_minor_ticks_for_canvas(canvas): + canvas.xaxis.set_minor_locator(AutoMinorLocator()) + canvas.yaxis.set_minor_locator(AutoMinorLocator()) + __LIST_OR_NPARRAY = typing.Union[typing.List[float], numpy.ndarray] __DATATABLE_TYPE = typing.Dict[ @@ -212,7 +219,7 @@ def _plot_gains_as_frequency(data_table: __DATATABLE_TYPE, target_station): for polarization_index, polarization in enumerate(['XX', 'XY', 'YX', 'YY']): extracted_data = [ - (float(frequency_str), data_per_frequency[polarization]['gains'][:, 0]) + (float(frequency_str), data_per_frequency[polarization]['gains']) for frequency_str, data_per_frequency in data_per_station.items()] frequencies, gains = list(zip(*extracted_data)) @@ -261,8 +268,9 @@ def plot_gains_fit_per_antenna(dset: HolographyDataset, interpolation_parameters for station, data_per_station in gains.items(): for polarization_index, polarization in enumerate(['XX', 'YY']): + extracted_data = [ - (float(frequency_str), data_per_frequency[polarization]['gains'][:, 0]) + (float(frequency_str), data_per_frequency[polarization]['gains']) for frequency_str, data_per_frequency in data_per_station.items()] frequencies, gains = list(zip(*extracted_data)) @@ -270,10 +278,30 @@ def plot_gains_fit_per_antenna(dset: HolographyDataset, interpolation_parameters gains = numpy.stack(gains, axis=1) for antenna, antenna_data in enumerate(gains): + amplitude_par = interpolation_parameters[station][polarization][str(antenna)]['amplitude']['parameters'] + phase_par = \ + interpolation_parameters[station][polarization][str(antenna)]['phase'][ + 'parameters'] - plt.figure('station %s antenna %s polarization %s' % - (station, antenna, polarization)) + figure = plt.figure('station %s antenna %s' % + (station, antenna)) - plt.plot(frequencies, antenna_data) + canvas = figure.add_subplot(2, 2, polarization_index + 1) + __set_minor_ticks_for_canvas(canvas) + canvas.set_title(polarization) + canvas.set_xlabel('frequency (MHz)') + canvas.set_ylabel('Amplitude') + canvas.plot(frequencies/__MHZ_IN_HZ, numpy.abs(antenna_data), '+') + canvas.plot(frequencies/__MHZ_IN_HZ, amplitude_par['m'] * frequencies + amplitude_par['q']) + + canvas = figure.add_subplot(2, 2, polarization_index + 3) + __set_minor_ticks_for_canvas(canvas) + + canvas.set_title(polarization) + canvas.set_xlabel('frequency (MHz)') + canvas.set_ylabel('Phase') + canvas.plot(frequencies/__MHZ_IN_HZ, numpy.angle(antenna_data), '+') + canvas.plot(frequencies/__MHZ_IN_HZ, phase_par['m'] * frequencies + phase_par['q']) + plt.tight_layout() plt.show() diff --git a/CAL/CalibrationProcessing/lib/processing/interpolate.py b/CAL/CalibrationProcessing/lib/processing/interpolate.py index 61ae39584cc..ffcd7fccb14 100644 --- a/CAL/CalibrationProcessing/lib/processing/interpolate.py +++ b/CAL/CalibrationProcessing/lib/processing/interpolate.py @@ -83,18 +83,6 @@ def _first_guess(x, y, function): return numpy.array((m, q, sigma)) -def _ln_likelihood_phase(parameters, x, y): - m, q, sigma = parameters - y_model = m * x + q - - y_model_wrapped = wrap_linear(y_model) - inv_variance = sigma ** -2. - residual = numpy.square(y - y_model_wrapped) * inv_variance - - ln_likelihood = -.5 * numpy.sum(residual) - return ln_likelihood - - def __ln_prior(parameters): m, b, sigma = parameters if sigma >= 0: @@ -150,7 +138,7 @@ def _interpolate_gains(x, y): phase = numpy.angle(y).flatten() amplitude_parameters, amp_mc_samples = _interpolate_mc_mc(x, amplitude, linear, _ln_likelihood_abs) - phase_parameters, phase_mc_samples = _interpolate_mc_mc(x, phase, linear, _ln_likelihood_phase) + phase_parameters, phase_mc_samples = _interpolate_mc_mc(x, phase, linear, _ln_likelihood_abs) result = dict(amplitude=dict(parameters=amplitude_parameters, mc_samples=amp_mc_samples), phase=dict(parameters=phase_parameters, mc_samples=phase_mc_samples)) -- GitLab