MakeRawVisitInfo¶
-
class
lsst.obs.base.
MakeRawVisitInfo
(log=None, doStripHeader=False)¶ 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 :
logging.Logger
or None Logger to use for messages. (None to use
logging.getLogger("lsst.obs.base.makeRawVisitInfo")
).- doStripHeader :
bool
, optional Strip header keywords from the metadata as they are used?
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])Return an item of metadata. 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)¶ 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) if
doStripHeader
.- 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.- md :
-
static
altitudeFromZenithDistance
(zd)¶ Convert zenith distance to altitude (lsst.afw.geom.Angle)
-
static
centigradeFromKelvin
(tempK)¶ Convert temperature from Kelvin to Centigrade
-
static
defaultMetadata
(value, defaultValue, minimum=None, maximum=None)¶ Return the value if it is not NaN and within min/max, otherwise return defaultValue.
Parameters: Returns: - `float`
The “validated” value.
-
static
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).
NOTE: if we properly compute ERA via UT1 a la DM-8053, we should remove this method.
-
getDarkTime
(argDict)¶ 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: - `float`
Dark time, as inferred from the metadata.
- argdict :
-
getDateAvg
(md, exposureTime)¶ 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)
- md :
-
offsetDate
(date, offsetSec)¶ 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
pascalFromMBar
(mbar)¶ Convert pressure from millibars to Pascals
-
static
pascalFromMmHg
(mmHg)¶ 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)
-
static
pascalFromTorr
(torr)¶ Convert pressure from torr to Pascals
-
popAngle
(md, key, units=Unit("deg"))¶ 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.- key :
str
Key to read from md.
Returns: - `lsst.afw.geom.Angle`
Value of the requested key as an angle; Angle(NaN) if the key is not found.
- md :
-
popFloat
(md, key)¶ Pop a float with a default of NaN.
Parameters: - md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from.- key :
str
Key to read.
Returns: - `float`
Value of the requested key as a float; float(“nan”) if the key is not found.
- md :
-
popIsoDate
(md, key, timesys=None)¶ Pop a FITS ISO date as an lsst.daf.base.DateTime
Parameters: - md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from.- key :
str
Date key to read 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.
- md :
-
popItem
(md, key, default=None)¶ Return an item of metadata.
The item is removed if
doStripHeader
isTrue
.Log a warning if the key is not found.
Parameters: Returns: - `object`
The value of the specified key, using whatever type md.getScalar(key) returns.
-
popMjdDate
(md, key, timesys=None)¶ Get a FITS MJD date as an
lsst.daf.base.DateTime
.Parameters: - md :
lsst.daf.base.PropertyList
orPropertySet
Metadata to pull
key
from.- key :
str
Date key to read 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.
- md :
-
setArgDict
(md, argDict)¶ 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.