class astropy.modeling.functional_models.Sersic2D(amplitude=1, r_eff=1, n=4, x_0=0, y_0=0, ellip=0, theta=0.0, **kwargs)[source]#

Bases: Fittable2DModel

Two dimensional Sersic surface brightness profile.


Surface brightness at r_eff.


Effective (half-light) radius.


Sersic index controlling the shape of the profile. Particular values of n are equivalent to the following profiles:

  • n=4 : de Vaucouleurs \(r^{1/4}\) profile

  • n=1 : Exponential profile

  • n=0.5 : Gaussian profile

x_0float, optional

x position of the center.

y_0float, optional

y position of the center.

ellipfloat, optional

Ellipticity of the isophote, defined as 1.0 minus the ratio of the lengths of the semimajor and semiminor axes:

\[ellip = 1 - \frac{b}{a}\]
thetafloat 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 from the positive x axis.

Other Parameters:
fixeddict, 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.


Model formula:

\[I(x, y) = I_{e} \exp\left\{ -b_{n} \left[\left(\frac{r(x, y)}{r_{e}}\right)^{(1/n)} -1\right]\right\}\]

where \(I_{e}\) is the amplitude, \(r_{e}\) is reff, and \(r(x, y)\) is a rotated ellipse defined as:

\[r(x, y)^2 = A^2 + \left(\frac{B}{1 - ellip}\right)^2\]
\[A = (x - x_0) \cos(\theta) + (y - y_0) \sin(\theta)\]
\[B = -(x - x_0) \sin(\theta) + (y - y_0) \cos(\theta)\]

The constant \(b_{n}\) is defined such that \(r_{e}\) contains half the total luminosity. It can be solved for numerically from the following equation:

\[\Gamma(2n) = 2\gamma (2n, b_{n})\]

where \(\Gamma(a)\) is the gamma function and \(\gamma(a, x)\) is the lower incomplete gamma function.



import numpy as np
from astropy.modeling.models import Sersic2D
import matplotlib.pyplot as plt

x, y = np.meshgrid(np.arange(100), np.arange(100))

mod = Sersic2D(amplitude=1, r_eff=25, n=4, x_0=50, y_0=50,
               ellip=0.5, theta=-1)
img = mod(x, y)
log_img = np.log10(img)

fig, ax = plt.subplots()
im = ax.imshow(log_img, origin='lower', interpolation='nearest',
               vmin=-1, vmax=2)
cbar = fig.colorbar(im, ax=ax)
cbar.set_label('Log Brightness', rotation=270, labelpad=25)
cbar.set_ticks([-1, 0, 1, 2])

(png, svg, pdf)


Attributes Summary




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



Names of the parameters that describe models of this type.





Methods Summary

evaluate(x, y, amplitude, r_eff, n, x_0, ...)

Two dimensional Sersic profile function.

Attributes Documentation

amplitude = Parameter('amplitude', value=1.0)#
ellip = Parameter('ellip', value=0.0)#
n = Parameter('n', value=4.0)#
param_names = ('amplitude', 'r_eff', 'n', 'x_0', 'y_0', 'ellip', '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.

r_eff = Parameter('r_eff', value=1.0)#
theta = Parameter('theta', value=0.0)#
x_0 = Parameter('x_0', value=0.0)#
y_0 = Parameter('y_0', value=0.0)#

Methods Documentation

classmethod evaluate(x, y, amplitude, r_eff, n, x_0, y_0, ellip, theta, c=0)[source]#

Two dimensional Sersic profile function.