Coverage for python/lsst/obs/lsst/ucd.py: 60%
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 LsstUCDCamTranslator
26from ._instrument import LsstUCDCam
28__all__ = ["UcdMapper", "UcdParseTask"]
31class UcdMakeRawVisitInfo(LsstCamMakeRawVisitInfo):
32 """Make a VisitInfo from the FITS header of a raw image."""
33 metadataTranslator = LsstUCDCamTranslator
36class UcdMapper(LsstCamMapper):
37 """The Mapper for the UCDavis camera."""
38 translatorClass = LsstUCDCamTranslator
39 MakeRawVisitInfoClass = UcdMakeRawVisitInfo
40 _gen3instrument = LsstUCDCam
42 _cameraName = "ucd"
43 yamlFileList = ["ucd/ucdMapper.yaml"] + list(LsstCamMapper.yamlFileList)
45 def _extractDetectorName(self, dataId):
46 if 'detectorName' in dataId:
47 detectorName = dataId['detectorName']
48 else:
49 detectorName = LsstUCDCamTranslator.DETECTOR_NAME
50 if 'raftName' in dataId:
51 raftName = dataId['raftName']
52 else:
53 raftName = LsstUCDCamTranslator.compute_detector_group_from_num(dataId['detector'])
54 return f"{raftName}_{detectorName}"
56 def bypass_ccdExposureId_bits(self, datasetType, pythonType, location, dataId):
57 """How many bits are required for the maximum exposure ID"""
58 return 48 # max detector_exposure_id ~ 203012122359590
61class UcdParseTask(LsstCamParseTask):
62 """Parser suitable for UCD data.
64 We need this to parse the UC Davis headers.
65 """
67 _mapperClass = UcdMapper
68 _translatorClass = LsstUCDCamTranslator
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 = int(md.getScalar("SEQNUM"))
90 except KeyError:
91 seqNum = 0
92 return seqNum