Skip to content

Commit

Permalink
Merge pull request #85 from lsst/tickets/DM-15424
Browse files Browse the repository at this point in the history
DM-15424: add limited Registry concept
  • Loading branch information
TallJimbo committed Sep 13, 2018
2 parents 389b180 + c863a78 commit 93f650a
Show file tree
Hide file tree
Showing 17 changed files with 328 additions and 380 deletions.
4 changes: 2 additions & 2 deletions config/dataUnits.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
dataUnitsConfig:
dataUnits:
version: 0
dataUnits:
dimensions:
Camera:
doc: >
An entity that produces observations. A Camera defines a set of
Expand Down
1 change: 1 addition & 0 deletions config/registry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
registry:
cls: lsst.daf.butler.registries.sqliteRegistry.SqliteRegistry
db: 'sqlite:///:memory:'
limited: false
skypix:
cls: lsst.sphgeom.HtmPixelization
level: 7
59 changes: 43 additions & 16 deletions config/schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,54 +96,62 @@ schema:
tgt: quantum.execution_id
-
src: camera
tgt: camera.camera
tgt: Camera.camera
limited: false
-
src:
- camera
- physical_filter
tgt:
- physicalfilter.camera
- physicalfilter.physical_filter
- PhysicalFilter.camera
- PhysicalFilter.physical_filter
limited: false
-
src:
- camera
- sensor
tgt:
- sensor.camera
- sensor.sensor
- Sensor.camera
- Sensor.sensor
limited: false
-
src:
- camera
- visit
tgt:
- visit.camera
- visit.visit
- Visit.camera
- Visit.visit
limited: false
-
src:
- camera
- exposure
tgt:
- exposure.camera
- exposure.exposure
- Exposure.camera
- Exposure.exposure
limited: false
-
src: skymap
tgt: skymap.skymap
tgt: Skymap.skymap
limited: false
-
src:
- skymap
- tract
tgt:
- tract.skymap
- tract.tract
- Tract.skymap
- Tract.tract
limited: false
-
src:
- skymap
- tract
- patch
tgt:
- patch.skymap
- patch.tract
- patch.patch
- Patch.skymap
- Patch.tract
- Patch.patch
limited: false

DatasetComposition:
doc: >
Expand Down Expand Up @@ -440,6 +448,7 @@ schema:
Camera:
doc: >
A definition table containing recognized Camera values.
limited: false
columns:
-
name: camera
Expand All @@ -452,6 +461,7 @@ schema:
doc: >
A view aggregating all distinct AbstractFilters references by any
PhysicalFilter.
limited: false
columns:
-
name: abstract_filter
Expand All @@ -467,6 +477,7 @@ schema:
doc: >
A Camera-populated table that relates a PhysicalFilter
to its Camera and optional AbstractFilter.
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -495,6 +506,7 @@ schema:
doc: >
A Camera-populated table that relates a Sensor to its Camera and
provides additional labels.
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -536,6 +548,7 @@ schema:
Visit:
doc: >
A table containing Camera-generic metadata for a Visit.
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -663,6 +676,7 @@ schema:
Exposure:
doc: >
A table containing Camera-generic Exposure metadata.
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -751,6 +765,7 @@ schema:
doc: >
A table containing registered SkyMaps and the the SHA1 hashes
used to compare them.
limited: false
columns:
-
name: skymap
Expand All @@ -761,7 +776,7 @@ schema:
A human-readable name for the SkyMap, used as its unique
identifier.
-
name: hash
name: hash
type: string
nullable: false
doc: >
Expand All @@ -773,6 +788,7 @@ schema:
doc: >
A SkyMap-populated table relating a Tract to its spatial region
on the sky.
limited: false
columns:
-
name: skymap
Expand Down Expand Up @@ -808,6 +824,7 @@ schema:
doc: >
A table relating a Patch to its position within a Tract and
on the sky.
limited: false
columns:
-
name: skymap
Expand Down Expand Up @@ -872,6 +889,7 @@ schema:
expected to be calculated outside the database and added/updated
whenever the Visit's region is. This table contains exactly one
entry for each Visit+Sensor combination.
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -920,6 +938,7 @@ schema:
- Sensor.sensor

MultiCameraExposureJoin:
limited: false
columns:
-
name: camera_1
Expand Down Expand Up @@ -958,6 +977,7 @@ schema:
- Exposure.exposure

VisitSensorSkyPixJoin:
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -991,6 +1011,7 @@ schema:
- VisitSensorRegion.sensor

VisitSkyPixJoin:
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -1020,6 +1041,7 @@ schema:
FROM VisitSensorSkyPixJoin;
PatchSkyPixJoin:
limited: false
columns:
-
name: skymap
Expand Down Expand Up @@ -1053,6 +1075,7 @@ schema:
- Patch.patch

TractSkyPixJoin:
limited: false
columns:
-
name: skymap
Expand Down Expand Up @@ -1082,6 +1105,7 @@ schema:
FROM PatchSkyPixJoin;
VisitSensorPatchJoin:
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -1146,6 +1170,7 @@ schema:
);
VisitPatchJoin:
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -1202,6 +1227,7 @@ schema:
);
VisitSensorTractJoin:
limited: false
columns:
-
name: camera
Expand Down Expand Up @@ -1258,6 +1284,7 @@ schema:
);
VisitTractJoin:
limited: false
columns:
-
name: camera
Expand Down
4 changes: 2 additions & 2 deletions python/lsst/daf/butler/core/butlerConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@
from .config import Config
from .datastore import DatastoreConfig
from .schema import SchemaConfig
from .dataUnit import DataUnitRegistryConfig
from .dataUnit import DataUnitConfig
from .registry import RegistryConfig
from .storageClass import StorageClassConfig
from .composites import CompositesConfig

__all__ = ("ButlerConfig",)

CONFIG_COMPONENT_CLASSES = (SchemaConfig, RegistryConfig, StorageClassConfig,
DatastoreConfig, CompositesConfig, DataUnitRegistryConfig)
DatastoreConfig, CompositesConfig, DataUnitConfig)


class ButlerConfig(Config):
Expand Down
4 changes: 2 additions & 2 deletions python/lsst/daf/butler/core/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,15 +284,15 @@ def __getitem__(self, name):
keys = self._splitIntoKeys(name)
for key in keys:
if data is None:
return None
raise KeyError(name)
if key in data and isinstance(data, collections.Mapping):
data = data[key]
else:
try:
i = int(key)
data = data[i]
except ValueError:
return None
raise KeyError(name)
if isinstance(data, collections.Mapping):
data = Config(data)
# Ensure that child configs inherit the parent internal delimiter
Expand Down
23 changes: 11 additions & 12 deletions python/lsst/daf/butler/core/dataUnit.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from .config import ConfigSubset
from .utils import TopologicalSet, iterable

__all__ = ("DataUnit", "DataUnitRegistry", "DataUnitRegistryConfig")
__all__ = ("DataUnit", "DataUnitRegistry", "DataUnitConfig")


class DataUnit:
Expand Down Expand Up @@ -223,7 +223,7 @@ def primaryKeyColumns(self):

@property
def regionColumn(self):
"""Table column with encoded region data, ``None`` if table has no
"""Table column with encoded region data, `None` if table has no
region column (`sqlalchemy.Column`, optional).
"""
table = self.table
Expand All @@ -232,9 +232,9 @@ def regionColumn(self):
return None


class DataUnitRegistryConfig(ConfigSubset):
component = "dataUnitsConfig"
requiredKeys = ("version", "dataUnits")
class DataUnitConfig(ConfigSubset):
component = "dataUnits"
requiredKeys = ("version", "dimensions")
defaultConfigFile = "dataUnits.yaml"


Expand Down Expand Up @@ -263,13 +263,12 @@ def fromConfig(cls, config):
Parameters
----------
config : `SchemaConfig`
`Registry` DataUnit configuration containing "dataUnits",
"joins" entries.
config : `DataUnitConfig`
DataUnit configuration containing "dimensions", "joins" entries.
"""
dataUnitRegistry = cls()
dataUnitRegistry._initDataUnitNames(config["dataUnits"])
dataUnitRegistry._initDataUnits(config["dataUnits"])
dataUnitRegistry._initDataUnitNames(config["dimensions"])
dataUnitRegistry._initDataUnits(config["dimensions"])
dataUnitRegistry._initDataUnitJoins(config["joins"])
return dataUnitRegistry

Expand Down Expand Up @@ -377,7 +376,7 @@ def _initDataUnits(self, config):
Parameters
----------
config : `Config`
The `dataUnits` component of a `DataUnitRegistryConfig`.
The `dataUnits` component of a `DataUnitConfig`.
"""
# Visit DataUnits in dependency order
for dataUnitName in self._dataUnitNames:
Expand Down Expand Up @@ -418,7 +417,7 @@ def _initDataUnitJoins(self, config):
Parameters
----------
config : `DataUnitRegistryConfig`
config : `DataUnitConfig`
Configuration describing `DataUnit` join relations.
"""
for dataUnitJoinName, dataUnitJoinDescription in config.items():
Expand Down
2 changes: 1 addition & 1 deletion python/lsst/daf/butler/core/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ def __str__(self):
def detach(self):
"""Obtain a new DatasetRef that is detached from the registry.
Its ``id`` property will be ``None``. This can be used for transfers
Its ``id`` property will be `None`. This can be used for transfers
and similar operations.
"""
ref = deepcopy(self)
Expand Down

0 comments on commit 93f650a

Please sign in to comment.