Coverage for tests/test_ingest.py : 81%

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_decam.
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 GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22"""Unit tests for gen3 DECam raw data ingest.
23"""
25import unittest
26import os
27import lsst.utils.tests
29from lsst.daf.butler import Butler, DataCoordinate
30from lsst.obs.base.ingest_tests import IngestTestBase
31import lsst.obs.decam
33testDataPackage = "testdata_decam"
34try:
35 testDataDirectory = lsst.utils.getPackageDir(testDataPackage)
36except LookupError:
37 testDataDirectory = None
40class DecamTestBase(IngestTestBase):
42 ingestDir = os.path.dirname(__file__)
43 instrumentClassName = "lsst.obs.decam.DarkEnergyCamera"
44 rawIngestTask = "lsst.obs.decam.DecamRawIngestTask"
47@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
48class DecamIngestTestCase(DecamTestBase, lsst.utils.tests.TestCase):
50 curatedCalibrationDatasetTypes = ("camera", "defects")
52 # DecamRawIngestTask ingests every detector in each raw file, so we
53 # only have to specify one file here, but should get two dataIds
54 # in the output repo.
55 @property
56 def file(self):
57 return os.path.join(testDataDirectory, "rawData", "raw", "raw.fits")
59 dataIds = [dict(instrument="DECam", exposure=229388, detector=25),
60 dict(instrument="DECam", exposure=229388, detector=1)]
61 filterLabel = lsst.afw.image.FilterLabel(physical="z DECam SDSS c0004 9260.0 1520.0", band="z")
63 @property
64 def visits(self):
65 butler = Butler(self.root, collections=[self.outputRun])
66 return {
67 DataCoordinate.standardize(
68 instrument="DECam",
69 visit=229388,
70 universe=butler.registry.dimensions
71 ): [
72 DataCoordinate.standardize(
73 instrument="DECam",
74 exposure=229388,
75 universe=butler.registry.dimensions
76 )
77 ]
78 }
81@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
82class DecamIngestFullFileTestCase(DecamTestBase, lsst.utils.tests.TestCase):
83 """Test ingesting a file that contains all "normal" DECam HDUs.
84 """
86 # No need to test writeCuratedCalibrations again
87 curatedCalibrationDatasetTypes = None
89 # DecamRawIngestTask ingests every detector in each raw file, so we
90 # only have to specify one file here, but should get many dataIds
91 # in the output repo.
92 @property
93 def file(self):
94 return os.path.join(testDataDirectory, "rawData", "raw", "c4d_150227_012718_ori-stripped.fits.fz")
96 dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
97 filterLabel = lsst.afw.image.FilterLabel(physical="r DECam SDSS c0002 6415.0 1480.0", band="r")
99 @property
100 def visits(self):
101 butler = Butler(self.root, collections=[self.outputRun])
102 return {
103 DataCoordinate.standardize(
104 instrument="DECam",
105 visit=415282,
106 universe=butler.registry.dimensions
107 ): [
108 DataCoordinate.standardize(
109 instrument="DECam",
110 exposure=415282,
111 universe=butler.registry.dimensions
112 )
113 ]
114 }
117@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
118class DecamIngestShuffledFullFileTestCase(DecamTestBase, lsst.utils.tests.TestCase):
119 """Test ingesting a file that contains all detectors in a random order.
120 """
122 # No need to test writeCuratedCalibrations again
123 curatedCalibrationDatasetTypes = None
125 # DecamRawIngestTask ingests every detector in each raw file, so we
126 # only have to specify one file here, but should get many dataIds
127 # in the output repo.
128 @property
129 def file(self):
130 return os.path.join(testDataDirectory, "rawData", "raw",
131 "c4d_150227_012718_ori-stripped-shuffled.fits.fz")
133 dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
134 filterLabel = lsst.afw.image.FilterLabel(physical="r DECam SDSS c0002 6415.0 1480.0", band="r")
136 @property
137 def visits(self):
138 butler = Butler(self.root, collections=[self.outputRun])
139 return {
140 DataCoordinate.standardize(
141 instrument="DECam",
142 visit=415282,
143 universe=butler.registry.dimensions
144 ): [
145 DataCoordinate.standardize(
146 instrument="DECam",
147 exposure=415282,
148 universe=butler.registry.dimensions
149 )
150 ]
151 }
154def setup_module(module):
155 lsst.utils.tests.init()
158if __name__ == "__main__": 158 ↛ 159line 158 didn't jump to line 159, because the condition on line 158 was never true
159 lsst.utils.tests.init()
160 unittest.main()