Coverage for python/lsst/obs/lsst/ts8.py : 63%

Hot-keys 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 LsstTS8Translator
26from ._instrument import LsstTS8
28__all__ = ["Ts8Mapper", "Ts8ParseTask"]
31class Ts8MakeRawVisitInfo(LsstCamMakeRawVisitInfo):
32 """Make a VisitInfo from the FITS header of a raw image."""
33 metadataTranslator = LsstTS8Translator
36class Ts8Mapper(LsstCamMapper):
37 """The Mapper for the ts8 camera."""
38 translatorClass = LsstTS8Translator
39 MakeRawVisitInfoClass = Ts8MakeRawVisitInfo
40 _gen3instrument = LsstTS8
41 _cameraName = "ts8"
42 yamlFileList = ["ts8/ts8Mapper.yaml"] + list(LsstCamMapper.yamlFileList)
44 def _computeCcdExposureId(self, dataId):
45 """Compute the 64-bit (long) identifier for a CCD exposure.
47 Parameters
48 ----------
49 dataId : `dict`
50 Data identifier including ``dayObs`` and ``seqNum``.
51 """
52 if len(dataId) == 0:
53 return 0 # give up. Useful if reading files without a butler
55 return super()._computeCcdExposureId(dataId)
57 def bypass_ccdExposureId_bits(self, datasetType, pythonType, location, dataId):
58 """How many bits are required for the maximum exposure ID"""
59 return 58 # max detector_exposure_id ~ 203012122359599500
62class Ts8ParseTask(LsstCamParseTask):
63 """Parser suitable for ts8 data.
64 """
66 _mapperClass = Ts8Mapper
67 _translatorClass = LsstTS8Translator
69 def translate_testSeqNum(self, md):
70 """Translate the sequence number.
72 Sometimes this is present, sometimes it is not. When it is, return it
73 as an int. When it's not, provide a default value of 0 as an int.
74 This function exists because currently the Gen2 butler's default
75 value providing pathway has trouble with types.
77 Parameters
78 ----------
79 md : `lsst.daf.base.PropertyList` or `~lsst.daf.base.PropertySet`
80 Image metadata.
82 Returns
83 -------
84 seqNum : `int`
85 The seqNum, with a default value of ``0`` if required.
86 """
87 try:
88 seqNum = md.getScalar("SEQNUM")
89 except KeyError:
90 seqNum = 0
91 return seqNum