Ejemplo n.º 1
0
def test_guess_from_peak2d():
    """Regression test for guess_from_peak2d function (see GH #627)."""
    x = np.linspace(-5, 5)
    y = np.linspace(-5, 5)
    amplitude = 0.8
    centerx = 1.7
    sigmax = 0.3
    centery = 1.3
    sigmay = 0.2
    z = lineshapes.gaussian2d(x,
                              y,
                              amplitude=amplitude,
                              centerx=centerx,
                              sigmax=sigmax,
                              centery=centery,
                              sigmay=sigmay)

    model = models.Gaussian2dModel()
    guess_increasing_x = model.guess(z, x=x, y=y)
    guess_decreasing_x = model.guess(z[::-1], x=x[::-1], y=y[::-1])

    assert guess_increasing_x == guess_decreasing_x

    for param, value in zip(['centerx', 'centery'], [centerx, centery]):
        assert np.abs((guess_increasing_x[param].value - value) / value) < 0.5
Ejemplo n.º 2
0
def test_height_and_fwhm_expression_evalution_in_builtin_models():
    """Assert models do not throw an ZeroDivisionError."""
    mod = models.GaussianModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9)
    params.update_constraints()

    mod = models.LorentzianModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9)
    params.update_constraints()

    mod = models.SplitLorentzianModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, sigma_r=1.0)
    params.update_constraints()

    mod = models.VoigtModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, gamma=1.0)
    params.update_constraints()

    mod = models.PseudoVoigtModel()
    params = mod.make_params(amplitude=1.0,
                             center=0.0,
                             sigma=0.9,
                             fraction=0.5)
    params.update_constraints()

    mod = models.MoffatModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, beta=0.0)
    params.update_constraints()

    mod = models.Pearson7Model()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, expon=1.0)
    params.update_constraints()

    mod = models.StudentsTModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9)
    params.update_constraints()

    mod = models.BreitWignerModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, q=0.0)
    params.update_constraints()

    mod = models.LognormalModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9)
    params.update_constraints()

    mod = models.DampedOscillatorModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9)
    params.update_constraints()

    mod = models.DampedHarmonicOscillatorModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, gamma=0.0)
    params.update_constraints()

    mod = models.ExponentialGaussianModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, gamma=0.0)
    params.update_constraints()

    mod = models.SkewedGaussianModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, gamma=0.0)
    params.update_constraints()

    mod = models.SkewedVoigtModel()
    params = mod.make_params(amplitude=1.0,
                             center=0.0,
                             sigma=0.9,
                             gamma=0.0,
                             skew=0.0)
    params.update_constraints()

    mod = models.DoniachModel()
    params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, gamma=0.0)
    params.update_constraints()

    mod = models.StepModel()
    for f in ('linear', 'arctan', 'erf', 'logistic'):
        params = mod.make_params(amplitude=1.0, center=0.0, sigma=0.9, form=f)
        params.update_constraints()

    mod = models.RectangleModel()
    for f in ('linear', 'arctan', 'erf', 'logistic'):
        params = mod.make_params(amplitude=1.0,
                                 center1=0.0,
                                 sigma1=0.0,
                                 center2=0.0,
                                 sigma2=0.0,
                                 form=f)
        params.update_constraints()

    mod = models.Gaussian2dModel()
    params = mod.make_params(amplitude=1.0,
                             centerx=0.0,
                             sigmax=0.9,
                             centery=0.0,
                             sigmay=0.9)
    params.update_constraints()