.. _predef_models1D: ********* 1D Models ********* Operations ========== These models perform simple mathematical operations. - :class:`~astropy.modeling.functional_models.Const1D` model returns the constant replicated by the number of input x values. - :class:`~astropy.modeling.functional_models.Multiply` model multiples the input x values by a factor and propagates units if the factor is a :class:`~astropy.units.Quantity`. - :class:`~astropy.modeling.functional_models.RedshiftScaleFactor` model multiples the input x values by a (1 + z) factor. - :class:`~astropy.modeling.functional_models.Scale` model multiples by a factor without changing the units of the result. - :class:`~astropy.modeling.functional_models.Shift` model adds a constant to the input x values. Shapes ====== These models provide shapes, often used to model general x, y data. - :class:`~astropy.modeling.functional_models.Linear1D` model provides a line parameterizied by the slope and y-intercept - :class:`~astropy.modeling.functional_models.Sine1D` model provides a sine parameterized by an amplitude, frequency, and phase. - :class:`~astropy.modeling.functional_models.Cosine1D` model provides a cosine parameterized by an amplitude, frequency, and phase. .. plot:: import numpy as np import matplotlib.pyplot as plt from astropy.modeling.models import (Linear1D, Sine1D, Cosine1D) x = np.linspace(-4.0, 6.0, num=100) fig, sax = plt.subplots(ncols=3, figsize=(10, 5)) ax = sax.flatten() linemod = Linear1D(slope=2., intercept=1.) ax[0].plot(x, linemod(x), label="Linear1D") sinemod = Sine1D(amplitude=10., frequency=0.5, phase=0.) ax[1].plot(x, sinemod(x), label="Sine1D") ax[1].set_ylim(-11.0, 13.0) cosinemod = Cosine1D(amplitude=10., frequency=0.5, phase=0) ax[2].plot(x, cosinemod(x), label="Cosine1D") ax[2].set_ylim(-11.0, 13.0) for k in range(3): ax[k].set_xlabel("x") ax[k].set_ylabel("y") ax[k].legend() plt.tight_layout() plt.show() Profiles ======== These models provide profiles, often used for lines in spectra. - :class:`~astropy.modeling.functional_models.Box1D` model computes a box function with an amplitude centered at x_0 with the specified width. - :class:`~astropy.modeling.functional_models.Gaussian1D` model computes a Gaussian with an amplitude centered at x_0 with the specified width. - :class:`~astropy.modeling.functional_models.KingProjectedAnalytic1D` model computes the analytic form of the a King model with an amplitude and core and tidal radii. - :class:`~astropy.modeling.functional_models.Lorentz1D` model computes a Lorentzian with an amplitude centered at x_0 with the specified width. - :class:`~astropy.modeling.functional_models.RickerWavelet1D` model computes a RickerWavelet function with an amplitude centered at x_0 with the specified width. - :class:`~astropy.modeling.functional_models.Moffat1D` model computes a Moffat function with an amplitude centered at x_0 with the specified width. - :class:`~astropy.modeling.functional_models.Sersic1D` model computes a Sersic model with an amplitude with an effective radius and the specified sersic index. - :class:`~astropy.modeling.functional_models.Trapezoid1D` model computes a box with sloping sides with an amplitude centered at x_0 with the specified width and sides with the specified slope. - :class:`~astropy.modeling.functional_models.Voigt1D` model computes a Voigt function with an amplitude centered at x_0 with the specified Lorentzian and Gaussian widths. .. plot:: import numpy as np import matplotlib.pyplot as plt from astropy.modeling.models import ( Box1D, Gaussian1D, RickerWavelet1D, Moffat1D, Lorentz1D, Sersic1D, Trapezoid1D, KingProjectedAnalytic1D, Voigt1D, ) x = np.linspace(-4.0, 6.0, num=100) r = np.logspace(-1.0, 2.0, num=100) fig, sax = plt.subplots(nrows=3, ncols=3, figsize=(10, 10)) ax = sax.flatten() mods = [ Box1D(amplitude=10.0, x_0=1.0, width=1.0), Gaussian1D(amplitude=10.0, mean=1.0, stddev=1.0), KingProjectedAnalytic1D(amplitude=10.0, r_core=1.0, r_tide=10.0), Lorentz1D(amplitude=10.0, x_0=1.0, fwhm=1.0), RickerWavelet1D(amplitude=10.0, x_0=1.0, sigma=1.0), Moffat1D(amplitude=10.0, x_0=1.0, gamma=1.0, alpha=1.), Sersic1D(amplitude=10.0, r_eff=1.0 / 2.0, n=5), Trapezoid1D(amplitude=10.0, x_0=1.0, width=1.0, slope=5.0), Voigt1D(amplitude_L=10.0, x_0=1.0, fwhm_L=1.0, fwhm_G=1.0), ] for k, mod in enumerate(mods): cname = mod.__class__.__name__ ax[k].set_title(cname) if cname in ["KingProjectedAnalytic1D", "Sersic1D"]: ax[k].plot(r, mod(r)) ax[k].set_xscale("log") ax[k].set_yscale("log") else: ax[k].plot(x, mod(x)) for k in range(len(mods)): ax[k].set_xlabel("x") ax[k].set_ylabel("y") # remove axis for any plots not used for k in range(len(mods), len(ax)): ax[k].axis("off") plt.tight_layout() plt.show()