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: Fittable2DModel

Two dimensional Gaussian model.

Parameters:
amplitudepython:float or Quantity.

Amplitude (peak value) of the Gaussian.

x_meanpython:float or Quantity.

Mean of the Gaussian in x.

y_meanpython:float or Quantity.

Mean of the Gaussian in y.

x_stddevpython:float or Quantity 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_stddevpython:float or Quantity 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).

thetapython:float or Quantity, optional.

The rotation angle as an angular quantity (Quantity or Angle) or a value in radians (as a float). 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 python: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.

tiedpython:dict, 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.

boundspython:dict, 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.

eqconspython:list, optional

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

ineqconspython:list, optional

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

Notes

Either all or none of input x, y, [x,y]_mean and [x,y]_stddev must be provided consistently with compatible units or as unitless numbers.

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

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

Names of the parameters that describe models of this type.

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')

Names of the parameters that describe models of this type.

The parameters in this tuple are in the same order they should be passed in when initializing a model of a specific type. Some types of models, such as polynomial models, have a different number of parameters depending on some other property of the model, such as the degree.

When defining a custom model class the value of this attribute is automatically set by the Parameter attributes defined in the class body.

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