Ellipse2D

class astropy.modeling.functional_models.Ellipse2D(amplitude=1, x_0=0, y_0=0, a=1, b=1, theta=0, **kwargs)[source] [edit on github]

Bases: astropy.modeling.Fittable2DModel

A 2D Ellipse model.

Parameters:

amplitude : float

Value of the ellipse.

x_0 : float

x position of the center of the disk.

y_0 : float

y position of the center of the disk.

a : float

The length of the semimajor axis.

b : float

The length of the semiminor axis.

theta : float

The rotation angle in radians of the semimajor axis. The rotation angle increases counterclockwise from the positive x axis.

Other Parameters:
 

fixed : a dict

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

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

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

eqcons : list

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

ineqcons : list

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

See also

Disk2D, Box2D

Notes

Model formula:

\[\begin{split}f(x, y) = \left \{ \begin{array}{ll} \mathrm{amplitude} & : \left[\frac{(x - x_0) \cos \theta + (y - y_0) \sin \theta}{a}\right]^2 + \left[\frac{-(x - x_0) \sin \theta + (y - y_0) \cos \theta}{b}\right]^2 \leq 1 \\ 0 & : \mathrm{otherwise} \end{array} \right.\end{split}\]

Examples

import numpy as np
from astropy.modeling.models import Ellipse2D
from astropy.coordinates import Angle
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
x0, y0 = 25, 25
a, b = 20, 10
theta = Angle(30, 'deg')
e = Ellipse2D(amplitude=100., x_0=x0, y_0=y0, a=a, b=b,
              theta=theta.radian)
y, x = np.mgrid[0:50, 0:50]
fig, ax = plt.subplots(1, 1)
ax.imshow(e(x, y), origin='lower', interpolation='none', cmap='Greys_r')
e2 = mpatches.Ellipse((x0, y0), 2*a, 2*b, theta.degree, edgecolor='red',
                      facecolor='none')
ax.add_patch(e2)
plt.show()

(png, svg, pdf)

../_images/astropy-modeling-functional_models-Ellipse2D-1.png

Attributes Summary

a
amplitude
b
param_names
theta
x_0
y_0

Methods Summary

evaluate(x, y, amplitude, x_0, y_0, a, b, theta) Two dimensional Ellipse model function.

Attributes Documentation

a
amplitude
b
param_names = ('amplitude', 'x_0', 'y_0', 'a', 'b', 'theta')
theta
x_0
y_0

Methods Documentation

static evaluate(x, y, amplitude, x_0, y_0, a, b, theta)[source] [edit on github]

Two dimensional Ellipse model function.