LsstCamPhoSimTranslator#
- class lsst.obs.lsst.translators.LsstCamPhoSimTranslator(header: Mapping[str, Any], filename: str | None = None)#
Bases:
LsstSimTranslatorMetadata translator for LSSTCam PhoSim data.
Attributes Summary
All the valid properties for this translator including extensions.
Path to policy file relative to obs_lsst root.
Mapping of detector name to detector number and serial.
Mapping of detector serial number to raft, number, and name.
Name of this translation class
Methods Summary
can_translate(header[, filename])Indicate whether this translation class can translate the supplied header.
determine_translatable_headers(filename[, ...])Given a file return all the headers usable for metadata translation.
Return value of altaz_begin from headers.
Airmass of the boresight of the telescope.
Return value of boresight_rotation_angle from headers.
Coordinate frame of the instrument rotation angle (options: sky, unknown).
Duration of the exposure with shutter closed (seconds).
Collection name of which this detector is a part.
Name of the detector within the instrument (might not be unique if there are detector groups).
Serial number/string associated with this detector.
Unique (with instrument) integer identifier for this observation.
Actual duration of the exposure (seconds).
The instrument used to observe the exposure.
Object of interest or field name.
Label uniquely identifying this observation (can be related to 'exposure_id').
Type of observation (currently: science, dark, flat, bias, focus).
The bandpass filter used for this observation.
Atmospheric pressure outside the dome.
Relative humidity outside the dome.
Observing program (survey or proposal) identifier.
Temperature outside the dome.
Return value of tracking_radec from headers.
ID of the Visit this Exposure is associated with.
Attributes Documentation
- all_properties: dict[str, PropertyDefinition] = {'altaz_begin': PropertyDefinition(doc='Telescope boresight azimuth and elevation at start of observation.', str_type='astropy.coordinates.AltAz', py_type=<class 'astropy.coordinates.builtin_frames.altaz.AltAz'>, to_simple=<function altaz_to_simple>, from_simple=<function simple_to_altaz>), 'altaz_end': PropertyDefinition(doc='Telescope boresight azimuth and elevation at end of observation.', str_type='astropy.coordinates.AltAz', py_type=<class 'astropy.coordinates.builtin_frames.altaz.AltAz'>, to_simple=<function altaz_to_simple>, from_simple=<function simple_to_altaz>), 'boresight_airmass': PropertyDefinition(doc='Airmass of the boresight of the telescope.', str_type='float', py_type=<class 'float'>, to_simple=None, from_simple=None), 'boresight_rotation_angle': PropertyDefinition(doc='Angle of the instrument in boresight_rotation_coord frame.', str_type='astropy.coordinates.Angle', py_type=<class 'astropy.coordinates.angles.core.Angle'>, to_simple=<function angle_to_simple>, from_simple=<function simple_to_angle>), 'boresight_rotation_coord': PropertyDefinition(doc='Coordinate frame of the instrument rotation angle (options: sky, unknown).', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'can_see_sky': PropertyDefinition(doc='True if the observation is looking at sky, False if it is definitely not looking at the sky. None indicates that it is not known whether sky could be seen.', str_type='bool', py_type=<class 'bool'>, to_simple=None, from_simple=None), 'dark_time': PropertyDefinition(doc='Duration of the exposure with shutter closed (seconds).', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function exptime_to_simple>, from_simple=<function simple_to_exptime>), 'datetime_begin': PropertyDefinition(doc='Time of the start of the observation.', str_type='astropy.time.Time', py_type=<class 'astropy.time.core.Time'>, to_simple=<function datetime_to_simple>, from_simple=<function simple_to_datetime>), 'datetime_end': PropertyDefinition(doc='Time of the end of the observation.', str_type='astropy.time.Time', py_type=<class 'astropy.time.core.Time'>, to_simple=<function datetime_to_simple>, from_simple=<function simple_to_datetime>), 'detector_exposure_id': PropertyDefinition(doc='Unique integer identifier for this detector in this exposure.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'detector_group': PropertyDefinition(doc='Collection name of which this detector is a part. Can be None if there are no detector groupings.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'detector_name': PropertyDefinition(doc='Name of the detector within the instrument (might not be unique if there are detector groups).', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'detector_num': PropertyDefinition(doc='Unique (for instrument) integer identifier for the sensor.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'detector_serial': PropertyDefinition(doc='Serial number/string associated with this detector.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'detector_unique_name': PropertyDefinition(doc='Unique name of the detector within the focal plane, generally combining detector_group with detector_name.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'exposure_group': PropertyDefinition(doc="Label to use to associate this exposure with others (can be related to 'exposure_id').", str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'exposure_id': PropertyDefinition(doc='Unique (with instrument) integer identifier for this observation.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'exposure_time': PropertyDefinition(doc='Actual duration of the exposure (seconds).', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function exptime_to_simple>, from_simple=<function simple_to_exptime>), 'exposure_time_requested': PropertyDefinition(doc='Requested duration of the exposure (seconds).', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function exptime_to_simple>, from_simple=<function simple_to_exptime>), 'focus_z': PropertyDefinition(doc='Defocal distance.', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function focusz_to_simple>, from_simple=<function simple_to_focusz>), 'group_counter_end': PropertyDefinition(doc='Observation counter for the end of the exposure group. Depending on the instrument the relevant group may be visit_id or exposure_group.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'group_counter_start': PropertyDefinition(doc='Observation counter for the start of the exposure group.Depending on the instrument the relevant group may be visit_id or exposure_group.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'has_simulated_content': PropertyDefinition(doc='Boolean indicating whether any part of this observation was simulated.', str_type='bool', py_type=<class 'bool'>, to_simple=None, from_simple=None), 'instrument': PropertyDefinition(doc='The instrument used to observe the exposure.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'location': PropertyDefinition(doc='Location of the observatory.', str_type='astropy.coordinates.EarthLocation', py_type=<class 'astropy.coordinates.earth.EarthLocation'>, to_simple=<function earthlocation_to_simple>, from_simple=<function simple_to_earthlocation>), 'object': PropertyDefinition(doc='Object of interest or field name.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'observation_counter': PropertyDefinition(doc='Counter of this observation. Can be counter within observing_day or a global counter. Likely to be observatory specific.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'observation_id': PropertyDefinition(doc="Label uniquely identifying this observation (can be related to 'exposure_id').", str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'observation_reason': PropertyDefinition(doc="Reason this observation was taken, or its purpose ('science' and 'calibration' are common values)", str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'observation_type': PropertyDefinition(doc='Type of observation (currently: science, dark, flat, bias, focus).', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'observing_day': PropertyDefinition(doc='Integer in YYYYMMDD format corresponding to the day of observation.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None), 'observing_day_offset': PropertyDefinition(doc='Offset to subtract from an observation date when calculating the observing day. Conversely, the offset to add to an observing day when calculating the time span of a day.', str_type='astropy.time.TimeDelta', py_type=<class 'astropy.time.core.TimeDelta'>, to_simple=<function timedelta_to_simple>, from_simple=<function simple_to_timedelta>), 'physical_filter': PropertyDefinition(doc='The bandpass filter used for this observation.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'pressure': PropertyDefinition(doc='Atmospheric pressure outside the dome.', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function pressure_to_simple>, from_simple=<function simple_to_pressure>), 'relative_humidity': PropertyDefinition(doc='Relative humidity outside the dome.', str_type='float', py_type=<class 'float'>, to_simple=None, from_simple=None), 'science_program': PropertyDefinition(doc='Observing program (survey or proposal) identifier.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'telescope': PropertyDefinition(doc='Full name of the telescope.', str_type='str', py_type=<class 'str'>, to_simple=None, from_simple=None), 'temperature': PropertyDefinition(doc='Temperature outside the dome.', str_type='astropy.units.Quantity', py_type=<class 'astropy.units.quantity.Quantity'>, to_simple=<function temperature_to_simple>, from_simple=<function simple_to_temperature>), 'tracking_radec': PropertyDefinition(doc='Requested RA/Dec to track.', str_type='astropy.coordinates.SkyCoord', py_type=<class 'astropy.coordinates.sky_coordinate.SkyCoord'>, to_simple=<function skycoord_to_simple>, from_simple=<function simple_to_skycoord>), 'visit_id': PropertyDefinition(doc='ID of the Visit this Exposure is associated with.\n\nScience observations should essentially always be\nassociated with a visit, but calibration observations\nmay not be.', str_type='int', py_type=<class 'int'>, to_simple=None, from_simple=None)}#
All the valid properties for this translator including extensions.
- cameraPolicyFile = 'policy/phosim.yaml'#
Path to policy file relative to obs_lsst root.
- detectorMapping = None#
Mapping of detector name to detector number and serial.
- detectorSerials = None#
Mapping of detector serial number to raft, number, and name.
- name: str | None = 'LSSTCam-PhoSim'#
Name of this translation class
Methods Documentation
- classmethod can_translate(header, filename=None)#
Indicate whether this translation class can translate the supplied header.
There is no
INSTRUMEheader in PhoSim data. Instead we use theCREATORheader.Parameters#
- header
dict-like Header to convert to standardized form.
- filename
str, optional Name of file being translated.
Returns#
- can
bool Trueif the header is recognized by this class.Falseotherwise.
- header
- classmethod determine_translatable_headers(filename, primary=None)#
Given a file return all the headers usable for metadata translation.
Phosim splits useful metadata between the primary header and the amplifier headers. A single header is returned as a merge of the first two.
Parameters#
- filename
strorlsst.resources.ResourcePathExpression Path to a file in a format understood by this translator.
- primary
dict-like, optional The primary header obtained by the caller. This is sometimes already known, for example if a system is trying to bootstrap without already knowing what data is in the file. Will be ignored.
Yields#
- headersiterator of
dict-like The primary header merged with the secondary header.
Notes#
This translator class is specifically tailored to raw PhoSim data and is not designed to work with general FITS files. The normal paradigm is for the caller to have read the first header and then called
determine_translator()on the result to work out which translator class to then call to obtain the real headers to be used for translation.- filename
- to_altaz_begin() Any#
Return value of altaz_begin from headers.
Telescope boresight azimuth and elevation at start of observation.
Returns#
- altaz_begin
astropy.coordinates.AltAz The translated property.
- altaz_begin
- to_boresight_airmass() Any#
Airmass of the boresight of the telescope.
Returns#
- translation
float Translated value derived from the header.
- translation
- to_boresight_rotation_angle() Any#
Return value of boresight_rotation_angle from headers.
Angle of the instrument in boresight_rotation_coord frame.
Returns#
- boresight_rotation_angle
astropy.coordinates.Angle The translated property.
- boresight_rotation_angle
- to_boresight_rotation_coord() Any#
Coordinate frame of the instrument rotation angle (options: sky, unknown).
Returns#
- translation
str Translated property.
- translation
- to_dark_time() Any#
Duration of the exposure with shutter closed (seconds).
Returns#
- translation
astropy.units.Quantity Translated value derived from the header.
- translation
- to_detector_group() Any#
Collection name of which this detector is a part. Can be None if there are no detector groupings.
Returns#
- translation
str Translated value derived from the header.
- translation
- to_detector_name() Any#
Name of the detector within the instrument (might not be unique if there are detector groups).
Returns#
- translation
str Translated value derived from the header.
- translation
- to_detector_serial() Any#
Serial number/string associated with this detector.
Returns#
- translation
str Translated value derived from the header.
- translation
- to_exposure_id() Any#
Unique (with instrument) integer identifier for this observation.
Returns#
- translation
int Translated value derived from the header.
- translation
- to_exposure_time() Any#
Actual duration of the exposure (seconds).
Returns#
- translation
astropy.units.Quantity Translated value derived from the header.
- translation
- to_instrument() Any#
The instrument used to observe the exposure.
Returns#
- translation
str Translated property.
- translation
- to_observation_id() Any#
Label uniquely identifying this observation (can be related to ‘exposure_id’).
Returns#
- translation
str Translated value derived from the header.
- translation
- to_observation_type() Any#
Type of observation (currently: science, dark, flat, bias, focus).
Returns#
- translation
str Translated property.
- translation
- to_physical_filter() Any#
The bandpass filter used for this observation.
Returns#
- translation
str Translated value derived from the header.
- translation
- to_pressure() Any#
Atmospheric pressure outside the dome.
Returns#
- translation
astropy.units.Quantity Translated value derived from the header.
- translation
- to_relative_humidity() Any#
Relative humidity outside the dome.
Returns#
- translation
float Translated property.
- translation
- to_science_program() Any#
Observing program (survey or proposal) identifier.
Returns#
- translation
str Translated value derived from the header.
- translation
- to_temperature() Any#
Temperature outside the dome.
Returns#
- translation
astropy.units.Quantity Translated value derived from the header.
- translation
- to_tracking_radec() Any#
Return value of tracking_radec from headers.
Requested RA/Dec to track.
Returns#
- tracking_radec
astropy.coordinates.SkyCoord The translated property.
- tracking_radec
- to_visit_id() Any#
ID of the Visit this Exposure is associated with.
Science observations should essentially always be associated with a visit, but calibration observations may not be.
- translation
int Translated value derived from the header.
- translation