コード例 #1
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_iminuit_frozen(pars):
    ds = MyDataset(pars)
    pars["y"].frozen = True

    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars)

    assert info["success"]

    assert_allclose(pars["x"].value, 2, rtol=1e-4)
    assert_allclose(pars["y"].value, 3.1e5)
    assert_allclose(pars["z"].value, 4.0e-5, rtol=1e-4)
    assert_allclose(ds.fcn(), 0.111112, rtol=1e-5)
コード例 #2
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_iminuit_stepsize(pars):
    ds = MyDataset(pars)

    pars.apply_autoscale = False
    pars.covariance = np.diag([0.2, 3e4, 4e-6]) ** 2

    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars)

    assert info["success"]
    assert_allclose(ds.fcn(), 0, atol=1e-5)
    assert_allclose(pars["x"].value, 2, rtol=1e-3)
    assert_allclose(pars["y"].value, 3e5, rtol=1e-3)
    assert_allclose(pars["z"].value, 4e-5, rtol=2e-2)
コード例 #3
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_iminuit_confidence(pars):
    ds = MyDataset(pars)
    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars)

    assert_allclose(ds.fcn(), 0, atol=1e-5)

    par = pars["x"]
    par.min, par.max = 0, 10

    result = confidence_iminuit(minuit=minuit, parameters=pars, parameter=par, sigma=1)

    assert result["success"]

    assert_allclose(result["errp"], 0.2)
    assert_allclose(result["errn"], 0.2)
コード例 #4
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_iminuit_basic(pars):
    ds = MyDataset(pars)
    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars)

    assert info["success"]
    assert_allclose(ds.fcn(), 0, atol=1e-5)

    # Check the result in parameters is OK
    assert_allclose(pars["x"].value, 2, rtol=1e-3)
    assert_allclose(pars["y"].value, 3e5, rtol=1e-3)
    # Precision of estimate on "z" is very poor (0.040488). Why is it so bad?
    assert_allclose(pars["z"].value, 4e-5, rtol=2e-2)

    # Check that minuit sees the parameter factors correctly
    assert_allclose(factors, [2, 3, 4], rtol=1e-3)
    assert_allclose(minuit.values["par_000_x"], 2, rtol=1e-3)
    assert_allclose(minuit.values["par_001_y"], 3, rtol=1e-3)
    assert_allclose(minuit.values["par_002_z"], 4, rtol=1e-3)
コード例 #5
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_iminuit_limits(pars):
    ds = MyDataset(pars)
    pars["y"].min = 301000

    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars)

    assert info["success"]

    # Check the result in parameters is OK
    assert_allclose(pars["x"].value, 2, rtol=1e-2)
    assert_allclose(pars["y"].value, 301000, rtol=1e-3)

    # Check that minuit sees the limit factors correctly
    states = minuit.get_param_states()
    assert not states[0]["has_limits"]

    y = states[1]
    assert y["has_limits"]
    assert_allclose(y["lower_limit"], 3.01)
コード例 #6
0
ファイル: test_iminuit.py プロジェクト: mservillat/gammapy
def test_migrad_opts(pars):
    ds = MyDataset(pars)
    kwargs = {}
    kwargs["migrad_opts"] = {"ncall": 20}
    factors, info, minuit = optimize_iminuit(function=ds.fcn, parameters=pars, **kwargs)
    assert info["nfev"] == 20