351 def build_catexps(self, butlerQC, inputRefs, inputs) -> list[CatalogExposureInputs]:
352 id_tp = self.config.idGenerator.apply(butlerQC.quantum.dataId).catalog_id
354 if self.config.use_cell_coadds:
355 keys = [
"cats_meas",
"coadds_cell",
"backgrounds"]
357 keys = [
"cats_meas",
"coadds"]
358 has_psf_models =
"models_psf" in inputs
360 keys.append(
"models_psf")
361 input_refs_objs = {key: (getattr(inputRefs, key), inputs[key])
for key
in keys}
363 key: {dRef.dataId: obj
for dRef, obj
in zip(refs, objs, strict=
True)}
364 for key, (refs, objs)
in input_refs_objs.items()
366 cats = inputs_sorted[
"cats_meas"]
367 if self.config.use_cell_coadds:
369 for data_id, background
in inputs_sorted[
"backgrounds"].items():
370 mcc = inputs_sorted[
"coadds_cell"][data_id]
371 stitched_coadd = mcc.stitch()
372 exposure = stitched_coadd.asExposure()
373 exposure.image -= background.getImage()
374 exps[data_id] = exposure
376 exps = inputs_sorted[
"coadds"]
377 models_psf = inputs_sorted[
"models_psf"]
if has_psf_models
else None
378 dataIds = set(cats).union(set(exps))
379 models_scarlet = inputs[
"models_scarlet"]
382 for dataId
in dataIds:
383 catalog = cats[dataId]
384 exposure = exps[dataId]
385 updateCatalogFootprints(
386 modelData=models_scarlet,
389 imageForRedistribution=exposure,
390 removeScarletData=
False,
391 updateFluxColumns=
False,
396 table_psf_fits=models_psf[dataId]
if has_psf_models
else astropy.table.Table(),
398 id_tract_patch=id_tp,
402 raise RuntimeError(f
"Did not build any catexps for {inputRefs=}")
404 for band
in self.config.get_band_sets()[0]:
405 if band
in catexp_dict:
406 catexp = catexp_dict[band]
410 dataId_band = dataId.to_simple(minimal=
True)
411 dataId_band.dataId[
"band"] = band
413 catalog=afwTable.SourceCatalog(),
415 table_psf_fits=astropy.table.Table(),
416 dataId=dataId.from_simple(dataId_band, universe=dataId.universe),
417 id_tract_patch=id_tp,
419 catexps.append(catexp)