1 from __future__
import absolute_import, division, print_function
2 from future.utils
import with_metaclass
28 import lsst.utils.tests
29 import lsst.daf.persistence
36 Generic tests of obs_* package mapper functionality.
38 In the subclasses's setUp():
39 * Call setUp_mapper() to fill in required parameters.
48 metadata_output_path=
None,
51 map_storage_name=
None,
57 Set up the necessary variables for mapper tests.
63 full path to output repository (can be the same as data_dir input repository)
65 full path to the raw file referenced by dataIds['raw']
67 dictionary keys that this mapper should contain
69 format list for the results portion of queryMetadata
70 queryMetadata : `tuple` of (`dict`, `tuple`)
71 dataIds and the results of calling them in queryMetadata
72 metadata_output_path : `str`
73 path to metadata output associated with dataIds['raw']
74 map_python_type : `str`
75 full python type specification returned by the mapper for dataIds['raw']
77 C++ type specification returned by the mapper for dataIds['raw']
78 map_storage_name : `str`
79 butler name for the storage type dataIds['raw']
81 Name of the raw files returned by the mapper for dataIds['raw']
83 value returned from mapper.getDefaultLevel
84 raw_levels : `tuple` of (`str`, `set` of `str`)
85 (level, expect) level and expected mapper return for mapper.getKeys('raw', level)
92 'metadata_output_path',
100 MapperData = collections.namedtuple(
"MapperData", fields)
102 path_to_raw=path_to_raw,
104 query_format=query_format,
105 queryMetadata=queryMetadata,
106 metadata_output_path=metadata_output_path,
107 map_python_type=map_python_type,
108 map_cpp_type=map_cpp_type,
109 map_storage_name=map_storage_name,
110 raw_filename=raw_filename,
111 default_level=default_level,
112 raw_levels=raw_levels,
116 dataId = self.dataIds[
'raw']
117 butlerLocation = self.mapper.map(
"processCcd_config_filename", dataId)
118 self.assertEqual(butlerLocation.getPythonType(),
"lsst.pipe.tasks.processCcd.ProcessCcdConfig")
119 self.assertEqual(butlerLocation.getCppType(),
"Config")
120 self.assertEqual(butlerLocation.getStorageName(),
"ConfigStorage")
121 processCcd_path = os.path.join(
"config",
"processCcd.py")
122 self.assertEqual(self.mapper.root, butlerLocation.getStorage().root)
123 self.assertEqual(butlerLocation.getLocations(), [processCcd_path])
124 for k, v
in dataId.items():
125 self.assertEqual(butlerLocation.getAdditionalData().get(k), v, msg=
"Failed for key={}".format(k))
128 dataId = self.dataIds[
'raw']
129 butlerLocation = self.mapper.map_processCcd_metadata(dataId)
130 self.assertEqual(butlerLocation.getPythonType(),
"lsst.daf.base.PropertySet")
131 self.assertEqual(butlerLocation.getCppType(),
"PropertySet")
132 self.assertEqual(butlerLocation.getStorageName(),
"BoostStorage")
133 self.assertEqual(butlerLocation.getLocations(), [self.mapper_data.metadata_output_path])
134 for k, v
in dataId.items():
135 self.assertEqual(butlerLocation.getAdditionalData().get(k), v, msg=
"Failed for key={}".format(k))
138 self.assertEqual(set(self.mapper.keys()), self.mapper_data.keys)
141 someKeys = set([
'raw',
'processCcd_config',
'processCcd_metadata'])
142 self.assertTrue(set(self.mapper.getDatasetTypes()).issuperset(someKeys))
145 for level, expect
in self.mapper_data.raw_levels:
146 result = self.mapper.getKeys(
"raw", level)
147 self.assertEqual(set(result), expect, msg=
'Failed for level={}'.format(level))
150 self.assertEqual(self.mapper.getDefaultLevel(), self.mapper_data.default_level)
152 def _test_map(self, butlerLocation, dataId):
153 self.assertEqual(butlerLocation.getPythonType(), self.mapper_data.map_python_type)
154 self.assertEqual(butlerLocation.getCppType(), self.mapper_data.map_cpp_type)
155 self.assertEqual(butlerLocation.getStorageName(), self.mapper_data.map_storage_name)
156 locationList = butlerLocation.getLocations()
157 self.assertEqual(len(locationList), 1)
158 fileName = os.path.basename(locationList[0])
159 self.assertEqual(fileName, self.mapper_data.raw_filename)
160 for k, v
in dataId.items():
161 self.assertEqual(butlerLocation.getAdditionalData().get(k), v, msg=
"Failed for key={}".format(k))
164 dataId = self.dataIds[
'raw']
165 self.
_test_map(self.mapper.map_raw(dataId), dataId)
166 self.
_test_map(self.mapper.map(
"raw", dataId), dataId)
170 Test expansion of incomplete information of the available data in this
171 obs package's testdata repo.
173 for query, expect
in self.mapper_data.queryMetadata:
175 result = self.mapper.queryMetadata(
"raw", self.mapper_data.query_format, query)
176 self.assertEqual(sorted(result), sorted(expect), msg=
"Failed for query={}".format(query))
179 self.assertTrue(self.mapper.canStandardize(
"raw"))
180 self.assertFalse(self.mapper.canStandardize(
"camera"))
181 self.assertFalse(self.mapper.canStandardize(
"processCcd_config"))
182 self.assertFalse(self.mapper.canStandardize(
"processCcd_metadata"))
185 rawImage = lsst.afw.image.DecoratedImageU(self.mapper_data.path_to_raw)
186 stdImage = self.mapper.standardize(
"raw", rawImage, self.dataIds[
'raw'])
187 self.assertIsInstance(stdImage, lsst.afw.image.ExposureU)
189 def _test_validate(self, dataId):
190 self.assertEqual(self.mapper.validate(dataId), dataId)
def test_map_metadata_data
def test_get_dataset_types
def test_get_default_level