231 def _createDataIdsAndRefcats(self, filenames, htmLevel, name):
232 """Create mock dataIds and refcat handles.
233
234 Parameters
235 ----------
236 filenames : `list` [`str`]
237 Names of files to use.
238 htmLevel : `int`
239 HTM level to use for the loader.
240 name : `str`
241 Name of reference catalog (for logging).
242
243 Returns
244 -------
245 dataIds : `list` [`MockRefcatDataId`]
246 List of mock dataIds.
247 refCats : `list` [`lsst.pipe.base.InMemoryDatasetHandle`]
248 List of mock deferred dataset handles.
249
250 Raises
251 ------
252 RuntimeError if any file contains sources that cover more than one HTM
253 pixel at level ``htmLevel``.
254 """
255 pixelization = sphgeom.HtmPixelization(htmLevel)
256 htm = esutil.htm.HTM(htmLevel)
257
258 dataIds = []
259 refCats = []
260
261 for filename in filenames:
262 cat = afwTable.BaseCatalog.readFits(filename)
263
264 ids = htm.lookup_id(np.rad2deg(cat['coord_ra']), np.rad2deg(cat['coord_dec']))
265
266 if len(np.unique(ids)) != 1:
267 raise RuntimeError(f"File {filename} contains more than one pixel at level {htmLevel}")
268
269 dataIds.append(MockRefcatDataId(pixelization.pixel(ids[0])))
270 refCats.append(InMemoryDatasetHandle(cat, name=name))
271
272 return dataIds, refCats
273
274