311 fp = source.getFootprint()
312 peaks = fp.getPeaks()
313 peaksF = [pk.getF()
for pk
in peaks]
316 fmask.setXY0(fbb.getMinX(), fbb.getMinY())
317 fp.spans.setMask(fmask, 1)
319 psf = exposure.getPsf()
320 psfSigPix = psf.computeShape(psf.getAveragePosition()).getDeterminantRadius()
322 subimage = afwImage.ExposureF(exposure, bbox=fbb, deep=
True)
323 cpsf = deblendBaseline.CachingPsf(psf)
327 return source.getTable().copyRecord(source)
330 speaks = [(p.getPeakValue(), p)
for p
in peaks]
332 dpeaks = [speaks[0][1], speaks[-1][1]]
341 fpres = deblendBaseline.deblend(fp, exposure.getMaskedImage(), psf, psfFwhmPix,
350 fpres = deblendBaseline.DeblenderResult(fp, exposure.getMaskedImage(), psf, psfFwhmPix, self.
log)
352 for pki, (pk, pkres, pkF)
in enumerate(
zip(dpeaks, fpres.deblendedParents[0].peaks, peaksF)):
353 self.
log.debug(
'Peak %i', pki)
354 deblendBaseline._fitPsf(fp, fmask, pk, pkF, pkres, fbb, dpeaks, peaksF, self.
log,
360 deblendedSource = source.getTable().copyRecord(source)
361 deblendedSource.setParent(source.getId())
362 peakList = deblendedSource.getFootprint().getPeaks()
365 for i, peak
in enumerate(fpres.deblendedParents[0].peaks):
366 if peak.psfFitFlux > 0:
370 c = peak.psfFitCenter
371 self.
log.
info(
"deblended.centroid.dipole.psf.%s %f %f",
373 self.
log.
info(
"deblended.chi2dof.dipole.%s %f",
374 suffix, peak.psfFitChisq / peak.psfFitDof)
375 self.
log.
info(
"deblended.flux.dipole.psf.%s %f",
376 suffix, peak.psfFitFlux * np.sum(peak.templateImage.array))
377 peakList.append(peak.peak)
378 return deblendedSource