From 8fdd7d83e58f432d1f75d2b5ce0f5db4247e82c4 Mon Sep 17 00:00:00 2001
From: thijs snijder <snijder@astron.nl>
Date: Thu, 27 Jan 2022 15:32:18 +0100
Subject: [PATCH] sarted work on new tests

---
 .../tangostationcontrol/beam/old_test.py      |  51 ++++++
 .../tangostationcontrol/beam/test_delays.py   | 157 +++++++++++-------
 2 files changed, 148 insertions(+), 60 deletions(-)

diff --git a/tangostationcontrol/tangostationcontrol/beam/old_test.py b/tangostationcontrol/tangostationcontrol/beam/old_test.py
index bbeb7d49f..3de4e65e4 100644
--- a/tangostationcontrol/tangostationcontrol/beam/old_test.py
+++ b/tangostationcontrol/tangostationcontrol/beam/old_test.py
@@ -79,3 +79,54 @@ if __name__ == '__main__':
 
         # print the delays
         print(f"Direction: {direction}:  {delays}, diff: {diff}")
+
+    # # create a frame tied to the reference position
+    reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+    d = delay_calculator(reference_itrf)
+
+    # set the antenna position identical to the reference position
+    speed_of_light = 299792458.0
+    antenna_itrf = [[reference_itrf[0], reference_itrf[1], reference_itrf[2]]]  # CS001LBA, in ITRF2005 epoch 2012.5
+
+    for i in range(24):
+        # # set the timestamp to solve for
+        timestamp = datetime.datetime(2022, 1, 27, i, 28, 0)  # sunrise this particular day
+        d.set_measure_time(timestamp)
+
+        # compute the delays for an antennas w.r.t. the reference position
+
+        # # obtain the direction vector for a specific pointing
+        direction = "SUN", "0deg", "0deg"
+
+        # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
+        pointing = d.measure.direction(*direction)
+        dir = d.get_direction_vector(pointing)
+
+        if i == 9:
+            print("sunrise")
+        print(f"time: {i:2}:28,\tdirection: {dir}" )
+
+        self.assertTrue()
+
+    """"
+    ############################################################
+    """
+
+    # # # create a frame tied to the reference position
+    # reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+    # d = delay_calculator(reference_itrf)
+    #
+    # # # set the timestamp to solve for
+    # timestamp = datetime.datetime(2021, 1, 1, 0, 0, 5)
+    # d.set_measure_time(timestamp)
+    #
+    # # compute the delays for an antennas w.r.t. the reference position
+    # antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
+    #
+    # # # obtain the direction vector for a specific pointing
+    # direction = "AZEL", "0deg", "0deg"
+    #
+    # # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
+    # delays = d.convert(direction, antenna_itrf)
+    #
+    # print(delays)
\ No newline at end of file
diff --git a/tangostationcontrol/tangostationcontrol/beam/test_delays.py b/tangostationcontrol/tangostationcontrol/beam/test_delays.py
index d5fa20f06..7680fdf95 100644
--- a/tangostationcontrol/tangostationcontrol/beam/test_delays.py
+++ b/tangostationcontrol/tangostationcontrol/beam/test_delays.py
@@ -1,4 +1,5 @@
 from delays import *
+from math import sqrt, pow
 
 from tangostationcontrol.test import base
 
@@ -12,116 +13,152 @@ import mock
 class TestAttributeTypes(base.TestCase):
     def setUp(self):
         # # create a frame tied to the reference position
-        reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
-        d = delay_calculator(reference_itrf)
+        self.reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+        self.d = delay_calculator(self.reference_itrf)
 
         # # set the timestamp to solve for
-        timestamp = datetime.datetime(2021, 1, 1, 0, 0, 5)
-        d.set_measure_time(timestamp)
+        self.timestamp = datetime.datetime(2021, 1, 1, 0, 0, 5)
+        self.d.set_measure_time(self.timestamp)
 
         # compute the delays for an antennas w.r.t. the reference position
-        antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
+        self.antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5 (XYZ from centre of the earth in metres)
 
         # # obtain the direction vector for a specific pointing
-        direction = "J2000", "0deg", "0deg"
+        self.direction = "J2000", "0deg", "0deg"  # sky at 1 jan 00:00 2000, right ascension, declination
 
 
     def test_time_change(self):
         # # set the timestamp to solve for
-        timestamp = datetime.datetime(2021, 1, 1, 0, i, 5)
-        d.set_measure_time(timestamp)
+        for i in range(10):
+            self.timestamp = datetime.datetime(2021, 1, 1, 0, i, 5)
+            self.d.set_measure_time(self.timestamp)
 
-        delays = d.convert(direction, antenna_itrf)
+            delays = self.d.convert(self.direction, self.antenna_itrf)
 
-        # print the delays
-        print(f"Timestamp: {timestamp}:   {delays}")
+            # print the delays
+            print(f"Timestamp: {self.timestamp}:   {delays}")
 
     def test_direction_change(self):
         # test changing the direction
 
-        antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
-        print(f"Changing direction test.\nBase parametres: Time: {timestamp} , position: {antenna_itrf}")
+        self.antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
+        print(f"Changing direction test.\nBase parametres: Time: {self.timestamp} , position: {self.antenna_itrf}")
 
         for i in range(10):
-            direction = "J2000", f"{i}deg", "0deg"
+            self.direction = "J2000", f"{i}deg", "0deg"
 
-            delays = d.convert(direction, antenna_itrf)
+            delays = self.d.convert(self.direction, self.antenna_itrf)
 
             # print the delays
-            print(f"Direction: {direction}:  {delays}")
+            print(f"Direction: {self.direction}:  {delays}")
 
     def test_position_change(self):
         # test changing the antenna position
-        print(f"Changing Antenna position test.\nBase parametres: Time: {timestamp} Direction: {direction}")
+        print(f"Changing Antenna position test.\nBase parametres: Time: {self.timestamp} Direction: {self.direction}")
         for i in range(10):
-            antenna_itrf = [[3826577.066 + i, 461022.948, 5064892.786]]  # CS002LBA, in ITRF2005 epoch 2012.5
+            self.antenna_itrf = [[3826577.066 + i, 461022.948, 5064892.786]]  # CS002LBA, in ITRF2005 epoch 2012.5
 
-            delays = d.convert(direction, antenna_itrf)
+            delays = self.d.convert(self.direction, self.antenna_itrf)
 
             # print the delays
-            print(f"Antenna position: {antenna_itrf}:   {delays}")
+            print(f"Antenna position: {self.antenna_itrf}:   {delays}")
 
 
-if __name__ == '__main__':
-    # # create a frame tied to the reference position
-    reference_itrf = [3826577.066, 461022.948, 5064892.786] # CS002LBA, in ITRF2005 epoch 2012.5
-    d = delay_calculator(reference_itrf)
+    def test_set_measure_time(self):
+        """"
+        create a measure object, set a time and check that it is what we set it to.
+        """
 
-    # # set the timestamp to solve for
-    timestamp = datetime.datetime(2021,1,1,0,0,5)
-    d.set_measure_time(timestamp)
+    def test_azul(self):
+        # # create a frame tied to the reference position
+        reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+        d = delay_calculator(reference_itrf)
 
-    # compute the delays for an antennas w.r.t. the reference position
-    antenna_itrf = [[3826923.546, 460915.441, 5064643.489]] # CS001LBA, in ITRF2005 epoch 2012.5
+        # # set the timestamp to solve for
+        timestamp = datetime.datetime(2021, 1, 1, 0, 0, 5)
+        d.set_measure_time(timestamp)
 
-    # # obtain the direction vector for a specific pointing
-    direction = "J2000","0deg","0deg"
+        # compute the delays for an antennas w.r.t. the reference position
+        antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
 
-    # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
-    delays = d.convert(direction, antenna_itrf)
+        # # obtain the direction vector for a specific pointing
+        direction = "AZUL", "0deg", "0deg"
 
-    # print the delays
-    # pprint.pprint(delays)
+        # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
+        delays = d.convert(direction, antenna_itrf)
 
+    def test_init(self):
+        pass
 
-    #test changing the time
+    def test_sun(self):
+        # # create a frame tied to the reference position
+        reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+        d = delay_calculator(reference_itrf)
 
-    print(f"Changing timestamp test\nBase parametres: Direction: {direction}, position: {antenna_itrf}")
-    for i in range(10):
-        # # set the timestamp to solve for
-        timestamp = datetime.datetime(2021,1,1,0,i,5)
-        d.set_measure_time(timestamp)
+        # set the antenna position identical to the reference position
+        speed_of_light = 299792458.0
+        antenna_itrf = [[reference_itrf[0], reference_itrf[1], reference_itrf[2]]]  # CS001LBA, in ITRF2005 epoch 2012.5
 
-        delays = d.convert(direction, antenna_itrf)
+        for i in range(24):
+            # # set the timestamp to solve for
+            timestamp = datetime.datetime(2022, 1, 27, i, 28, 0)  # 9:28 sunrise this particular day
+            d.set_measure_time(timestamp)
 
-        # print the delays
-        print(f"Timestamp: {timestamp}:   {delays}")
+            # compute the delays for an antennas w.r.t. the reference position
 
+            # # obtain the direction vector for a specific pointing
+            direction = "SUN", "0deg", "0deg"
 
-    # reset time
-    timestamp = datetime.datetime(2021, 1, 1, 0, 0, 5)
-    d.set_measure_time(timestamp)
+            # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
+            pointing = d.measure.direction(*direction)
+            dir = d.get_direction_vector(pointing)
 
+            print(f"time: {i:2}:28,\tdirection: {dir}")
 
-    #test changing the antenna position
-    print(f"Changing Antenna position test.\nBase parametres: Time: {timestamp} Direction: {direction}")
-    for i in range(10):
-        antenna_itrf = [[3826577.066 + i, 461022.948, 5064892.786]]  # CS002LBA, in ITRF2005 epoch 2012.5
+            self.assertTrue()
 
+    def test_identical_location(self):
+        # # create a frame tied to the reference position
+        reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+        d = delay_calculator(reference_itrf)
+
+        # set the antenna position identical to the reference position
+        antenna_itrf = [reference_itrf]  # CS001LBA, in ITRF2005 epoch 2012.5
+
+        # # set the timestamp to solve for
+        timestamp = datetime.datetime(2000, 1, 1, 0, 0, 0)
+        d.set_measure_time(timestamp)
+
+        # compute the delays for an antennas w.r.t. the reference position
+
+        # # obtain the direction vector for a specific pointing
+        direction = "J2000", "0deg", "0deg"
+
+        # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
         delays = d.convert(direction, antenna_itrf)
 
-        # print the delays
-        print(f"Antenna position: {antenna_itrf}:   {delays}")
+        print("identical location delay: ", delays)
+
+    def test_light_second_delay(self):
+        # # create a frame tied to the reference position
+        reference_itrf = [3826577.066, 461022.948, 5064892.786]  # CS002LBA, in ITRF2005 epoch 2012.5
+        d = delay_calculator(reference_itrf)
+
+        # set the antenna position identical to the reference position
+        speed_of_light = 299792458.0
+        antenna_itrf = [[reference_itrf[0], reference_itrf[1] - speed_of_light, reference_itrf[2]]]  # CS001LBA, in ITRF2005 epoch 2012.5
 
-    # test changing the direction
+        # # set the timestamp to solve for
+        timestamp = datetime.datetime(2000, 1, 1, 0, 0, 0)
+        d.set_measure_time(timestamp)
 
-    antenna_itrf = [[3826923.546, 460915.441, 5064643.489]]  # CS001LBA, in ITRF2005 epoch 2012.5
-    print(f"Changing direction test.\nBase parametres: Time: {timestamp} , position: {antenna_itrf}")
+        # compute the delays for an antennas w.r.t. the reference position
 
-    for i in range(10):
-        direction = "J2000", f"{i}deg", "0deg"
+        # # obtain the direction vector for a specific pointing
+        direction = "J2000", "0deg", "0deg"
 
+        # calculate the delays based on the set reference position, the set time and now the set direction and antenna positions.
         delays = d.convert(direction, antenna_itrf)
 
-        # print the delays
-        print(f"Direction: {direction}:  {delays}")
+        print("One second delay: ", delays)
+
-- 
GitLab