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))
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_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)