Skip to main content
`Ctrl`+`K`

# Sersic1D

class astropy.modeling.functional_models.Sersic1D(amplitude=1, r_eff=1, n=4, **kwargs)

  Bases: `Fittable1DModel`

  One dimensional Sersic surface brightness profile.

  Parameters:
    amplitude `python:float`

      Surface brightness at `r_eff`.

    r_eff `python:float`

      Effective (half-light) radius.

    n `python:float`

      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

  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`, `Moffat1D`, `Lorentz1D`

  Notes

  The `r` and `r_eff` inputs must have compatible units or be unitless numbers.

  Model formula:

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

  where \(I_{e}\) is the `amplitude` and \(r_{e}\) is `reff`.

  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.

  References

  [1]

  http://ned.ipac.caltech.edu/level5/March05/Graham/Graham2.html

  Examples

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

      plt.figure()
      plt.subplot(111, xscale='log', yscale='log')
      s1 = Sersic1D(amplitude=1, r_eff=5)
      r = np.arange(0, 100, 0.01)

      for n in range(1, 10):
           s1.n = n
           plt.plot(r, s1(r))

      plt.axis([1e-1, 30, 1e-2, 1e3])
      plt.xlabel('log Radius')
      plt.ylabel('log Surface Brightness')
      plt.text(0.25, 1.5, 'n=1')
      plt.text(0.25, 300, 'n=10')
      plt.xticks([])
      plt.yticks([])
      plt.show()

  (`png`, `svg`, `pdf`)

  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).
  `n` |
  `param_names` | Names of the parameters that describe models of this type.
  `r_eff` |

  Methods Summary

  `evaluate`(r, amplitude, r_eff, n) | One dimensional Sersic profile function.

  Attributes Documentation

  amplitude = Parameter('amplitude', value=1.0)
  input_units
  n = Parameter('n', value=4.0)
  param_names = ('amplitude', 'r_eff', 'n')

    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)

  Methods Documentation

  classmethod evaluate(r, amplitude, r_eff, n)

    One dimensional Sersic profile function.