NdfInputArchive#

class lsst.images.ndf.NdfInputArchive(file: File)#

Bases: InputArchive[NdfPointerModel]

Reads HDS-on-HDF5 NDF files written by NdfOutputArchive.

Instances should only be constructed via the open() context manager.

Parameters#

file

Open h5py.File handle. Owned by the caller of open(); the archive does not close it.

Methods Summary

deserialize_pointer(pointer, model_type, ...)

Deserialize an object that was saved by serialize_pointer.

get_array(model, *[, slices, strip_header])

Load an array from the archive.

get_frame_set(pointer)

Return an already-deserialized frame set from the archive.

get_opaque_metadata()

Return opaque metadata loaded from the file that should be saved if another version of the object is saved to the same file format.

get_structured_array(model[, strip_header])

Load a table from the archive as a structured array.

get_table(model[, strip_header])

Load a table from the archive.

get_tree(model_type)

Read and validate the main Pydantic tree at /MORE/LSST/JSON.

open(path)

Open an NDF file for reading and yield an NdfInputArchive.

Methods Documentation

deserialize_pointer(pointer: NdfPointerModel, model_type: type[U], deserializer: Callable[[U, InputArchive[NdfPointerModel]], V]) V#

Deserialize an object that was saved by serialize_pointer.

Parameters#

pointer

JSON Pointer model to dereference.

model_type

Pydantic model type that the pointer should dereference to.

deserializer

Callable that takes an instance of model_type and an input archive, and returns the deserialized object.

Returns#

V

The deserialized object.

Notes#

Implementations are required to remember previously-deserialized objects and return them when the same pointer is passed in multiple times.

There is no deserialize_direct (to pair with serialize_direct) because the caller can just call a deserializer function directly on a sub-model of its Pydantic tree.

get_array(model: ~lsst.images.serialization._asdf_utils.ArrayReferenceModel | ~lsst.images.serialization._asdf_utils.InlineArrayModel, *, slices: tuple[slice, ...] | ellipsis = Ellipsis, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) ndarray#

Load an array from the archive.

Parameters#

model

A Pydantic model that references or holds the array.

slices

Slices that specify a subset of the original array to read.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_array.

get_frame_set(pointer: NdfPointerModel) FrameSet#

Return an already-deserialized frame set from the archive.

Parameters#

ref

Implementation-specific reference to the frame set.

Returns#

FrameSet

Loaded frame set.

get_opaque_metadata() FitsOpaqueMetadata#

Return opaque metadata loaded from the file that should be saved if another version of the object is saved to the same file format.

Returns#

OpaqueArchiveMetadata

Opaque metadata specific to this archive type that should be round-tripped if it is saved in the same format.

get_structured_array(model: ~lsst.images.serialization._tables.TableModel, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) ndarray#

Load a table from the archive as a structured array.

Parameters#

model

A Pydantic model that references or holds the table.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_structured_array.

Returns#

numpy.ndarray

The loaded table as a structured array.

get_table(model: ~lsst.images.serialization._tables.TableModel, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) Table#

Load a table from the archive.

Parameters#

model

A Pydantic model that references or holds the table.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_table.

Returns#

astropy.table.Table

The loaded table.

get_tree(model_type: type[T]) T#

Read and validate the main Pydantic tree at /MORE/LSST/JSON.

classmethod open(path: str | ParseResult | ResourcePath | Path) Iterator[Self]#

Open an NDF file for reading and yield an NdfInputArchive.

Remote ResourcePaths are materialised locally first; fsspec-direct h5py reads are a deferred follow-up.