centroid_sources#
- photutils.centroids.centroid_sources(data, xpos, ypos, box_size=11, footprint=None, mask=None, centroid_func=<function centroid_com>, **kwargs)[source]#
Calculate the centroid of sources at the defined positions.
A cutout image centered on each input position will be used to calculate the centroid position. The cutout image is defined either using the
box_size
orfootprint
keyword. Thefootprint
keyword can be used to create a non-rectangular cutout image.- Parameters:
- data2D
ndarray
The 2D image data. The image should be background-subtracted.
- xpos, yposfloat or array_like of float
The initial
x
andy
pixel position(s) of the center position. A cutout image centered on this position be used to calculate the centroid.- box_sizeint or array_like of int, optional
The size of the cutout image along each axis. If
box_size
is a number, then a square cutout ofbox_size
will be created. Ifbox_size
has two elements, they must be in(ny, nx)
order.box_size
must have odd values for both axes. Eitherbox_size
orfootprint
must be defined. If they are both defined, thenfootprint
overridesbox_size
.- footprintbool
ndarray
, optional A 2D boolean array where
True
values describe the local footprint region to cutout.footprint
can be used to create a non-rectangular cutout image, in which case the inputxpos
andypos
represent the center of the minimal bounding box for the inputfootprint
.box_size=(n, m)
is equivalent tofootprint=np.ones((n, m))
. Eitherbox_size
orfootprint
must be defined. If they are both defined, thenfootprint
overridesbox_size
. The samefootprint
is used for all sources.- mask2D bool
ndarray
, optional A 2D boolean array with the same shape as
data
, where aTrue
value indicates the corresponding element ofdata
is masked.- centroid_funccallable, optional
A callable object (e.g., function or class) that is used to calculate the centroid of a 2D array. The
centroid_func
must accept a 2Dndarray
, have amask
keyword and optionally anerror
keyword. The callable object must return a tuple of two 1Dndarray
, representing the x and y centroids. The default iscentroid_com
.- **kwargsdict, optional
Any additional keyword arguments accepted by the
centroid_func
.
- data2D
- Returns:
- xcentroid, ycentroid
ndarray
The
x
andy
pixel position(s) of the centroids. NaNs will be returned where the centroid failed. This is usually due abox_size
that is too small when using a fitting-based centroid function (e.g.,centroid_1dg
,centroid_2dg
, orcentroid_quadratic
).
- xcentroid, ycentroid
Examples
>>> import numpy as np >>> from photutils.centroids import centroid_2dg, centroid_sources >>> from photutils.datasets import make_4gaussians_image
>>> data = make_4gaussians_image() >>> data -= np.median(data[0:30, 0:125]) >>> x_init = (25, 91, 151, 160) >>> y_init = (40, 61, 24, 71) >>> x, y = centroid_sources(data, x_init, y_init, box_size=25, ... centroid_func=centroid_2dg) >>> print(x) [ 24.96807828 89.98684636 149.96545721 160.18810915] >>> print(y) [40.03657613 60.01836631 24.96777946 69.80208702]
(
Source code
,png
,hires.png
,pdf
,svg
)