FitsExposureFormatter

class lsst.obs.base.formatters.fitsExposure.FitsExposureFormatter(fileDescriptor: FileDescriptor, dataId: DataCoordinate, writeParameters: Optional[Dict[str, Any]] = None, writeRecipes: Optional[Dict[str, Any]] = None)

Bases: lsst.obs.base.formatters.fitsExposure.FitsMaskedImageFormatter

Concrete formatter for reading/writing Exposure from/to FITS.

Notes

This class inherits from FitsMaskedImageFormatter even though lsst.afw.image.Exposure doesn’t inherit from lsst.afw.image.MaskedImage; this is just an easy way to be able to delegate to FitsMaskedImageFormatter.super() for component-handling, and should be replaced with e.g. both calling a free function if that slight type covariance violation ever becomes a practical problem.

Attributes Summary

checked_parameters The parameters passed by the butler user, after checking them against the storage class and transforming None into an empty dict (dict).
dataId Return Data ID associated with this formatter (DataCoordinate).
extension
fileDescriptor File descriptor associated with this formatter (FileDescriptor).
reader The reader object that backs this formatter’s read operations.
supportedExtensions
supportedWriteParameters
unsupportedParameters
writeParameters Parameters to use when writing out datasets.
writeRecipes Detailed write Recipes indexed by recipe name.

Methods Summary

can_read_bytes() Indicate if this formatter can format from bytes.
fromBytes(serializedDataset, component) Read serialized data into a Dataset or its component.
getImageCompressionSettings(recipeName) Retrieve the relevant compression settings for this recipe.
makeUpdatedLocation(location) Return a new Location updated with this formatter’s extension.
name() Return the fully qualified name of the formatter.
predictPath() Return the path that would be returned by write.
read([component]) Read a Dataset.
readComponent(component) Read a component dataset.
readFull() Read the full dataset (while still accounting for parameters).
segregateParameters(parameters, Any]] = None) Segregate the supplied parameters.
toBytes(inMemoryDataset) Serialize the Dataset to bytes based on formatter.
validateExtension(location) Check the extension of the provided location for compatibility.
validateWriteRecipes(recipes) Validate supplied recipes for this formatter.
write(inMemoryDataset) Write a Python object to a file.

Attributes Documentation

checked_parameters

The parameters passed by the butler user, after checking them against the storage class and transforming None into an empty dict (dict).

This is computed on first use and then cached. It should never be accessed when writing. Subclasses that need additional checking should delegate to super and then check the result before returning it.

dataId

Return Data ID associated with this formatter (DataCoordinate).

extension = '.fits'
fileDescriptor

File descriptor associated with this formatter (FileDescriptor).

Read-only property.

reader

The reader object that backs this formatter’s read operations.

This is computed on first use and then cached. It should never be accessed when writing.

supportedExtensions = frozenset({'.fit', '.fits.gz', '.fz', '.fits', '.fits.fz'})
supportedWriteParameters = frozenset({'recipe'})
unsupportedParameters = {}
writeParameters

Parameters to use when writing out datasets.

writeRecipes

Detailed write Recipes indexed by recipe name.

Methods Documentation

classmethod can_read_bytes() → bool

Indicate if this formatter can format from bytes.

Returns:
can : bool

True if the fromBytes method is implemented.

fromBytes(serializedDataset: bytes, component: Optional[str] = None) → object

Read serialized data into a Dataset or its component.

Parameters:
serializedDataset : bytes

Bytes object to unserialize.

component : str, optional

Component to read from the Dataset. Only used if the StorageClass for reading differed from the StorageClass used to write the file.

Returns:
inMemoryDataset : object

The requested data as a Python object. The type of object is controlled by the specific formatter.

getImageCompressionSettings(recipeName)

Retrieve the relevant compression settings for this recipe.

Parameters:
recipeName : str

Label associated with the collection of compression parameters to select.

Returns:
settings : dict

The selected settings.

makeUpdatedLocation(location: lsst.daf.butler.core.location.Location) → lsst.daf.butler.core.location.Location

Return a new Location updated with this formatter’s extension.

Parameters:
location : Location

The location to update.

Returns:
updated : Location

A new Location with a new file extension applied.

Raises:
NotImplementedError

Raised if there is no extension attribute associated with this formatter.

Notes

This method is available to all Formatters but might not be implemented by all formatters. It requires that a formatter set an extension attribute containing the file extension used when writing files. If extension is None the supplied file will not be updated. Not all formatters write files so this is not defined in the base class.

classmethod name() → str

Return the fully qualified name of the formatter.

Returns:
name : str

Fully-qualified name of formatter class.

predictPath() → str

Return the path that would be returned by write.

Does not write any data file.

Uses the FileDescriptor associated with the instance.

Returns:
path : str

Path within datastore that would be associated with the location stored in this Formatter.

read(component=None)

Read a Dataset.

Parameters:
component : str, optional

Component to read from the file. Only used if the StorageClass for reading differed from the StorageClass used to write the file.

Returns:
inMemoryDataset : object

The requested Dataset.

readComponent(component)

Read a component dataset.

Parameters:
component : str, optional

Component to read from the file.

Returns:
obj : component-dependent

In-memory component object.

Raises:
KeyError

Raised if the requested component cannot be handled.

readFull()

Read the full dataset (while still accounting for parameters).

Returns:
obj : component-dependent

In-memory component object.

segregateParameters(parameters: Optional[Dict[str, Any]] = None) → Tuple[Dict[KT, VT], Dict[KT, VT]]

Segregate the supplied parameters.

This splits the parameters into those understood by the formatter and those not understood by the formatter.

Any unsupported parameters are assumed to be usable by associated assemblers.

Parameters:
parameters : dict, optional

Parameters with values that have been supplied by the caller and which might be relevant for the formatter. If None parameters will be read from the registered FileDescriptor.

Returns:
supported : dict

Those parameters supported by this formatter.

unsupported : dict

Those parameters not supported by this formatter.

toBytes(inMemoryDataset: Any) → bytes

Serialize the Dataset to bytes based on formatter.

Parameters:
inMemoryDataset : object

The Python object to serialize.

Returns:
serializedDataset : bytes

Bytes representing the serialized dataset.

classmethod validateExtension(location: lsst.daf.butler.core.location.Location) → None

Check the extension of the provided location for compatibility.

Parameters:
location : Location

Location from which to extract a file extension.

Raises:
NotImplementedError

Raised if file extensions are a concept not understood by this formatter.

ValueError

Raised if the formatter does not understand this extension.

Notes

This method is available to all Formatters but might not be implemented by all formatters. It requires that a formatter set an extension attribute containing the file extension used when writing files. If extension is None only the set of supported extensions will be examined.

classmethod validateWriteRecipes(recipes)

Validate supplied recipes for this formatter.

The recipes are supplemented with default values where appropriate.

TODO: replace this custom validation code with Cerberus (DM-11846)

Parameters:
recipes : dict

Recipes to validate. Can be empty dict or None.

Returns:
validated : dict

Validated recipes. Returns what was given if there are no recipes listed.

Raises:
RuntimeError

Raised if validation fails.

write(inMemoryDataset)

Write a Python object to a file.

Parameters:
inMemoryDataset : object

The Python object to store.