opticam_new.reduction.photometers ================================= .. py:module:: opticam_new.reduction.photometers Classes ------- .. autoapisummary:: opticam_new.reduction.photometers.BasePhotometer opticam_new.reduction.photometers.SimplePhotometer opticam_new.reduction.photometers.OptimalPhotometer Module Contents --------------- .. py:class:: BasePhotometer(match_sources = True, source_matching_tolerance = 2.0, local_background_estimator = None) Bases: :py:obj:`abc.ABC` Base class for performing photometry on OPTICAM catalogues. .. py:attribute:: match_sources :value: True .. py:attribute:: source_matching_tolerance :value: 2.0 .. py:attribute:: scale_factor :value: 1 .. py:attribute:: local_background_estimator :value: None .. py:method:: compute(image, image_err, source_coords, image_coords, psf_params) :abstractmethod: Perform photometry on the given image using the provided source coordinates and PSF parameters. If defining a custom photometer, this method must be implemented. The resulting dictionary must contain 'flux' and 'flux_err' keys, as well as any additional metrics that the photometer computes. The time stamps for each image are handled by the catalogue, and so they do not need to be included in the results dictionary. Parameters ---------- image : NDArray The image. If `local_background_estimator` is undefined, this image will be background subtracted. image_err : NDArray The error in the image. source_coords : NDArray The source coordinates in the catalogue. image_coords : None | NDArray The source coordinates in the image. If `match_sources` is True, this will be used to match sources in the image to sources in the catalogue. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] A dictionary containing the results of the photometry. The dictionary must contain 'flux' and 'flux_error' keys, as well as any additional metrics that the photometer computes. The time stamps for each image are handled by the catalogue, and so they do not need to be included in the results dictionary. .. py:class:: SimplePhotometer(match_sources = True, source_matching_tolerance = 2.0, local_background_estimator = None) Bases: :py:obj:`BasePhotometer` A simple photometer that provides simple aperture photometry routines with support for local background estimations using annuli. .. py:method:: compute(image, image_err, source_coords, image_coords, psf_params) Compute the simple photometry for the given image using the provided source coordinates and PSF parameters. Parameters ---------- image : NDArray The image. If `local_background_estimator` is undefined, this image will be background subtracted. image_err : NDArray The error in the image. source_coords : NDArray The source coordinates in the catalogue. image_coords : None | NDArray The source coordinates in the image. If `match_sources` is True, this will be used to match sources in the image to sources in the catalogue. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] The results of the photometry .. py:method:: compute_aperture_flux(data, error, position, psf_params) Compute the aperture flux of a source in the image. Parameters ---------- data : NDArray The image. error : NDArray The error in the image. position : NDArray The position of the source. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Tuple[float, float] | Tuple[float, float, float, float] The flux and flux error. If `local_background_estimator` is defined, the background and its error are also returned. .. py:method:: get_position(source_coords, image_coords, source_index, psf_params) Get the position of a source in an image. Parameters ---------- source_coords : NDArray The source coordinates in the catalogue. image_coords : NDArray | None The source coordinates in the image. source_index : int The source index. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- NDArray The source coordinates. .. py:method:: get_closest_source(source_coords, image_coords, source_index, psf_params) Given a source, find the closest source in the catalogue. Parameters ---------- source_coords : NDArray The source coordinates in the catalogue. image_coords : NDArray | None The source coordinates in the image. source_index : int The source index. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- NDArray | None The coordinates of the closest source. .. py:method:: define_results_dict() Define a results dictionary for the photometer depending on whether `local_background_estimator` is defined. Returns ------- Dict[str, List] The results dictionary with keys 'flux', 'flux_error'. If `local_background_estimator` is defined, the dictionary will also contain 'background' and 'background_error'. .. py:method:: pad_results_dict(results) Pad the results dictionary with None values for flux and flux error, and background and background error if `local_background_estimator' is defined. This is used when a source cannot be matched or its position is invalid. Parameters ---------- results : Dict[str, List] The results dictionary to pad. Returns ------- Dict[str, List] The padded results dictionary. .. py:method:: populate_results_dict(results, phot_function, image, image_err, position, psf_params) Populate the results dictionary with the computed flux, flux error, and background (if applicable) using the provided photometry function. Parameters ---------- results : Dict[str, List] The results dictionary to populate. phot_function : Callable The photometry function to use for computing the flux and flux error. This function should take the image, image error, position, and PSF parameters as arguments and return the flux and flux error, and optionally the background and background error if `local_background_estimator` is defined. image : NDArray The image. image_err : NDArray The error in the image. position : NDArray The position of the source in the image. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] The updated results dictionary with the computed flux, flux error, and background (if applicable). .. py:class:: OptimalPhotometer(match_sources = True, source_matching_tolerance = 2.0, local_background_estimator = None) Bases: :py:obj:`SimplePhotometer` A photometer that implements the optimal photometry method described in Naylor 1998, MNRAS, 296, 339-346. .. py:method:: compute(image, image_err, source_coords, image_coords, psf_params) Compute the optimal photometry for each source in the image using the method described in Naylor 1998, MNRAS, 296, 339-346. Parameters ---------- image : NDArray The image. If `local_background_estimator` is undefined, this image will be background subtracted. image_err : NDArray The error in the image. source_coords : NDArray The source coordinates in the catalogue. image_coords : None | NDArray The source coordinates in the image. If `match_sources` is True, this will be used to match sources in the image to sources in the catalogue. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] The results of the photometry, including 'flux', 'flux_error', and optionally 'background' and 'background_error' if `local_background_estimator` is defined. .. py:method:: compute_optimal_flux(image, error, position, psf_params) Compute the optimal flux of a source in the image as described in Naylor 1998, MNRAS, 296, 339-346. Parameters ---------- image : NDArray The image. error : NDArray The error in the image. position : NDArray The position of the source in the image, given as (y, x) coordinates. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Tuple[float, float] | Tuple[float, float, float, float] The flux and flux error. If `local_background_estimator` is defined, the background and its error are also returned.