374 def build_catexps(self, butlerQC, inputRefs, inputs) -> list[CatalogExposureInputs]:
375 id_tp = self.config.idGenerator.apply(butlerQC.quantum.dataId).catalog_id
377 if self.config.use_cell_coadds
and self.config.image_type ==
"legacy":
378 keys = [
"cats_meas",
"coadds_cell",
"backgrounds"]
380 keys = [
"cats_meas",
"coadds"]
381 has_psf_models =
"models_psf" in inputs
383 keys.append(
"models_psf")
384 input_refs_objs = {key: (getattr(inputRefs, key), inputs[key])
for key
in keys}
386 key: {dRef.dataId: obj
for dRef, obj
in zip(refs, objs, strict=
True)}
387 for key, (refs, objs)
in input_refs_objs.items()
389 cats = inputs_sorted[
"cats_meas"]
390 if self.config.image_type ==
"future":
391 exps = {data_id: coadd.to_legacy()
for data_id, coadd
in inputs_sorted[
"coadds"].items()}
392 elif self.config.use_cell_coadds:
394 for data_id, background
in inputs_sorted[
"backgrounds"].items():
395 mcc = inputs_sorted[
"coadds_cell"][data_id]
396 stitched_coadd = mcc.stitch()
397 exposure = stitched_coadd.asExposure()
398 exposure.image -= background.getImage()
399 exps[data_id] = exposure
401 exps = inputs_sorted[
"coadds"]
405 ref0 = list(inputs_sorted[
"models_psf"].values())[0]
407 if ref0.ref.datasetType.storageClass_name ==
"ArrowAstropy":
408 parameters = {
"strip_astropy_meta_yaml":
False}
410 key: ref.get(parameters=parameters)
411 for key, ref
in inputs_sorted[
"models_psf"].items()
416 dataIds = set(cats).union(set(exps))
417 models_scarlet = inputs[
"models_scarlet"]
420 for dataId
in dataIds:
421 catalog = cats[dataId]
422 exposure = exps[dataId]
423 updateCatalogFootprints(
424 modelData=models_scarlet,
427 imageForRedistribution=exposure,
428 removeScarletData=
False,
429 updateFluxColumns=
False,
434 table_psf_fits=models_psf[dataId]
if has_psf_models
else astropy.table.Table(),
436 id_tract_patch=id_tp,
440 raise RuntimeError(f
"Did not build any catexps for {inputRefs=}")
442 for band
in self.config.get_band_sets()[0]:
443 if band
in catexp_dict:
444 catexp = catexp_dict[band]
448 dataId_band = dataId.to_simple(minimal=
True)
449 dataId_band.dataId[
"band"] = band
451 catalog=afwTable.SourceCatalog(),
453 table_psf_fits=astropy.table.Table(),
454 dataId=dataId.from_simple(dataId_band, universe=dataId.universe),
455 id_tract_patch=id_tp,
457 catexps.append(catexp)