Coverage for python/lsst/obs/lsst/ts3.py: 65%
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of obs_lsst.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the LSST License Statement and
20# the GNU General Public License along with this program. If not,
21# see <http://www.lsstcorp.org/LegalNotices/>.
22#
23from . import LsstCamMapper, LsstCamMakeRawVisitInfo
24from .ingest import LsstCamParseTask
25from .translators import LsstTS3Translator
26from ._instrument import LsstTS3
28__all__ = ["Ts3Mapper", "Ts3ParseTask"]
31class Ts3MakeRawVisitInfo(LsstCamMakeRawVisitInfo):
32 """Make a VisitInfo from the FITS header of a raw image."""
33 metadataTranslator = LsstTS3Translator
36class Ts3Mapper(LsstCamMapper):
37 """The Mapper for the ts3 camera."""
38 translatorClass = LsstTS3Translator
39 MakeRawVisitInfoClass = Ts3MakeRawVisitInfo
40 _gen3instrument = LsstTS3
41 _cameraName = "ts3"
42 yamlFileList = ["ts3/ts3Mapper.yaml"] + list(LsstCamMapper.yamlFileList)
43 filterDefinitions = LsstTS3.filterDefinitions
45 def _computeCcdExposureId(self, dataId):
46 """Compute the 64-bit (long) identifier for a CCD exposure.
48 Parameters
49 ----------
50 dataId : `dict`
51 Data identifier including ``dayObs`` and ``seqNum``.
52 """
53 if len(dataId) == 0:
54 return 0 # give up. Useful if reading files without a butler
56 return super()._computeCcdExposureId(dataId)
58 def bypass_ccdExposureId_bits(self, datasetType, pythonType, location, dataId):
59 """How many bits are required for the maximum exposure ID"""
60 return 58 # max detector_exposure_id ~ 203012122359599500
63class Ts3ParseTask(LsstCamParseTask):
64 """Parser suitable for ts3 data.
65 """
67 _mapperClass = Ts3Mapper
68 _translatorClass = LsstTS3Translator
70 def translate_testSeqNum(self, md):
71 """Translate the sequence number.
73 Sometimes this is present, sometimes it is not. When it is, return it
74 as an int. When it's not, provide a default value of 0 as an int.
75 This function exists because currently the Gen2 butler's default
76 value providing pathway has trouble with types.
78 Parameters
79 ----------
80 md : `lsst.daf.base.PropertyList` or `~lsst.daf.base.PropertySet`
81 Image metadata.
83 Returns
84 -------
85 seqNum : `int`
86 The seqNum, with a default value of ``0`` if required.
87 """
88 try:
89 seqNum = md.getScalar("SEQNUM")
90 except KeyError:
91 seqNum = 0
92 return seqNum