PyDL:docs

- Index
- Modules

### Navigation

- next »
- « previous |
- pydl v1.0.1 »
- SDSS Imaging Data (`pydl.photoop`) »
- sdss_psf_recon

# sdss_psf_recon

pydl.photoop.image.sdss_psf_recon(psfield, xpos, ypos, normalize=None, trimdim=None)

  Reconstruct the PSF at position (`xpos`, `ypos`) in an SDSS field.

  These can be read from the psField files.

  Parameters:
    psfield `FITS_rec`

      A PSF KL-decomposition structure read from a psField file. This is from HDU’s 1 through 5 in a psField file, corresponding to the five filters u, g, r, i, z.

    xpos `int`

      Column position (0-indexed, not 0.5-indexed as PHOTO outputs).

    ypos `int`

      Row position (0-indexed, not 0.5-indexed as PHOTO outputs).

    normalize `int` or `float`, optional

      If set, normalize the integral of the image to this value.

    trimdim `tuple`, optional

      Trimmed dimensions; for example, set to (25, 25) to trim the output PSF image to those dimensions. These dimensions must be odd-valued.

  Returns:
    `numpy.ndarray`

      The 2D reconstructed PSF image, typically dimensioned (51, 51). The center of the PSF is always the central pixel; this function will not apply any sub-pixel shifts.

  Notes

  The SDSS photo PSF is described as a set of eigen-templates, where the mix of these eigen-templates is a simple polynomial function with (x,y) position on the CCD. Typically, there are 4 such 51x51 pixel templates. The polynomial functions are typically quadratic in each dimension, with no cross-terms.

  The formula is the following, where \(i\) is the index of row polynomial order, \(j\) is the index of column polynomial order, and \(k\) is the template index:

  \[\begin{split}a_k &= \sum_i \sum_j (0.001 \times \mathrm{ROWC})^i \times (0.001 \times \mathrm{COLC})^j \times [C_k]_{ij} \\ \mathrm{psfimage} &= \sum_k a_k \mathrm{RROWS}_k\end{split}\]

  The polynomial terms need not be of the same order for each template.

  Examples

      >>> import numpy as np
      >>> from astropy.io import fits
      >>> from astropy.utils.data import get_readable_fileobj
      >>> from pydl.photoop.image import sdss_psf_recon
      >>> psfile = ('https://data.sdss.org/sas/dr14/eboss/photo/redux/301/' +
      ...           '3366/objcs/3/psField-003366-3-0110.fit')
      >>> with get_readable_fileobj(psfile, encoding='binary') as psField:
      ...     with fits.open(psField) as hdulist:
      ...         psf = sdss_psf_recon(hdulist[3].data, 500, 500)