MakeRawVisitInfo¶
-
class
lsst.obs.base.
MakeRawVisitInfo
(log=None)[source]¶ Bases:
object
Base class functor to make a VisitInfo from the FITS header of a raw image.
A subclass will be wanted for each camera. Subclasses should override:
setArgDict
, The override can call the base implementation,- which simply sets exposure time and date of observation
getDateAvg
The design philosophy is to make a best effort and log warnings of problems, rather than raising exceptions, in order to extract as much VisitInfo information as possible from a messy FITS header without the user needing to add a lot of error handling.
However, the methods that transform units are less forgiving; they assume the user provides proper data types, since type errors in arguments to those are almost certainly due to coding mistakes.
Parameters: log :
lsst.log.Log
or NoneLogger to use for messages. (None to use
Log.getLogger("MakeRawVisitInfo")
).Methods Summary
__call__
(md, exposureId)Construct a VisitInfo and strip associated data from the metadata. altitudeFromZenithDistance
(zd)Convert zenith distance to altitude (lsst.afw.geom.Angle) centigradeFromKelvin
(tempK)Convert temperature from Kelvin to Centigrade defaultMetadata
(value, defaultValue[, ...])Return the value if it is not NaN and within min/max, otherwise return defaultValue. eraFromLstAndLongitude
(lst, longitude)Return an approximate Earth Rotation Angle (afw:Angle) computed from local sidereal time and longitude (both as afw:Angle; Longitude shares the afw:Observatory covention: positive values are E of Greenwich). getDarkTime
(argDict)Get the darkTime from the DARKTIME keyword, else expTime, else NaN, getDateAvg
(md, exposureTime)Return date at the middle of the exposure. offsetDate
(date, offsetSec)Return a date offset by a specified number of seconds. pascalFromMBar
(mbar)Convert pressure from millibars to Pascals pascalFromMmHg
(mmHg)Convert pressure from mm Hg to Pascals pascalFromTorr
(torr)Convert pressure from torr to Pascals popAngle
(md, key[, units])Pop an lsst.afw.geom.Angle, whose metadata is in the specified units, with a default of Nan popFloat
(md, key)Pop a float with a default of NaN. popIsoDate
(md, key[, timesys])Pop a FITS ISO date as an lsst.daf.base.DateTime popItem
(md, key[, default])Remove an item of metadata and return the value. popMjdDate
(md, key[, timesys])Get a FITS MJD date as an lsst.daf.base.DateTime
.setArgDict
(md, argDict)Fill an argument dict with arguments for VisitInfo and pop associated metadata Methods Documentation
-
__call__
(md, exposureId)[source]¶ Construct a VisitInfo and strip associated data from the metadata.
Parameters: md :
lsst.daf.base.PropertyList
orlsst.daf.base.PropertySet
Metadata to pull from. Items that are used are stripped from the metadata (except TIMESYS, because it may apply to other keywords).
exposureId :
int
exposure ID
Notes
The basic implementation sets
date
andexposureTime
using typical values found in FITS files and logs a warning if neither can be set.
-
static
altitudeFromZenithDistance
(zd)[source]¶ Convert zenith distance to altitude (lsst.afw.geom.Angle)
-
static
defaultMetadata
(value, defaultValue, minimum=None, maximum=None)[source]¶ Return the value if it is not NaN and within min/max, otherwise return defaultValue.
Parameters: value :
float
metadata value returned by popItem, popFloat, or popAngle
defaultValue :
float`
default value to use if the metadata value is invalid
minimum :
float
Minimum possible valid value, optional
maximum :
float
Maximum possible valid value, optional
Returns: The “validated” value.
-
static
eraFromLstAndLongitude
(lst, longitude)[source]¶ Return an approximate Earth Rotation Angle (afw:Angle) computed from local sidereal time and longitude (both as afw:Angle; Longitude shares the afw:Observatory covention: positive values are E of Greenwich).
NOTE: if we properly compute ERA via UT1 a la DM-8053, we should remove this method.
-
getDarkTime
(argDict)[source]¶ Get the darkTime from the DARKTIME keyword, else expTime, else NaN,
If dark time is available then subclasses should call this method by putting the following in their
__init__
method:argDict['darkTime'] = self.getDarkTime(argDict)
Parameters: argdict :
dict
Dict of arguments.
Returns: Dark time, as inferred from the metadata.
-
getDateAvg
(md, exposureTime)[source]¶ Return date at the middle of the exposure.
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull from. Items that are used are stripped from the metadata (except TIMESYS, because it may apply to other keywords).
exposureTime :
float
Exposure time (sec)
Notes
Subclasses must override. Here is a typical implementation:
dateObs = self.popIsoDate(md, "DATE-OBS") return self.offsetDate(dateObs, 0.5*exposureTime)
-
offsetDate
(date, offsetSec)[source]¶ Return a date offset by a specified number of seconds.
- date :
lsst.daf.base.DateTime
- Date baseline to offset from.
- offsetSec :
float
- Offset, in seconds.
Returns: lsst.daf.base.DateTime
The offset date.
- date :
-
static
pascalFromMmHg
(mmHg)[source]¶ Convert pressure from mm Hg to Pascals
Notes
Could use the following, but astropy.units.cds is not fully compatible with Python 2 as of astropy 1.2.1 (see https://github.com/astropy/astropy/issues/5350#issuecomment-248612824): astropy.units.cds.mmHg.to(astropy.units.pascal, mmHg)
-
popAngle
(md, key, units=Unit("deg"))[source]¶ Pop an lsst.afw.geom.Angle, whose metadata is in the specified units, with a default of Nan
The angle may be specified as a float or sexagesimal string with 1-3 fields.
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from and remove.key :
str
Key to read and remove from md.
Returns: lsst.afw.geom.Angle
Value of the requested key as an angle; Angle(NaN) if the key is not found.
-
popFloat
(md, key)[source]¶ Pop a float with a default of NaN.
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from and remove.key :
str
Key to read and remove from md.
Returns: Value of the requested key as a float; float(“nan”) if the key is not found.
-
popIsoDate
(md, key, timesys=None)[source]¶ Pop a FITS ISO date as an lsst.daf.base.DateTime
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from and remove.key :
str
Date key to read and remove from md.
timesys :
str
Time system as a string (not case sensitive), e.g. “UTC” or None; if None then look for TIMESYS (but do NOT pop it, since it may be used for more than one date) and if not found, use UTC.
Returns: lsst.daf.base.DateTime
Value of the requested date;
DateTime()
if the key is not found.
-
popItem
(md, key, default=None)[source]¶ Remove an item of metadata and return the value.
Log a warning if the key is not found.
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from and remove.key :
str
Metadata key to extract.
default :
object
Value to return if key not found.
Returns: The value of the specified key, using whatever type md.get(key) returns.
-
popMjdDate
(md, key, timesys=None)[source]¶ Get a FITS MJD date as an
lsst.daf.base.DateTime
.Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from and remove.key :
str
Date key to read and remove from md.
timesys :
str
Time system as a string (not case sensitive), e.g. “UTC” or None; if None then look for TIMESYS (but do NOT pop it, since it may be used for more than one date) and if not found, use UTC.
Returns: lsst.daf.base.DateTime
Value of the requested date;
DateTime()
if the key is not found.
-
setArgDict
(md, argDict)[source]¶ Fill an argument dict with arguments for VisitInfo and pop associated metadata
Subclasses are expected to override this method, though the override may wish to call this default implementation, which:
- sets exposureTime from “EXPTIME”
- sets date by calling getDateAvg
Parameters: md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull from. Items that are used are stripped from the metadata (except TIMESYS, because it may apply to other keywords).
argdict :
dict
dict of arguments
Notes
Subclasses should expand this or replace it.