27 import lsst.daf.persistence
31 __all__ = [
"MapperTests"]
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().getScalar(k), v,
126 msg=
"Failed for key={}".format(k))
129 dataId = self.dataIds[
'raw']
130 butlerLocation = self.mapper.map_processCcd_metadata(dataId)
131 self.assertEqual(butlerLocation.getPythonType(),
"lsst.daf.base.PropertySet")
132 self.assertEqual(butlerLocation.getCppType(),
"PropertySet")
133 self.assertEqual(butlerLocation.getStorageName(),
"BoostStorage")
134 self.assertEqual(butlerLocation.getLocations(), [self.
mapper_data.metadata_output_path])
135 for k, v
in dataId.items():
136 self.assertEqual(butlerLocation.getAdditionalData().getScalar(k), v,
137 msg=
"Failed for key={}".format(k))
140 self.assertEqual(set(self.mapper.keys()), self.
mapper_data.keys)
143 someKeys = set([
'raw',
'processCcd_config',
'processCcd_metadata'])
144 self.assertTrue(set(self.mapper.getDatasetTypes()).issuperset(someKeys))
148 result = self.mapper.getKeys(
"raw", level)
149 self.assertEqual(set(result), expect, msg=
'Failed for level={}'.format(level))
152 self.assertEqual(self.mapper.getDefaultLevel(), self.
mapper_data.default_level)
154 def _test_map(self, butlerLocation, dataId):
155 self.assertEqual(butlerLocation.getPythonType(), self.
mapper_data.map_python_type)
156 self.assertEqual(butlerLocation.getCppType(), self.
mapper_data.map_cpp_type)
157 self.assertEqual(butlerLocation.getStorageName(), self.
mapper_data.map_storage_name)
158 locationList = butlerLocation.getLocations()
159 self.assertEqual(len(locationList), 1)
160 fileName = os.path.basename(locationList[0])
161 self.assertEqual(fileName, self.
mapper_data.raw_filename)
162 for k, v
in dataId.items():
163 self.assertEqual(butlerLocation.getAdditionalData().getScalar(k), v,
164 msg=
"Failed for key={}".format(k))
167 dataId = self.dataIds[
'raw']
168 self.
_test_map(self.mapper.map_raw(dataId), dataId)
169 self.
_test_map(self.mapper.map(
"raw", dataId), dataId)
173 Test expansion of incomplete information of the available data in this 174 obs package's testdata repo. 176 for query, expect
in self.
mapper_data.queryMetadata:
178 result = self.mapper.queryMetadata(
"raw", self.
mapper_data.query_format, query)
179 self.assertEqual(sorted(result), sorted(expect), msg=
"Failed for query={}".format(query))
182 self.assertTrue(self.mapper.canStandardize(
"raw"))
183 self.assertFalse(self.mapper.canStandardize(
"camera"))
184 self.assertFalse(self.mapper.canStandardize(
"processCcd_config"))
185 self.assertFalse(self.mapper.canStandardize(
"processCcd_metadata"))
188 rawImage = lsst.afw.image.DecoratedImageU(self.
mapper_data.path_to_raw)
189 stdImage = self.mapper.standardize(
"raw", rawImage, self.dataIds[
'raw'])
190 self.assertIsInstance(stdImage, lsst.afw.image.ExposureU)
192 def _test_validate(self, dataId):
193 self.assertEqual(self.mapper.validate(dataId), dataId)
def test_can_standardize(self)
def _test_validate(self, dataId)
def test_get_dataset_types(self)
def _test_map(self, butlerLocation, dataId)
def test_get_default_level(self)
def test_get_keys_raw(self)
def setUp_mapper(self, output=None, path_to_raw=None, keys=None, query_format=None, queryMetadata=None, metadata_output_path=None, map_python_type=None, map_cpp_type=None, map_storage_name=None, raw_filename=None, default_level=None, raw_levels=None)
def test_standardize_raw(self)
def test_query_metadata(self)
def test_map_metadata_data(self)
def test_map_config_data(self)