FitsInputArchive#

class lsst.images.fits.FitsInputArchive(stream: IO[bytes])#

Bases: InputArchive[TableCellReferenceModel]

An implementation of the serialization.InputArchive interface that reads from FITS files.

Instances of this class should only be constructed via the open context manager.

Methods Summary

deserialize_pointer(pointer, model_type, ...)

Deserialize an object that was saved by serialize_pointer.

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

Load an array from the archive.

get_frame_set(ref)

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(ref[, strip_header])

Load a table from the archive as a structured array.

get_table(ref[, strip_header])

Load a table from the archive.

get_tree(model_type)

Read the JSON tree from the archive.

open(path, *[, page_size, partial])

Create an output archive that writes to the given file.

Methods Documentation

deserialize_pointer(pointer: TableCellReferenceModel, model_type: type[U], deserializer: Callable[[U, InputArchive[TableCellReferenceModel]], 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(ref: ~lsst.images.serialization._asdf_utils.ArrayReferenceModel, *, 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#

ref

A Pydantic model that references 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(ref: TableCellReferenceModel) 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(ref: ~lsst.images.serialization._tables.TableReferenceModel, 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#

ref

A Pydantic model that references 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(ref: ~lsst.images.serialization._tables.TableReferenceModel, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) Table#

Load a table from the archive.

Parameters#

ref

A Pydantic model that references 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 the JSON tree from the archive.

Parameters#

model_type

A Pydantic model type to use to validate the JSON.

Returns#

T

The validated Pydantic model.

classmethod open(path: str | ParseResult | ResourcePath | Path, *, page_size: int = 144000, partial: bool = False) Iterator[Self]#

Create an output archive that writes to the given file.

Parameters#

path

File to read; convertible to lsst.resources.ResourcePath.

page_size

Minimum number of bytes to read at at once. Making this a multiple of the FITS block size (2880) is recommended.

partial

Whether we will be reading only some of the archive, or if memory pressure forces us to read it only a little at a time. If False (default), the entire raw file may be read into memory up front.

Returns#

contextlib.AbstractContextManager [FitsInputArchive]

A context manager that returns a FitsInputArchive when entered.