lsst.ip.isr g77367d4607+e3a9f20f38
Loading...
Searching...
No Matches
lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes Class Reference
Inheritance diagram for lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes:
lsst.ip.isr.calibType.IsrCalib

Public Member Functions

 __init__ (self, table=None, table_ocs=None, **kwargs)
 
 fromDict (cls, dictionary)
 
 toDict (self)
 
 fromTable (cls, tableList)
 
 toTable (self)
 
 writeText (self, filename, format="auto")
 
 readText (self, filename, format="auto")
 
 getIntrinsicZernikes (self, field_x, field_y, rotTelPos=0.0, noll_indices=None)
 
 requiredAttributes (self)
 
 requiredAttributes (self, value)
 
 __str__ (self)
 
 __eq__ (self, other)
 
 metadata (self)
 
 getMetadata (self)
 
 setMetadata (self, metadata)
 
 updateMetadata (self, camera=None, detector=None, filterName=None, setCalibId=False, setCalibInfo=False, setDate=False, **kwargs)
 
 updateMetadataFromExposures (self, exposures)
 
 calibInfoFromDict (self, dictionary)
 
 determineCalibClass (cls, metadata, message)
 
 readFits (cls, filename, **kwargs)
 
 writeFits (self, filename)
 
 fromDetector (self, detector)
 
 validate (self, other=None)
 
 apply (self, target)
 

Public Attributes

 field_x = np.array([])
 
 field_y = np.array([])
 
 values = np.array([])
 
 field_x_ocs = np.array([])
 
 field_y_ocs = np.array([])
 
 values_ocs = np.array([])
 
 noll_indices = np.array([])
 
 interpolator = None
 
 interpolator_ocs = None
 
 requiredAttributes = set(["_OBSTYPE", "_SCHEMA", "_VERSION"])
 
 log = log if log else logging.getLogger(__name__)
 

Static Protected Member Functions

 _unpackTable (table)
 
 _makeInterpolator (field_x, field_y, values)
 

Protected Attributes

 _instrument = None
 
 _raftName = None
 
 _slotName = None
 
 _detectorName = None
 
 _detectorSerial = None
 
 _detectorId = None
 
 _filter = None
 
str _calibId = None
 
 _seqfile = None
 
 _seqname = None
 
 _seqcksum = None
 
 _metadata = PropertyList()
 
 _requiredAttributes
 

Static Protected Attributes

str _OBSTYPE = "generic"
 
str _SCHEMA = "NO SCHEMA"
 
int _VERSION = 0
 

Detailed Description

Intrinsic Zernike coefficients.

Stores Zernike wavefront-error coefficients sampled at a set of
focal-plane field angles.  At query time the coefficients are
interpolated to an arbitrary field position provided in CCS.

The coefficients are stored in two coordinate systems, each as an
independent set of sample points and values:

- the Camera Coordinate System (CCS), which corresponds to the
 focal plane heights and any other CCS contribution and
- the Optical Coordinate System (OCS), corresponding to
the intrinsics, which are by nature defined in the optical
coordinates.

See `LSE-349 <https://ls.st/LSE-349>`_ for the definitions.

The CCS sample points and values are stored on the un-suffixed
``field_x``, ``field_y`` and ``values`` attributes (and serialized
under those same keys).  These names are kept unchanged from version
1, which only stored the CCS system, so that version 1 calibrations
round-trip unchanged.  The OCS system is stored alongside on the
``*_ocs`` attributes/keys.

Parameters
----------
table : `astropy.table.Table`, optional
    Source table in the CCS.  Must contain columns:

    ``"x"``
        Field x positions with angular units (e.g. ``u.deg``).
    ``"y"``
        Field y positions with angular units (e.g. ``u.deg``).
    ``"Z{j}"``
        One column per Noll index *j*, with length units
        (e.g. ``u.um``).
table_ocs : `astropy.table.Table`, optional
    Source table in the OCS, with the same column layout as
    ``table``.

Attributes
----------
field_x, field_y : `numpy.ndarray`
    CCS x/y field positions in degrees for all sample points,
    shape ``(n_points_ccs,)``.
field_x_ocs, field_y_ocs : `numpy.ndarray`
    OCS x/y field positions in degrees for all sample points,
    shape ``(n_points_ocs,)``.
noll_indices : `numpy.ndarray`
    Noll indices of the stored Zernike terms, shape ``(n_zernikes,)``.
values, values_ocs : `numpy.ndarray`
    Zernike coefficients in microns for the CCS and OCS sample
    points, shape ``(n_points, n_zernikes)``.
interpolator, interpolator_ocs : `scipy.interpolate.LinearNDInterpolator`
or `None`
    Interpolators built from the CCS and OCS sample points and
    values.  ``None`` until the corresponding system is populated.

Version 1.1 adds the OCS coordinate system alongside the CCS system
stored by version 1.

Definition at line 35 of file intrinsicZernikes.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.__init__ ( self,
table = None,
table_ocs = None,
** kwargs )

Definition at line 102 of file intrinsicZernikes.py.

Member Function Documentation

◆ __eq__()

lsst.ip.isr.calibType.IsrCalib.__eq__ ( self,
other )
inherited
Calibration equivalence.

Running ``calib.log.setLevel(0)`` enables debug statements to
identify problematic fields.

Definition at line 105 of file calibType.py.

◆ __str__()

lsst.ip.isr.calibType.IsrCalib.__str__ ( self)
inherited

Definition at line 102 of file calibType.py.

◆ _makeInterpolator()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes._makeInterpolator ( field_x,
field_y,
values )
staticprotected
Build a field-position interpolator, or `None` if there are no
sample points.

Definition at line 182 of file intrinsicZernikes.py.

◆ _unpackTable()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes._unpackTable ( table)
staticprotected
Unpack a source table into field positions, values, and Noll
indices.

Parameters
----------
table : `astropy.table.Table`
    Source table with ``"x"``, ``"y"``, and ``"Z{j}"`` columns.

Returns
-------
field_x, field_y : `numpy.ndarray`
    Field positions in degrees.
values : `numpy.ndarray`
    Zernike coefficients in microns, shape
    ``(n_points, n_zernikes)`` ordered by ascending Noll index.
noll_indices : `numpy.ndarray`
    Sorted Noll indices.

Definition at line 155 of file intrinsicZernikes.py.

◆ apply()

lsst.ip.isr.calibType.IsrCalib.apply ( self,
target )
inherited
Method to apply the calibration to the target object.

Parameters
----------
target : `object`
    Thing to validate against.

Returns
-------
valid : `bool`
    Returns true if the calibration was applied correctly.

Raises
------
NotImplementedError
    Raised if not implemented.

Definition at line 706 of file calibType.py.

◆ calibInfoFromDict()

lsst.ip.isr.calibType.IsrCalib.calibInfoFromDict ( self,
dictionary )
inherited
Handle common keywords.

This isn't an ideal solution, but until all calibrations
expect to find everything in the metadata, they still need to
search through dictionaries.

Parameters
----------
dictionary : `dict` or `lsst.daf.base.PropertyList`
    Source for the common keywords.

Raises
------
RuntimeError
    Raised if the dictionary does not match the expected OBSTYPE.

Definition at line 325 of file calibType.py.

◆ determineCalibClass()

lsst.ip.isr.calibType.IsrCalib.determineCalibClass ( cls,
metadata,
message )
inherited
Attempt to find calibration class in metadata.

Parameters
----------
metadata : `dict` or `lsst.daf.base.PropertyList`
    Metadata possibly containing a calibration class entry.
message : `str`
    Message to include in any errors.

Returns
-------
calibClass : `object`
    The class to use to read the file contents.  Should be an
    `lsst.ip.isr.IsrCalib` subclass.

Raises
------
ValueError
    Raised if the resulting calibClass is the base
    `lsst.ip.isr.IsrClass` (which does not implement the
    content methods).

Definition at line 391 of file calibType.py.

◆ fromDetector()

lsst.ip.isr.calibType.IsrCalib.fromDetector ( self,
detector )
inherited
Modify the calibration parameters to match the supplied detector.

Parameters
----------
detector : `lsst.afw.cameraGeom.Detector`
    Detector to use to set parameters from.

Raises
------
NotImplementedError
    Raised if not implemented by a subclass.
    This needs to be implemented by subclasses for each
    calibration type.

Reimplemented in lsst.ip.isr.crosstalk.CrosstalkCalib, lsst.ip.isr.deferredCharge.DeferredChargeCalib, lsst.ip.isr.linearize.Linearizer, and lsst.ip.isr.ptcDataset.PhotonTransferCurveDataset.

Definition at line 588 of file calibType.py.

◆ fromDict()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.fromDict ( cls,
dictionary )
Construct an IntrinsicZernikes from dictionary of properties.

Parameters
----------
dictionary : `dict`
    Dictionary of properties.

Returns
-------
calib : `lsst.ip.isr.IntrinsicZernikes`
    Constructed calibration.

Raises
------
RuntimeError
    Raised if the supplied dictionary is for a different
    calibration type.

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 190 of file intrinsicZernikes.py.

◆ fromTable()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.fromTable ( cls,
tableList )
Construct calibration from a list of tables.

Parameters
----------
tableList : `list` [`astropy.table.Table`]
    List of tables to use to construct the intrinsic zernikes
    calibration.  Each table is dispatched to the CCS or OCS
    coordinate system according to its ``coord_sys`` metadata
    entry (defaulting to ``"CCS"``).  A version 1 single-table
    calibration, which has no ``coord_sys`` entry, is therefore
    read as the CCS system.

Returns
-------
calib : `lsst.ip.isr.IntrinsicZernikes`
    The calibration defined in the tables.

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 264 of file intrinsicZernikes.py.

◆ getIntrinsicZernikes()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.getIntrinsicZernikes ( self,
field_x,
field_y,
rotTelPos = 0.0,
noll_indices = None )
Get the intrinsic Zernike coefficients at a given field position.

The returned coefficients are the sum of the CCS contribution
(heights_ccs), interpolated at the requested field position,
and the OCS contribution (measured_intrinsics),
interpolated at the field position rotated by
``rotTelPos``.  For calibrations that only store one
coordinate system (e.g. version 1 files, which only carry CCS),
the missing OCS contribution is simply omitted from the sum.

Parameters
----------
field_x : `array-like`
    x-field positions in degrees (CCS).
field_y : `array-like`
    y-field positions in degrees (CCS).
rotTelPos : `float`, optional
    Rotation angle in degrees applied to the query point before
    interpolating the OCS contribution.  Defaults to 0.
noll_indices : `list` [`int`], optional
    List of Noll indices to return. If None, return all.

Returns
-------
zernikes : `array-like`
    Array of Zernike coefficient values in microns corresponding to the
    requested Noll indices and field positions.

Definition at line 353 of file intrinsicZernikes.py.

◆ getMetadata()

lsst.ip.isr.calibType.IsrCalib.getMetadata ( self)
inherited
Retrieve metadata associated with this calibration.

Returns
-------
meta : `lsst.daf.base.PropertyList`
    Metadata. The returned `~lsst.daf.base.PropertyList` can be
    modified by the caller and the changes will be written to
    external files.

Definition at line 174 of file calibType.py.

◆ metadata()

lsst.ip.isr.calibType.IsrCalib.metadata ( self)
inherited

Definition at line 171 of file calibType.py.

◆ readFits()

lsst.ip.isr.calibType.IsrCalib.readFits ( cls,
filename,
** kwargs )
inherited
Read calibration data from a FITS file.

Parameters
----------
filename : `str`
    Filename to read data from.
kwargs : `dict` or collections.abc.Mapping`, optional
    Set of key=value pairs to pass to the ``fromTable``
    method.

Returns
-------
calib : `lsst.ip.isr.IsrCalib`
    Calibration contained within the file.

Definition at line 517 of file calibType.py.

◆ readText()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.readText ( cls,
filename,
kwargs = "auto" )
Read calibration representation from a yaml/ecsv file.

Parameters
----------
filename : `str`
    Name of the file containing the calibration definition.
kwargs : `dict` or collections.abc.Mapping`, optional
    Set of key=value pairs to pass to the ``fromDict`` or
    ``fromTable`` methods.

Returns
-------
calib : `~lsst.ip.isr.IsrCalibType`
    Calibration class.

Raises
------
RuntimeError
    Raised if the filename does not end in ".ecsv" or ".yaml".

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 350 of file intrinsicZernikes.py.

◆ requiredAttributes() [1/2]

lsst.ip.isr.calibType.IsrCalib.requiredAttributes ( self)
inherited

Definition at line 162 of file calibType.py.

◆ requiredAttributes() [2/2]

lsst.ip.isr.calibType.IsrCalib.requiredAttributes ( self,
value )
inherited

Definition at line 166 of file calibType.py.

◆ setMetadata()

lsst.ip.isr.calibType.IsrCalib.setMetadata ( self,
metadata )
inherited
Store a copy of the supplied metadata with this calibration.

Parameters
----------
metadata : `lsst.daf.base.PropertyList`
    Metadata to associate with the calibration.  Will be copied and
    overwrite existing metadata.

Reimplemented in lsst.ip.isr.transmissionCurve.IntermediateTransmissionCurve.

Definition at line 186 of file calibType.py.

◆ toDict()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.toDict ( self)
Return a dictionary containing the calibration properties.

The dictionary should be able to be round-tripped through
`fromDict`.

Returns
-------
dictionary : `dict`
    Dictionary of properties.

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 238 of file intrinsicZernikes.py.

◆ toTable()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.toTable ( self)
Construct a list of tables containing the information in this
calibration.

One table is produced per populated coordinate system.  The CCS
table is always emitted; the OCS table is only emitted when the
OCS system holds sample points, so a CCS-only calibration (e.g.
one read from a version 1 file) round-trips to a single table,
exactly as in version 1.  The list of tables should be able to be
round-tripped through `fromTable`.

Returns
-------
tableList : `list` [`astropy.table.Table`]
    List of tables containing the intrinsic zernikes calibration
    information, one per populated coordinate system.

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 302 of file intrinsicZernikes.py.

◆ updateMetadata()

lsst.ip.isr.calibType.IsrCalib.updateMetadata ( self,
camera = None,
detector = None,
filterName = None,
setCalibId = False,
setCalibInfo = False,
setDate = False,
** kwargs )
inherited
Update metadata keywords with new values.

Parameters
----------
camera : `lsst.afw.cameraGeom.Camera`, optional
    Reference camera to use to set ``_instrument`` field.
detector : `lsst.afw.cameraGeom.Detector`, optional
    Reference detector to use to set ``_detector*`` fields.
filterName : `str`, optional
    Filter name to assign to this calibration.
setCalibId : `bool`, optional
    Construct the ``_calibId`` field from other fields.
setCalibInfo : `bool`, optional
    Set calibration parameters from metadata.
setDate : `bool`, optional
    Ensure the metadata ``CALIBDATE`` fields are set to the current
    datetime.
kwargs : `dict` or `collections.abc.Mapping`, optional
    Set of ``key=value`` pairs to assign to the metadata.

Reimplemented in lsst.ip.isr.brighterFatterKernel.BrighterFatterKernel, lsst.ip.isr.calibType.IsrProvenance, lsst.ip.isr.crosstalk.CrosstalkCalib, lsst.ip.isr.electrostaticBrighterFatter.ElectrostaticBrighterFatterDistortionMatrix, lsst.ip.isr.linearize.Linearizer, lsst.ip.isr.photodiodeCorrection.PhotodiodeCorrection, and lsst.ip.isr.ptcDataset.PhotonTransferCurveDataset.

Definition at line 208 of file calibType.py.

◆ updateMetadataFromExposures()

lsst.ip.isr.calibType.IsrCalib.updateMetadataFromExposures ( self,
exposures )
inherited
Extract and unify metadata information.

Parameters
----------
exposures : `list`
    Exposures or other calibrations to scan.

Definition at line 294 of file calibType.py.

◆ validate()

lsst.ip.isr.calibType.IsrCalib.validate ( self,
other = None )
inherited
Validate that this calibration is defined and can be used.

Parameters
----------
other : `object`, optional
    Thing to validate against.

Returns
-------
valid : `bool`
    Returns true if the calibration is valid and appropriate.

Reimplemented in lsst.ip.isr.linearize.Linearizer, and lsst.ip.isr.photodiodeCorrection.PhotodiodeCorrection.

Definition at line 691 of file calibType.py.

◆ writeFits()

lsst.ip.isr.calibType.IsrCalib.writeFits ( self,
filename )
inherited
Write calibration data to a FITS file.

Parameters
----------
filename : `str`
    Filename to write data to.

Returns
-------
used : `str`
    The name of the file used to write the data.

Reimplemented in lsst.ip.isr.transmissionCurve.IntermediateTransmissionCurve.

Definition at line 565 of file calibType.py.

◆ writeText()

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.writeText ( self,
filename,
format = "auto" )
Write the calibration data to a text file.

Parameters
----------
filename : `str`
    Name of the file to write.
format : `str`
    Format to write the file as.  Supported values are:
        ``"auto"`` : Determine filetype from filename.
        ``"yaml"`` : Write as yaml.
        ``"ecsv"`` : Write as ecsv.

Returns
-------
used : `str`
    The name of the file used to write the data.  This may
    differ from the input if the format is explicitly chosen.

Raises
------
RuntimeError
    Raised if filename does not end in a known extension, or
    if all information cannot be written.

Notes
-----
The file is written to YAML/ECSV format and will include any
associated metadata.

Reimplemented from lsst.ip.isr.calibType.IsrCalib.

Definition at line 347 of file intrinsicZernikes.py.

Member Data Documentation

◆ _calibId

str lsst.ip.isr.calibType.IsrCalib._calibId = None
protectedinherited

Definition at line 76 of file calibType.py.

◆ _detectorId

lsst.ip.isr.calibType.IsrCalib._detectorId = None
protectedinherited

Definition at line 74 of file calibType.py.

◆ _detectorName

lsst.ip.isr.calibType.IsrCalib._detectorName = None
protectedinherited

Definition at line 72 of file calibType.py.

◆ _detectorSerial

lsst.ip.isr.calibType.IsrCalib._detectorSerial = None
protectedinherited

Definition at line 73 of file calibType.py.

◆ _filter

lsst.ip.isr.calibType.IsrCalib._filter = None
protectedinherited

Definition at line 75 of file calibType.py.

◆ _instrument

lsst.ip.isr.calibType.IsrCalib._instrument = None
protectedinherited

Definition at line 69 of file calibType.py.

◆ _metadata

lsst.ip.isr.calibType.IsrCalib._metadata = PropertyList()
protectedinherited

Definition at line 80 of file calibType.py.

◆ _OBSTYPE

str lsst.ip.isr.calibType.IsrCalib._OBSTYPE = "generic"
staticprotectedinherited

Definition at line 64 of file calibType.py.

◆ _raftName

lsst.ip.isr.calibType.IsrCalib._raftName = None
protectedinherited

Definition at line 70 of file calibType.py.

◆ _requiredAttributes

lsst.ip.isr.calibType.IsrCalib._requiredAttributes
protectedinherited

Definition at line 115 of file calibType.py.

◆ _SCHEMA

str lsst.ip.isr.calibType.IsrCalib._SCHEMA = "NO SCHEMA"
staticprotectedinherited

Definition at line 65 of file calibType.py.

◆ _seqcksum

lsst.ip.isr.calibType.IsrCalib._seqcksum = None
protectedinherited

Definition at line 79 of file calibType.py.

◆ _seqfile

lsst.ip.isr.calibType.IsrCalib._seqfile = None
protectedinherited

Definition at line 77 of file calibType.py.

◆ _seqname

lsst.ip.isr.calibType.IsrCalib._seqname = None
protectedinherited

Definition at line 78 of file calibType.py.

◆ _slotName

lsst.ip.isr.calibType.IsrCalib._slotName = None
protectedinherited

Definition at line 71 of file calibType.py.

◆ _VERSION

int lsst.ip.isr.calibType.IsrCalib._VERSION = 0
staticprotectedinherited

Definition at line 66 of file calibType.py.

◆ field_x

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.field_x = np.array([])

Definition at line 106 of file intrinsicZernikes.py.

◆ field_x_ocs

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.field_x_ocs = np.array([])

Definition at line 109 of file intrinsicZernikes.py.

◆ field_y

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.field_y = np.array([])

Definition at line 107 of file intrinsicZernikes.py.

◆ field_y_ocs

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.field_y_ocs = np.array([])

Definition at line 110 of file intrinsicZernikes.py.

◆ interpolator

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.interpolator = None

Definition at line 113 of file intrinsicZernikes.py.

◆ interpolator_ocs

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.interpolator_ocs = None

Definition at line 114 of file intrinsicZernikes.py.

◆ log

lsst.ip.isr.calibType.IsrCalib.log = log if log else logging.getLogger(__name__)
inherited

Definition at line 96 of file calibType.py.

◆ noll_indices

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.noll_indices = np.array([])

Definition at line 112 of file intrinsicZernikes.py.

◆ requiredAttributes

lsst.ip.isr.calibType.IsrCalib.requiredAttributes = set(["_OBSTYPE", "_SCHEMA", "_VERSION"])
inherited

Definition at line 90 of file calibType.py.

◆ values

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.values = np.array([])

Definition at line 108 of file intrinsicZernikes.py.

◆ values_ocs

lsst.ip.isr.intrinsicZernikes.IntrinsicZernikes.values_ocs = np.array([])

Definition at line 111 of file intrinsicZernikes.py.


The documentation for this class was generated from the following file: