1 from __future__
import absolute_import, division, print_function
2 from future.utils
import with_metaclass
29 import lsst.daf.persistence
33 __all__ = [
"MapperTests"]
38 Generic tests of obs_* package mapper functionality. 40 In the subclasses's setUp(): 41 * Call setUp_mapper() to fill in required parameters. 50 metadata_output_path=None,
53 map_storage_name=None,
59 Set up the necessary variables for mapper tests. 65 full path to output repository (can be the same as data_dir input repository) 67 full path to the raw file referenced by dataIds['raw'] 69 dictionary keys that this mapper should contain 71 format list for the results portion of queryMetadata 72 queryMetadata : `tuple` of (`dict`, `tuple`) 73 dataIds and the results of calling them in queryMetadata 74 metadata_output_path : `str` 75 path to metadata output associated with dataIds['raw'] 76 map_python_type : `str` 77 full python type specification returned by the mapper for dataIds['raw'] 79 C++ type specification returned by the mapper for dataIds['raw'] 80 map_storage_name : `str` 81 butler name for the storage type dataIds['raw'] 83 Name of the raw files returned by the mapper for dataIds['raw'] 85 value returned from mapper.getDefaultLevel 86 raw_levels : `tuple` of (`str`, `set` of `str`) 87 (level, expect) level and expected mapper return for mapper.getKeys('raw', level) 94 'metadata_output_path',
102 MapperData = collections.namedtuple(
"MapperData", fields)
104 path_to_raw=path_to_raw,
106 query_format=query_format,
107 queryMetadata=queryMetadata,
108 metadata_output_path=metadata_output_path,
109 map_python_type=map_python_type,
110 map_cpp_type=map_cpp_type,
111 map_storage_name=map_storage_name,
112 raw_filename=raw_filename,
113 default_level=default_level,
114 raw_levels=raw_levels,
118 dataId = self.dataIds[
'raw']
119 butlerLocation = self.mapper.map(
"processCcd_config_filename", dataId)
120 self.assertEqual(butlerLocation.getPythonType(),
"lsst.pipe.tasks.processCcd.ProcessCcdConfig")
121 self.assertEqual(butlerLocation.getCppType(),
"Config")
122 self.assertEqual(butlerLocation.getStorageName(),
"ConfigStorage")
123 processCcd_path = os.path.join(
"config",
"processCcd.py")
124 self.assertEqual(self.mapper.root, butlerLocation.getStorage().root)
125 self.assertEqual(butlerLocation.getLocations(), [processCcd_path])
126 for k, v
in dataId.items():
127 self.assertEqual(butlerLocation.getAdditionalData().get(k), v, msg=
"Failed for key={}".format(k))
130 dataId = self.dataIds[
'raw']
131 butlerLocation = self.mapper.map_processCcd_metadata(dataId)
132 self.assertEqual(butlerLocation.getPythonType(),
"lsst.daf.base.PropertySet")
133 self.assertEqual(butlerLocation.getCppType(),
"PropertySet")
134 self.assertEqual(butlerLocation.getStorageName(),
"BoostStorage")
135 self.assertEqual(butlerLocation.getLocations(), [self.
mapper_data.metadata_output_path])
136 for k, v
in dataId.items():
137 self.assertEqual(butlerLocation.getAdditionalData().get(k), v, 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().get(k), v, msg=
"Failed for key={}".format(k))
166 dataId = self.dataIds[
'raw']
167 self.
_test_map(self.mapper.map_raw(dataId), dataId)
168 self.
_test_map(self.mapper.map(
"raw", dataId), dataId)
172 Test expansion of incomplete information of the available data in this 173 obs package's testdata repo. 175 for query, expect
in self.
mapper_data.queryMetadata:
177 result = self.mapper.queryMetadata(
"raw", self.
mapper_data.query_format, query)
178 self.assertEqual(sorted(result), sorted(expect), msg=
"Failed for query={}".format(query))
181 self.assertTrue(self.mapper.canStandardize(
"raw"))
182 self.assertFalse(self.mapper.canStandardize(
"camera"))
183 self.assertFalse(self.mapper.canStandardize(
"processCcd_config"))
184 self.assertFalse(self.mapper.canStandardize(
"processCcd_metadata"))
187 rawImage = lsst.afw.image.DecoratedImageU(self.
mapper_data.path_to_raw)
188 stdImage = self.mapper.standardize(
"raw", rawImage, self.dataIds[
'raw'])
189 self.assertIsInstance(stdImage, lsst.afw.image.ExposureU)
191 def _test_validate(self, dataId):
192 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)