Skip to main content
`Ctrl`+`K`

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

  Bases: `Fittable2DModel`

  Two dimensional Gaussian model.

  Parameters:
    amplitude `python:float` or `Quantity`.

      Amplitude (peak value) of the Gaussian.

    x_mean `python:float` or `Quantity`.

      Mean of the Gaussian in x.

    y_mean `python:float` or `Quantity`.

      Mean of the Gaussian in y.

    x_stddev `python: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_stddev `python: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).

    theta `python: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_matrix `ndarray`, optional

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

  Other Parameters:
    fixed `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.

    tied `python: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.

    bounds `python: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.

    eqcons `python:list`, optional

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

    ineqcons `python:list`, optional

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

  See also

  `Gaussian1D`, `Box2D`, `Moffat2D`

  Notes

  The `x, y`, `[x,y]_mean`, and `[x,y]_stddev` inputs must have compatible units or be 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

  [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` | 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)

    Two dimensional Gaussian function.

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

    Two dimensional Gaussian function derivative with respect to parameters.