Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DM-25919: Adapt to query interface changes in daf_butler. #276

Merged
merged 1 commit into from
Aug 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 7 additions & 5 deletions python/lsst/obs/base/_instrument.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,10 @@ def fromName(name: str, registry: Registry) -> Instrument:
TypeError
Raised if the class name retrieved is not a string.
"""
dimensions = list(registry.queryDimensions("instrument", dataId={"instrument": name}))
cls = dimensions[0].records["instrument"].class_name
records = list(registry.queryDimensionRecords("instrument", instrument=name))
if not records:
raise LookupError(f"No registered instrument with name '{name}'.")
cls = records[0].class_name
if not isinstance(cls, str):
raise TypeError(f"Unexpected class name retrieved from {name} instrument dimension (got {cls})")
instrument = doImport(cls)
Expand All @@ -196,9 +198,9 @@ def importAll(registry: Registry) -> None:
This might simply indicate that a particular obs package has
not been setup.
"""
dimensions = list(registry.queryDimensions("instrument"))
for dim in dimensions:
cls = dim.records["instrument"].class_name
records = list(registry.queryDimensionRecords("instrument"))
for record in records:
cls = record.class_name
try:
doImport(cls)
except Exception:
Expand Down
8 changes: 4 additions & 4 deletions python/lsst/obs/base/gen2to3/repoConverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ def addSkyMap(self, registry: Registry, name: str):
tracts = set()
self.tracts[name] = tracts
for visit in self.visits:
for dataId in registry.queryDimensions(["tract"], expand=False,
dataId={"skymap": name,
"instrument": self.instrument,
"visit": visit}):
for dataId in registry.queryDataIds(["tract"],
dataId={"skymap": name,
"instrument": self.instrument,
"visit": visit}):
tracts.add(dataId["tract"])

def addSkyPix(self, registry: Registry, dimension: SkyPixDimension):
Expand Down
11 changes: 5 additions & 6 deletions python/lsst/obs/base/ingest_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,21 +267,20 @@ def testDefineVisits(self):

# Test that we got the visits we expected.
butler = Butler(self.root, run=self.outputRun)
visits = set(butler.registry.queryDimensions(["visit"], expand=True))
visits = butler.registry.queryDataIds(["visit"]).expanded().toSet()
self.assertCountEqual(visits, self.visits.keys())
instr = getInstrument(self.instrumentName, butler.registry)
camera = instr.getCamera()
for foundVisit, (expectedVisit, expectedExposures) in zip(visits, self.visits.items()):
# Test that this visit is associated with the expected exposures.
foundExposures = set(butler.registry.queryDimensions(["exposure"], dataId=expectedVisit,
expand=True))
foundExposures = butler.registry.queryDataIds(["exposure"], dataId=expectedVisit
).expanded().toSet()
self.assertCountEqual(foundExposures, expectedExposures)
# Test that we have a visit region, and that it contains all of the
# detector+visit regions.
self.assertIsNotNone(foundVisit.region)
detectorVisitDataIds = set(butler.registry.queryDimensions(["visit", "detector"],
dataId=expectedVisit,
expand=True))
detectorVisitDataIds = butler.registry.queryDataIds(["visit", "detector"], dataId=expectedVisit
).expanded().toSet()
self.assertEqual(len(detectorVisitDataIds), len(camera))
for dataId in detectorVisitDataIds:
self.assertTrue(foundVisit.region.contains(dataId.region))
12 changes: 6 additions & 6 deletions python/lsst/obs/base/instrument_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,21 +81,21 @@ def test_register(self):
"""
registry = Registry.fromConfig(ButlerConfig())
# check that the registry starts out empty
self.assertEqual(list(registry.queryDimensions(["instrument"])), [])
self.assertEqual(list(registry.queryDimensions(["detector"])), [])
self.assertEqual(list(registry.queryDimensions(["physical_filter"])), [])
self.assertFalse(registry.queryDataIds(["instrument"]).toSequence())
self.assertFalse(registry.queryDataIds(["detector"]).toSequence())
self.assertFalse(registry.queryDataIds(["physical_filter"]).toSequence())

# register the instrument and check that certain dimensions appear
self.instrument.register(registry)
instrumentDataIds = list(registry.queryDimensions(["instrument"]))
instrumentDataIds = registry.queryDataIds(["instrument"]).toSequence()
self.assertEqual(len(instrumentDataIds), 1)
instrumentNames = {dataId["instrument"] for dataId in instrumentDataIds}
self.assertEqual(instrumentNames, {self.data.name})
detectorDataIds = list(registry.queryDimensions(["detector"]))
detectorDataIds = registry.queryDataIds(["detector"]).expanded().toSequence()
self.assertEqual(len(detectorDataIds), self.data.nDetectors)
detectorNames = {dataId.records["detector"].full_name for dataId in detectorDataIds}
self.assertIn(self.data.firstDetectorName, detectorNames)
physicalFilterDataIds = list(registry.queryDimensions(["physical_filter"]))
physicalFilterDataIds = registry.queryDataIds(["physical_filter"]).toSequence()
filterNames = {dataId['physical_filter'] for dataId in physicalFilterDataIds}
self.assertGreaterEqual(filterNames, self.data.physical_filters)

Expand Down
2 changes: 1 addition & 1 deletion python/lsst/obs/base/script/defineVisits.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ def defineVisits(repo, config_file, collections, instrument):
if config_file is not None:
config.load(config_file)
task = DefineVisitsTask(config=config, butler=butler)
task.run(butler.registry.queryDimensions(["exposure"]))
task.run(butler.registry.queryDataIds(["exposure"]))