Coverage for python/lsst/obs/lsst/ucd.py : 50%

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 LsstUCDCamTranslator
27__all__ = ["UcdMapper", "UcdParseTask"]
30class UcdMakeRawVisitInfo(LsstCamMakeRawVisitInfo):
31 """Make a VisitInfo from the FITS header of a raw image."""
32 metadataTranslator = LsstUCDCamTranslator
35class UcdMapper(LsstCamMapper):
36 """The Mapper for the UCDavis camera."""
37 translatorClass = LsstUCDCamTranslator
38 MakeRawVisitInfoClass = UcdMakeRawVisitInfo
40 _cameraName = "ucd"
41 yamlFileList = ["ucd/ucdMapper.yaml"] + list(LsstCamMapper.yamlFileList)
43 def _extractDetectorName(self, dataId):
44 if 'detectorName' in dataId:
45 detectorName = dataId['detectorName']
46 else:
47 detectorName = LsstUCDCamTranslator.DETECTOR_NAME
48 if 'raftName' in dataId:
49 raftName = dataId['raftName']
50 else:
51 raftName = LsstUCDCamTranslator.compute_detector_group_from_num(dataId['detector'])
52 return f"{raftName}_{detectorName}"
54 def bypass_ccdExposureId_bits(self, datasetType, pythonType, location, dataId):
55 """How many bits are required for the maximum exposure ID"""
56 return 48 # max detector_exposure_id ~ 203012122359590
59class UcdParseTask(LsstCamParseTask):
60 """Parser suitable for UCD data.
62 We need this to parse the UC Davis headers.
63 """
65 _mapperClass = UcdMapper
66 _translatorClass = LsstUCDCamTranslator
68 def translate_testSeqNum(self, md):
69 """Translate the sequence number
71 Sometimes this is present, sometimes it is not. When it is, return it
72 as an int. When it's not, provide a default value of 0 as an int.
73 This function exists because currently the Gen2 butler's default
74 value providing pathway has trouble with types.
76 Parameters
77 ----------
78 md : `~lsst.daf.base.PropertyList` or `~lsst.daf.base.PropertySet`
79 Image metadata.
81 Returns
82 -------
83 seqNum : `int`
84 The seqNum, with a default value of 0 if required
85 """
86 try:
87 seqNum = int(md.getScalar("SEQNUM"))
88 except KeyError:
89 seqNum = 0
90 return seqNum