From 5d95044845bbd2255a4c8501c15282f3c34d5057 Mon Sep 17 00:00:00 2001 From: stedif <stefano.difrischia@inaf.it> Date: Mon, 31 Jan 2022 17:09:43 +0100 Subject: [PATCH] L2SS-578: correct delay calculations --- tangostationcontrol/tangostationcontrol/devices/beam.py | 6 +++--- .../integration_test/devices/test_device_beam.py | 5 +---- .../tangostationcontrol/test/devices/test_beam_device.py | 8 -------- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/tangostationcontrol/tangostationcontrol/devices/beam.py b/tangostationcontrol/tangostationcontrol/devices/beam.py index 2c70cec0a..cd08d50e5 100644 --- a/tangostationcontrol/tangostationcontrol/devices/beam.py +++ b/tangostationcontrol/tangostationcontrol/devices/beam.py @@ -115,16 +115,16 @@ class Beam(lofar_device): polarised_delays = numpy.tile(delays, 2) # output dims -> 96x32 # Add signal input delay - summed_delays = numpy.add(polarised_delays,HBAT_signal_input_delays) + calibrated_delays = numpy.add(polarised_delays, HBAT_signal_input_delays) # Find the right delay step by looking for the closest match in property RECV-> HBAT_bf_delay_step_delays HBAT_bf_delays = numpy.zeros((96,32), dtype=numpy.int64) distance = lambda x , y : numpy.absolute(x-y) for tile in range(96): for at in range(32): - delay = summed_delays[tile,at] + delay = calibrated_delays[tile,at] step = min(HBAT_bf_delay_step_delays,key=partial(distance,delay)) - HBAT_bf_delays[tile,at] = numpy.int64(delay / step) + HBAT_bf_delays[tile,at] = numpy.where(HBAT_bf_delay_step_delays==step)[0][0] return HBAT_bf_delays def _HBAT_set_pointing(self, pointing_direction: numpy.array, timestamp: datetime.datetime = datetime.datetime.now()): diff --git a/tangostationcontrol/tangostationcontrol/integration_test/devices/test_device_beam.py b/tangostationcontrol/tangostationcontrol/integration_test/devices/test_device_beam.py index edae4375c..504b6065e 100644 --- a/tangostationcontrol/tangostationcontrol/integration_test/devices/test_device_beam.py +++ b/tangostationcontrol/tangostationcontrol/integration_test/devices/test_device_beam.py @@ -44,11 +44,8 @@ class TestDeviceBeam(AbstractTestBases.TestDeviceBase): # verify if values are actually transformed HBAT_delays_flat = self.proxy.HBAT_delays(numpy.array([["J2000","0deg","0deg"]] * 96).flatten()) HBAT_delays = numpy.array(HBAT_delays_flat).reshape(96,16) - HBAT_signal_input_delays = numpy.zeros((96,32), dtype=numpy.float64) + HBAT_signal_input_delays = numpy.zeros((96,32), dtype=numpy.float64) # Property of Beam-device HBAT_bf_delay_step_delays = recv_proxy.HBAT_bf_delay_step_delays HBAT_bf_delays = self.proxy._calculate_HBAT_bf_delays(HBAT_delays, HBAT_signal_input_delays, HBAT_bf_delay_step_delays) self.assertNotEqual(HBAT_delays, HBAT_bf_delays) - - # Verify delays changed (to be discussed) - #self.assertFalse((HBAT_delays_r1==HBAT_delays_r2).all()) diff --git a/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py b/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py index 71d6745c9..795f9317f 100644 --- a/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py +++ b/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py @@ -71,11 +71,3 @@ class TestBeamDevice(base.TestCase): # verify property is retrieved (workaround) HBAT_signal_input_delays = beam.Beam.HBAT_signal_input_delays.default_value self.assertTrue((HBAT_signal_input_delays==numpy.zeros((96,32), dtype=numpy.float64)).all()) - - # verify if values are actually transformed - HBAT_delays_flat = proxy.HBAT_delays(numpy.array([["J2000","0deg","0deg"]] * 96).flatten()) - HBAT_delays = numpy.array(HBAT_delays_flat).reshape(96,16) - - HBAT_bf_delays = beam.Beam._calculate_HBAT_bf_delays(HBAT_delays, HBAT_signal_input_delays) - self.assertNotEqual(HBAT_delays, HBAT_bf_delays) - self.assertTrue(HBAT_bf_delays[0][0]==numpy.int64((HBAT_delays[0][0]+HBAT_signal_input_delays[0][0])/0.5e-09)) -- GitLab