import matplotlib.pyplot as plt
import numpy as np
from astropy.modeling.models import Gaussian2D
from photutils.aperture import EllipticalAperture
from photutils.datasets import make_noise_image
from photutils.isophote import EllipseGeometry

g = Gaussian2D(100.0, 75, 75, 20, 12, theta=np.deg2rad(40.0))
ny = nx = 150
y, x = np.mgrid[0:ny, 0:nx]
noise = make_noise_image((ny, nx), distribution='gaussian', mean=0.0,
                         stddev=2.0, seed=1234)
data = g(x, y) + noise

geometry = EllipseGeometry(x0=75, y0=75, sma=20, eps=0.5,
                           pa=np.deg2rad(20.0))
aper = EllipticalAperture((geometry.x0, geometry.y0), geometry.sma,
                          geometry.sma * (1 - geometry.eps),
                          theta=geometry.pa)
fig, ax = plt.subplots()
ax.imshow(data, origin='lower')
aper.plot(color='white')