From 294bb5ce5823bccd99157b2ef14e29dac1763aa0 Mon Sep 17 00:00:00 2001 From: Joachim Moeyens Date: Fri, 30 Aug 2024 10:41:36 -0700 Subject: [PATCH] Add main_filter to Observatory --- src/adam_test_data/observatory.py | 10 ++++++++++ src/adam_test_data/tests/test_observatory.py | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/adam_test_data/observatory.py b/src/adam_test_data/observatory.py index a61c2f3..167fe2e 100644 --- a/src/adam_test_data/observatory.py +++ b/src/adam_test_data/observatory.py @@ -67,6 +67,7 @@ class Observatory: bright_limit: list[float] fov: FieldOfView simulation: Simulation + main_filter: str def observatory_to_sorcha_config( @@ -92,6 +93,15 @@ def observatory_to_sorcha_config( if time_range is not None: sql_query += f" AND observationStartMJD >= {time_range[0]} AND observationStartMJD <= {time_range[1]}" + # The main filter needs to be first in the list of filters + if observatory.main_filter in observatory.filters: + observatory.filters.remove(observatory.main_filter) + observatory.filters.insert(0, observatory.main_filter) + else: + raise ValueError( + f"Main filter {observatory.main_filter} not in list of filters" + ) + config = f""" # Sorcha Configuration File - ADAM Test Data - {observatory.code} diff --git a/src/adam_test_data/tests/test_observatory.py b/src/adam_test_data/tests/test_observatory.py index edcc7cb..9c8a075 100644 --- a/src/adam_test_data/tests/test_observatory.py +++ b/src/adam_test_data/tests/test_observatory.py @@ -108,6 +108,7 @@ def test_observatory_to_sorcha_config(): bright_limit=[16, 16, 16, 16, 16, 16], fov=FieldOfView(camera_model="circle", fill_factor=0.9, circle_radius=3), simulation=Simulation(ang_fov=1.0, fov_buffer=0.1), + main_filter="r", ) assert ( @@ -130,7 +131,7 @@ def test_observatory_to_sorcha_config(): ar_healpix_order = 6 [FILTERS] -observing_filters = u,g,r,i,z,y +observing_filters = r,u,g,i,z,y [BRIGHT_LIMITS] bright_limit = 16,16,16,16,16,16 @@ -164,3 +165,19 @@ def test_observatory_to_sorcha_config(): trailing_losses_on = True """ ) + + +def test_observatory_to_sorcha_config_raises(): + # Test that observatory_to_sorcha_config raises the correct exceptions when invalid argument + # combinations are passed. + + with pytest.raises(ValueError, match="Main filter r not in list of filters"): + obs = Observatory( + code="X05", + filters=["u", "g", "i", "z", "y"], + bright_limit=[16, 16, 16, 16, 16, 16], + fov=FieldOfView(camera_model="circle", fill_factor=0.9, circle_radius=3), + simulation=Simulation(ang_fov=1.0, fov_buffer=0.1), + main_filter="r", + ) + observatory_to_sorcha_config(obs)