From e84ca19b69e9b7ce43f9d28dad82d753da407969 Mon Sep 17 00:00:00 2001 From: Jim Bosch Date: Fri, 28 Jul 2023 13:18:04 -0400 Subject: [PATCH] Mark visit join-table elements as populated by visit. --- python/lsst/daf/butler/configs/dimensions.yaml | 5 ++++- tests/test_dimensions.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/python/lsst/daf/butler/configs/dimensions.yaml b/python/lsst/daf/butler/configs/dimensions.yaml index 8e0d4e00e1..a61ef88c4a 100644 --- a/python/lsst/daf/butler/configs/dimensions.yaml +++ b/python/lsst/daf/butler/configs/dimensions.yaml @@ -1,4 +1,4 @@ -version: 3 +version: 4 namespace: daf_butler skypix: # 'common' is the skypix system and level used to relate all other spatial @@ -427,6 +427,7 @@ elements: A many-to-many join table that provides region information for visit-detector combinations. requires: [visit, detector] + populated_by: visit storage: cls: lsst.daf.butler.registry.dimensions.table.TableDimensionRecordStorage @@ -459,6 +460,7 @@ elements: A many-to-many join table that relates exposures to the visits they belong to. requires: [exposure, visit] + populated_by: visit always_join: true storage: cls: lsst.daf.butler.registry.dimensions.table.TableDimensionRecordStorage @@ -468,6 +470,7 @@ elements: A many-to-many join table that relates visits to the visit_systems they belong to. requires: [visit, visit_system] + populated_by: visit always_join: true storage: cls: lsst.daf.butler.registry.dimensions.table.TableDimensionRecordStorage diff --git a/tests/test_dimensions.py b/tests/test_dimensions.py index f510c61d47..845489abdb 100644 --- a/tests/test_dimensions.py +++ b/tests/test_dimensions.py @@ -285,6 +285,20 @@ def testObservationDimensions(self): self.assertEqual(graph.temporal.names, {"observation_timespans"}) self.assertEqual(next(iter(graph.spatial)).governor, self.universe["instrument"]) self.assertEqual(next(iter(graph.temporal)).governor, self.universe["instrument"]) + self.assertEqual(self.universe["visit_definition"].populated_by, self.universe["visit"]) + self.assertEqual(self.universe["visit_system_membership"].populated_by, self.universe["visit"]) + self.assertEqual(self.universe["visit_detector_region"].populated_by, self.universe["visit"]) + self.assertEqual( + self.universe.get_elements_populated_by(self.universe["visit"]), + NamedValueSet( + { + self.universe["visit"], + self.universe["visit_definition"], + self.universe["visit_system_membership"], + self.universe["visit_detector_region"], + } + ), + ) def testSkyMapDimensions(self): graph = DimensionGraph(self.universe, names=("patch",))