Brief overview of PSF Photometry: Google Summer of Code project for Astropy/Photutils

Hi all!

First things first; the following links point out to the pull requests that I worked on during the course of my GSoC project:

My project was entitled “Implement Point Spread Function (PSF) photometry for fitting several overlapping objects at once”. The basic question is, given an astronomical image, “How to estimate the flux and the positions of each star when there exist overlap between them?”.

To make our lives easier, we broke this question in smaller ones, for instance, “Which stars are overlapping?”. To answer this question, we implemented (#369 ) the GROUP algorithm proposed by Stetson (1987) which is used in the IRAF/DAOPHOT software.

It is assumed that the point spread function (which is the optical system’s impulsive response) has a known model with unknown parameters (and we would like to estimate them). Mathematically, assume that $\Theta$ is the parameter space (i.e. the space of possible values that the parameters can assume).

Usually, the parameters are the center position and the flux of the star. In this case, $\Theta$ is reduced to $\mathbb{R}^3$.

Consider that $g_{\theta}$ is the PSF model (for example a Gaussian model),$\theta \in \Theta$ , then the model for a group of $n$ stars is given as

$$g_{\gamma} = \sum_{i=1}^{n}g_{\theta_i},$$ in which $\gamma \triangleq (\theta_1, \theta_2, ..., \theta_n)$.

Note that, the space of possible solutions is not the $\mathbb{R}^3$ space anymore, it is the $\mathbb{R}^{3n}$ space =o

Fortunately, Scipy scientists already implemented awesome optimization algorithms and some of them are encapsulated in astropy.modeling :)

After finding the groups of stars, the algorithm proceeds to fit the stars in each group simultaneously. Right after fitting a given group, that group is subtracted from the original image (forming a “residual image”).

All these steps are enclosed in DAOPhotPSFPhotometry class, which is the main contribution of my project GSoC project.

In addition, please, see this notebook here for examples on how to use DAOPhotPSFPhotometry.