Gaussian2D

class astropy.modeling.functional_models.Gaussian2D(amplitude=1, x_mean=0, y_mean=0, x_stddev=None, y_stddev=None, theta=None, cov_matrix=None, **kwargs)[source]

Bases: astropy.modeling.Fittable2DModel

Two dimensional Gaussian model.

Parameters
amplitudefloat

Amplitude of the Gaussian.

x_meanfloat

Mean of the Gaussian in x.

y_meanfloat

Mean of the Gaussian in y.

x_stddevfloat or None

Standard deviation of the Gaussian in x before rotating by theta. Must be None if a covariance matrix (cov_matrix) is provided. If no cov_matrix is given, None means the default value (1).

y_stddevfloat or None

Standard deviation of the Gaussian in y before rotating by theta. Must be None if a covariance matrix (cov_matrix) is provided. If no cov_matrix is given, None means the default value (1).

thetafloat, optional

Rotation angle in radians. The rotation angle increases counterclockwise. Must be None if a covariance matrix (cov_matrix) is provided. If no cov_matrix is given, None means the default value (0).

cov_matrixndarray, optional

A 2x2 covariance matrix. If specified, overrides the x_stddev, y_stddev, and theta defaults.

Other Parameters
fixeda dict, optional

A dictionary {parameter_name: boolean} of parameters to not be varied during fitting. True means the parameter is held fixed. Alternatively the fixed property of a parameter may be used.

tieddict, optional

A dictionary {parameter_name: callable} of parameters which are linked to some other parameter. The dictionary values are callables providing the linking relationship. Alternatively the tied property of a parameter may be used.

boundsdict, optional

A dictionary {parameter_name: value} of lower and upper bounds of parameters. Keys are parameter names. Values are a list or a tuple of length 2 giving the desired range for the parameter. Alternatively, the min and max properties of a parameter may be used.

eqconslist, optional

A list of functions of length n such that eqcons[j](x0,*args) == 0.0 in a successfully optimized problem.

ineqconslist, optional

A list of functions of length n such that ieqcons[j](x0,*args) >= 0.0 is a successfully optimized problem.

Notes

Model formula:

\[f(x, y) = A e^{-a\left(x - x_{0}\right)^{2} -b\left(x - x_{0}\right) \left(y - y_{0}\right) -c\left(y - y_{0}\right)^{2}}\]

Using the following definitions:

\[ \begin{align}\begin{aligned}a = \left(\frac{\cos^{2}{\left (\theta \right )}}{2 \sigma_{x}^{2}} + \frac{\sin^{2}{\left (\theta \right )}}{2 \sigma_{y}^{2}}\right)\\b = \left(\frac{\sin{\left (2 \theta \right )}}{2 \sigma_{x}^{2}} - \frac{\sin{\left (2 \theta \right )}}{2 \sigma_{y}^{2}}\right)\\c = \left(\frac{\sin^{2}{\left (\theta \right )}}{2 \sigma_{x}^{2}} + \frac{\cos^{2}{\left (\theta \right )}}{2 \sigma_{y}^{2}}\right)\end{aligned}\end{align} \]
If using a cov_matrix, the model is of the form:
\[f(x, y) = A e^{-0.5 \left(\vec{x} - \vec{x}_{0}\right)^{T} \Sigma^{-1} \left(\vec{x} - \vec{x}_{0}\right)}\]

where \(\vec{x} = [x, y]\), \(\vec{x}_{0} = [x_{0}, y_{0}]\), and \(\Sigma\) is the covariance matrix:

\[\begin{split}\Sigma = \left(\begin{array}{ccc} \sigma_x^2 & \rho \sigma_x \sigma_y \\ \rho \sigma_x \sigma_y & \sigma_y^2 \end{array}\right)\end{split}\]

\(\rho\) is the correlation between x and y, which should be between -1 and +1. Positive correlation corresponds to a theta in the range 0 to 90 degrees. Negative correlation corresponds to a theta in the range of 0 to -90 degrees.

See [1] for more details about the 2D Gaussian function.

References

1

https://en.wikipedia.org/wiki/Gaussian_function

Attributes Summary

amplitude

input_units

This property is used to indicate what units or sets of units the evaluate method expects, and returns a dictionary mapping inputs to units (or None if any units are accepted).

param_names

theta

x_fwhm

Gaussian full width at half maximum in X.

x_mean

x_stddev

y_fwhm

Gaussian full width at half maximum in Y.

y_mean

y_stddev

Methods Summary

evaluate(x, y, amplitude, x_mean, y_mean, …)

Two dimensional Gaussian function

fit_deriv(x, y, amplitude, x_mean, y_mean, …)

Two dimensional Gaussian function derivative with respect to parameters

Attributes Documentation

amplitude = Parameter('amplitude', value=1.0)
input_units
param_names = ('amplitude', 'x_mean', 'y_mean', 'x_stddev', 'y_stddev', 'theta')
theta = Parameter('theta', value=0.0)
x_fwhm

Gaussian full width at half maximum in X.

x_mean = Parameter('x_mean', value=0.0)
x_stddev = Parameter('x_stddev', value=1.0)
y_fwhm

Gaussian full width at half maximum in Y.

y_mean = Parameter('y_mean', value=0.0)
y_stddev = Parameter('y_stddev', value=1.0)

Methods Documentation

static evaluate(x, y, amplitude, x_mean, y_mean, x_stddev, y_stddev, theta)[source]

Two dimensional Gaussian function

static fit_deriv(x, y, amplitude, x_mean, y_mean, x_stddev, y_stddev, theta)[source]

Two dimensional Gaussian function derivative with respect to parameters