Beispiel #1
0
def test_Trapezoid1D():
    """Regression test for https://github.com/astropy/astropy/issues/1721"""

    model = models.Trapezoid1D(amplitude=4.2, x_0=2.0, width=1.0, slope=3)
    xx = np.linspace(0, 4, 8)
    yy = model(xx)
    yy_ref = [0., 1.41428571, 3.12857143, 4.2, 4.2, 3.12857143, 1.41428571, 0.]
    assert_allclose(yy, yy_ref, rtol=0, atol=1e-6)
Beispiel #2
0
 def __init__(self, width, slope=1., **kwargs):
     self._model = models.Trapezoid1D(1, 0, width, slope)
     self._default_size = _round_up_to_odd_integer(width + 2. / slope)
     super().__init__(**kwargs)
     self.normalize()
Beispiel #3
0
 astmodels.Ring2D(amplitude=10., x_0=0.5, y_0=1.5, r_in=5., width=10.),
 astmodels.Sersic1D(amplitude=10., r_eff=1., n=4.),
 astmodels.Sersic2D(amplitude=10.,
                    r_eff=1.,
                    n=4.,
                    x_0=0.5,
                    y_0=1.5,
                    ellip=0.0,
                    theta=0.0),
 astmodels.Sine1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.Cosine1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.Tangent1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.ArcSine1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.ArcCosine1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.ArcTangent1D(amplitude=10., frequency=0.5, phase=1.),
 astmodels.Trapezoid1D(amplitude=10., x_0=0.5, width=5., slope=1.),
 astmodels.TrapezoidDisk2D(amplitude=10.,
                           x_0=0.5,
                           y_0=1.5,
                           R_0=5.,
                           slope=1.),
 astmodels.Voigt1D(x_0=0.55, amplitude_L=10., fwhm_L=0.5, fwhm_G=0.9),
 astmodels.BlackBody(scale=10.0, temperature=6000. * u.K),
 astmodels.Drude1D(amplitude=10.0, x_0=0.5, fwhm=2.5),
 astmodels.Plummer1D(mass=10.0, r_plum=5.0),
 astmodels.BrokenPowerLaw1D(amplitude=10,
                            x_break=0.5,
                            alpha_1=2.0,
                            alpha_2=3.5),
 astmodels.ExponentialCutoffPowerLaw1D(10, 0.5, 2.0, 7.),
 astmodels.LogParabola1D(
Beispiel #4
0
import astropy.modeling.models as models
from astropy.modeling import Parameter, Fittable1DModel
from astropy.modeling.polynomial import PolynomialModel

registry = {
    'Gaussian1D':
    models.Gaussian1D(1.0, 1.0, 1.0),
    'GaussianAbsorption1D':
    models.GaussianAbsorption1D(1.0, 1.0, 1.0),
    'Lorentz1D':
    models.Lorentz1D(1.0, 1.0, 1.0),
    'MexicanHat1D':
    models.MexicanHat1D(1.0, 1.0, 1.0),
    'Trapezoid1D':
    models.Trapezoid1D(1.0, 1.0, 1.0, 1.0),
    'Moffat1D':
    models.Moffat1D(1.0, 1.0, 1.0, 1.0),
    'ExponentialCutoffPowerLaw1D':
    models.ExponentialCutoffPowerLaw1D(1.0, 1.0, 1.0, 1.0),
    'BrokenPowerLaw1D':
    models.BrokenPowerLaw1D(1.0, 1.0, 1.0, 1.0),
    'LogParabola1D':
    models.LogParabola1D(1.0, 1.0, 1.0, 1.0),
    'PowerLaw1D':
    models.PowerLaw1D(1.0, 1.0, 1.0),
    'Linear1D':
    models.Linear1D(1.0, 0.0),
    'Const1D':
    models.Const1D(0.0),
    'Redshift':
Beispiel #5
0
#         0.54952605,  0.3894018 ])



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

# Generate fake data
np.random.seed(0)
x = np.linspace(-5., 5., 200)
y = 3 * np.exp(-0.5 * (x - 1.3)**2 / 0.8**2)
y += np.random.normal(0., 0.2, x.shape)

# Fit the data using a box model
t_init = models.Trapezoid1D(amplitude=1., x_0=0., width=1., slope=0.5)
fit_t = fitting.LevMarLSQFitter()
t = fit_t(t_init, x, y)

# Fit the data using a Gaussian
g_init = models.Gaussian1D(amplitude=1., mean=0, stddev=1.)
fit_g = fitting.LevMarLSQFitter()
g = fit_g(g_init, x, y)

# Plot the data with the best-fit model
plt.figure(figsize=(8,5))
plt.plot(x, y, 'ko')
plt.plot(x, t(x), label='Trapezoid')
plt.plot(x, g(x), label='Gaussian')
plt.xlabel('Position')
plt.ylabel('Flux')
Beispiel #6
0
import numpy as np
import matplotlib.pyplot as plt
from astropy.modeling import models, fitting

#Generate random data
np.random.seed(0)
x = np.linspace(-5., 5., 200)
y = 3 * np.exp(-0.5 * (x - 1.3)**2 / 0.8**2)
y += np.random.normal(0., 0.2, x.shape)

#Fit the data using a box model
t_init = models.Trapezoid1D(amplitude=1., x_0=0, width=1., slope=0.5,
                            bounds={"x_0": (-5., 5.)})
fit_t = fitting.LevMarLSQFitter()
t = fit_t(t_init, x, y)

#Fit the data using a gaussian
g_init = models.Gaussian1D(amplitude=1., mean=0, stddev=1.)
fit_g = fitting.LevMarLSQFitter()
g = fit_g(g_init, x, y)

#Plot data with the best fit model
plt.figure(figsize=(8,5))
plt.plot(x, y, 'ko')
plt.plot(x, t(x), label='Trapezoid')
plt.plot(x, g(x), label='Gaussian')
plt.xlabel('Position')
plt.ylabel('Flux')
plt.legend(loc=2)