ObservationDimensionPacker

class lsst.pipe.base.ObservationDimensionPacker(data_id: DataCoordinate, config: ObservationDimensionPackerConfig | None = None, is_exposure: bool | None = None)

Bases: DimensionPacker

A DimensionPacker for visit+detector or exposure+detector.

Parameters:
data_idlsst.daf.butler.DataCoordinate

Data ID that identifies at least the instrument dimension. Must have dimension records attached unless config.n_detectors and config.n_visits are both not None.

configObservationDimensionPackerConfig, optional

Configuration for this dimension packer.

is_exposurebool, optional

If False, construct a packer for visit+detector data IDs. If True, construct a packer for exposure+detector data IDs. If None, this is determined based on whether visit or exposure is present in data_id, with visit checked first and hence used if both are present.

Notes

The standard pattern for constructing instances of the class is to use Instrument.make_dimension_packer; see that method for details.

This packer assumes all visit/exposure and detector IDs are sequential or otherwise densely packed between zero and their upper bound, such that n_detectors * n_observations leaves plenty of bits remaining for any other IDs that need to be included in the same integer (such as a counter for Sources detected on an image with this data ID). Instruments whose data ID values are not densely packed, should provide their own DimensionPacker that takes advantage of the structure of its IDs to compress them into fewer bits.

Attributes Summary

dimensions

The dimensions of data IDs packed by this instance (DimensionGraph).

maxBits

Return The maximum number of nonzero bits in the packed ID.

universe

Graph containing all known dimensions (DimensionUniverse).

Methods Summary

pack([dataId, returnMaxBits])

Pack the given data ID into a single integer.

unpack(packedId)

Unpack an ID produced by pack into a full DataCoordinate.

Attributes Documentation

dimensions

The dimensions of data IDs packed by this instance (DimensionGraph).

After v27 this will be a DimensionGroup.

maxBits
universe

Graph containing all known dimensions (DimensionUniverse).

Methods Documentation

pack(dataId: DataCoordinate | Mapping[str, Any] | None = None, *, returnMaxBits: bool = False, **kwargs: Any) tuple[int, int] | int

Pack the given data ID into a single integer.

Parameters:
dataIdDataId

Data ID to pack. Values for any keys also present in the “fixed” data ID passed at construction must be the same as the values passed at construction, but in general you must still specify those keys.

returnMaxBitsbool

If True, return a tuple of (packed, self.maxBits).

**kwargs

Additional keyword arguments are treated like additional key-value pairs in dataId.

Returns:
packedint

Packed integer ID.

maxBitsint, optional

Maximum number of nonzero bits in packed. Not returned unless returnMaxBits is True.

Notes

Should not be overridden by derived class (_pack should be overridden instead).

unpack(packedId: int) DataCoordinate

Unpack an ID produced by pack into a full DataCoordinate.

Must be implemented by all concrete derived classes.

Parameters:
packedIdint

The result of a call to pack on either self or an identically-constructed packer instance.

Returns:
dataIdDataCoordinate

Dictionary-like ID that uniquely identifies all covered dimensions.