Exemple #1
0
def test_minos_single_with_gradient():
    m = Minuit(func3, grad_fcn=func3_grad, pedantic=False, print_level=0)
    m.set_strategy(2)
    m.migrad()
    m.minos('x')
    assert_allclose(m.merrors[('x', -1.0)], -sqrt(5))
    assert_allclose(m.merrors[('x', 1.0)], sqrt(5))
Exemple #2
0
def test_initial_value():
    m = Minuit(func3, pedantic=False, x=1., y=2., error_x=3., print_level=0)
    assert_allclose(m.args[0], 1.)
    assert_allclose(m.args[1], 2.)
    assert_allclose(m.values['x'], 1.)
    assert_allclose(m.values['y'], 2.)
    assert_allclose(m.errors['x'], 3.)
def test_beale():
    random.seed(0.258)
    m = Minuit(beale, x=random.random(), y=0.5 * random.random(),
               pedantic=False, print_level=0)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.args, [3, 0.5], atol=1e-3)
    assert m.fval < 1e-6
def test_matyas():
    random.seed(0.258)
    m = Minuit(matyas, x=random.random(), y=random.random(),
               pedantic=False, print_level=0)
    m.tol = 1e-4
    m.migrad()

    assert m.fval < 1e-26
    assert_allclose(m.args, [0, 0], atol=1e-12)
def test_matyas_oneside():
    """One-sided limit when the minimum is in the forbidden region"""
    random.seed(0.258)
    m = Minuit(matyas, x=2 + random.random(), y=random.random(),
               limit_x=(1, None),
               pedantic=False, print_level=0)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.args, [1, 0.923], atol=1e-3)
Exemple #6
0
def test_oneside():
    m_limit = Minuit(func3, limit_x=(None, 9), pedantic=False, print_level=0)
    m_nolimit = Minuit(func3, pedantic=False, print_level=0)
    # Solution: x=2., y=5.
    m_limit.tol = 1e-4
    m_nolimit.tol = 1e-4
    m_limit.migrad()
    m_nolimit.migrad()
    assert_allclose(list(m_limit.values.values()),
                    list(m_nolimit.values.values()), atol=1e-4)
Exemple #7
0
def test_chi2_fit():
    """Fit a curve to data."""
    m = Minuit(chi2, s=2., error_A=0.1, errordef=0.01,
               print_level=0, pedantic=False)
    m.migrad()
    output = [round(10 * m.values['A']), round(100 * m.values['s']),
              round(100 * m.values['m'])]
    expected = [round(10 * 64.375993), round(100 * 4.267970),
                round(100 * 9.839172)]
    assert_allclose(output, expected)
def test_ackleys():
    random.seed(0.258)

    m = Minuit(ackleys, x=1.5 * random.random(), y=1.5 * random.random(),
               error_x=1.7, error_y=1.7,
               pedantic=False, print_level=0)
    m.tol = 1e-4
    m.migrad()

    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.args, [0, 0], atol=1e-6)
Exemple #9
0
def test_callback():
    trace = []
    result = minimize(func, np.ones(3),
                      callback=lambda x: trace.append(x.copy()))
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 1)
    assert result.nfev == len(trace)
    assert_allclose(trace[0], np.ones(3), atol=1e-2)
    assert_allclose(trace[-1], result.x, atol=1e-2)
Exemple #10
0
def test_mncontour_sigma():
    m = Minuit(func3, pedantic=False, x=1., y=2., error_x=3., print_level=0)
    m.migrad()
    xminos, yminos, ctr = m.mncontour('x', 'y', numpoints=30, sigma=2.0)
    xminos_t = m.minos('x', sigma=2.0)['x']
    yminos_t = m.minos('y', sigma=2.0)['y']
    assert_allclose(xminos.upper, xminos_t.upper)
    assert_allclose(xminos.lower, xminos_t.lower)
    assert_allclose(yminos.upper, yminos_t.upper)
    assert_allclose(yminos.lower, yminos_t.lower)
    assert len(ctr) == 30
    assert len(ctr[0]) == 2
Exemple #11
0
def test_array_call():
    inf = float("infinity")
    m = Minuit(func8,
               a=1,
               b=1,
               error_a=1,
               error_b=1,
               limit_a=(0, inf),
               limit_b=(0, inf),
               fix_a=False,
               fix_b=False,
               print_level=0,
               errordef=1,
               use_array_call=True,
               forced_parameters=("a", "b"))
    m.migrad()
    v = m.values
    assert_allclose((v["a"], v["b"]), (1, 1))
    m.hesse()
    c = m.covariance
    assert_allclose((c[("a", "a")], c[("b", "b")]), (1, 1))
Exemple #12
0
def test_from_array_func_with_broadcasting():
    m = Minuit.from_array_func(func8, (1, 1),
                               error=0.5,
                               limit=(0, 2),
                               errordef=1,
                               print_level=0)
    assert m.fitarg == {
        "x0": 1,
        "x1": 1,
        "error_x0": 0.5,
        "error_x1": 0.5,
        "fix_x0": False,
        "fix_x1": False,
        "limit_x0": (0, 2),
        "limit_x1": (0, 2)
    }
    m.migrad()
    v = m.np_values()
    assert_allclose(v, (1, 1))
    c = m.np_covariance()
    assert_allclose(np.diag(c), (1, 1))
Exemple #13
0
def test_minos_all():
    m = Minuit(func3, pedantic=False, print_level=0)
    m.migrad()
    m.minos()
    assert_allclose(m.merrors[('x', -1.0)], -sqrt(5))
    assert_allclose(m.merrors[('x', 1.0)], sqrt(5))
    assert_allclose(m.merrors[('y', 1.0)], 1.)
Exemple #14
0
def test_minos_all():
    m = Minuit(func3, pedantic=False, print_level=0)
    m.migrad()
    m.minos()
    assert_allclose(m.merrors[('x', -1.0)], -sqrt(5))
    assert_allclose(m.merrors[('x', 1.0)], sqrt(5))
    assert_allclose(m.merrors[('y', 1.0)], 1.)
Exemple #15
0
def test_mncontour_array_func():
    m = Minuit.from_array_func(
        Func9(), (0, 0), name=("x", "y"), pedantic=False, print_level=0
    )
    m.migrad()
    xminos, yminos, ctr = m.mncontour("x", "y", numpoints=30, sigma=1)
    xminos_t = m.minos("x", sigma=1)["x"]
    yminos_t = m.minos("y", sigma=1)["y"]
    assert_allclose(xminos.upper, xminos_t.upper)
    assert_allclose(xminos.lower, xminos_t.lower)
    assert_allclose(yminos.upper, yminos_t.upper)
    assert_allclose(yminos.lower, yminos_t.lower)
    assert len(ctr) == 30
    assert len(ctr[0]) == 2
Exemple #16
0
def test_minos_all(grad, sigma):
    m = Minuit(func3, grad=func3_grad, pedantic=False, print_level=0)
    m.migrad()
    m.minos(sigma=sigma)
    assert_allclose(m.merrors[('x', -1.0)], -sigma * 2, rtol=1e-2)
    assert_allclose(m.merrors[('x', 1.0)], sigma * 2, rtol=1e-2)
    assert_allclose(m.merrors[('y', 1.0)], sigma * 1, rtol=1e-2)
Exemple #17
0
def test_mncontour(grad, sigma):
    m = Minuit(
        func3, grad=grad, pedantic=False, x=1.0, y=2.0, error_x=3.0, print_level=0
    )
    m.migrad()
    xminos, yminos, ctr = m.mncontour("x", "y", numpoints=30, sigma=sigma)
    xminos_t = m.minos("x", sigma=sigma)["x"]
    yminos_t = m.minos("y", sigma=sigma)["y"]
    assert_allclose(xminos.upper, xminos_t.upper)
    assert_allclose(xminos.lower, xminos_t.lower)
    assert_allclose(yminos.upper, yminos_t.upper)
    assert_allclose(yminos.lower, yminos_t.lower)
    assert len(ctr) == 30
    assert len(ctr[0]) == 2
Exemple #18
0
def test_rosenbrock():
    m = Minuit(rosenbrock, x=0, y=0, pedantic=False, print_level=1)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.values['x'], 1., atol=1e-3)
    assert_allclose(m.values['y'], 1., atol=1e-3)
Exemple #19
0
def test_minos_all_with_gradient():
    m = Minuit(func3, grad_fcn=func3_grad, pedantic=False, print_level=0)
    m.set_strategy(2)
    m.migrad()
    m.minos()
    assert_allclose(m.merrors[('x', -1.0)], -sqrt(5))
    assert_allclose(m.merrors[('x', 1.0)], sqrt(5))
    assert_allclose(m.merrors[('y', 1.0)], 1.)
Exemple #20
0
def m():
    m = Minuit(f1, x=0, y=0, pedantic=False, print_level=1)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.values['x'], 1, atol=1e-3)
    assert_allclose(m.values['y'], 1, atol=1e-3)
    return m
Exemple #21
0
def m():
    m = Minuit(f1, x=0, y=0, pedantic=False, print_level=1)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.values['x'], 1, atol=1e-3)
    assert_allclose(m.values['y'], 1, atol=1e-3)
    return m
Exemple #22
0
def test_rosenbrock():
    random.seed(0.258)
    m = Minuit(rosenbrock, x=0, y=0, pedantic=False, print_level=1)
    m.tol = 1e-4
    m.migrad()
    assert_allclose(m.fval, 0, atol=1e-6)
    assert_allclose(m.values['x'], 1., atol=1e-3)
    assert_allclose(m.values['y'], 1., atol=1e-3)
Exemple #23
0
def test_get_param_states():
    m = Minuit(
        func3,
        x=1,
        y=2,
        error_x=3,
        error_y=4,
        fix_x=True,
        limit_y=(None, 10),
        pedantic=False,
        errordef=1,
        print_level=0,
    )
    # these are the initial param states
    expected = [
        Param(0, "x", 1.0, 3.0, False, True, False, False, False, None, None),
        Param(1, "y", 2.0, 4.0, False, False, True, False, True, None, 10),
    ]
    assert m.get_param_states() == expected

    m.migrad()
    assert m.get_initial_param_states() == expected

    expected = [
        Param(0, "x", 1.0, 3.0, False, True, False, False, False, None, None),
        Param(1, "y", 5.0, 1.0, False, False, True, False, True, None, 10),
    ]

    params = m.get_param_states()
    for i, exp in enumerate(expected):
        p = params[i]
        assert set(p._fields) == set(exp._fields)
        for key in exp._fields:
            if key in ("value", "error"):
                assert_allclose(getattr(p, key), getattr(exp, key), rtol=1e-2)
            else:
                assert getattr(p, key) == getattr(exp, key)
Exemple #24
0
def test_from_array_func_2():
    m = Minuit.from_array_func(func8, (2, 1),
                               grad=func8_grad,
                               error=(0.5, 0.5),
                               limit=((0, 2), (0, 2)),
                               fix=(False, True),
                               name=("a", "b"),
                               errordef=1,
                               print_level=0)
    assert m.fitarg == {
        "a": 2,
        "b": 1,
        "error_a": 0.5,
        "error_b": 0.5,
        "fix_a": False,
        "fix_b": True,
        "limit_a": (0, 2),
        "limit_b": (0, 2)
    }
    m.migrad()
    v = m.np_values()
    assert_allclose(v, (1, 1), rtol=1e-2)
    c = m.np_covariance()
    assert_allclose(c, ((1, 0), (0, 0)), rtol=1e-2)
Exemple #25
0
def functesthelper(f):
    m = Minuit(f, print_level=0, pedantic=False)
    m.migrad()
    val = m.values
    assert_allclose(val['x'], 2.)
    assert_allclose(val['y'], 5.)
    assert_allclose(m.fval, 10.)
    assert m.matrix_accurate()
    assert m.migrad_ok()
    return m
Exemple #26
0
def functesthelper(f):
    m = Minuit(f, print_level=0, pedantic=False)
    m.migrad()
    val = m.values
    assert_allclose(val['x'], 2.)
    assert_allclose(val['y'], 5.)
    assert_allclose(m.fval, 10.)
    assert m.matrix_accurate()
    assert m.migrad_ok()
    return m
Exemple #27
0
def functesthelper_paramlist(f, *params):
    m = Minuit.from_parameter_list(f, *params, print_level=0, pedantic=False)
    m.migrad()
    val = m.values
    assert_allclose(val['p0'], 2.)
    assert_allclose(val['p1'], 5.)
    assert_allclose(m.fval, 10.)
    assert m.matrix_accurate()
    assert m.migrad_ok()
    return m
Exemple #28
0
def test_mncontour_with_gradient():
    m = Minuit(func3,
               grad_fcn=func3_grad,
               pedantic=False,
               x=1.,
               y=2.,
               error_x=3.,
               print_level=0)
    m.migrad()
    xminos, yminos, ctr = m.mncontour('x', 'y', numpoints=30)
    xminos_t = m.minos('x')['x']
    yminos_t = m.minos('y')['y']
    assert_allclose(xminos.upper, xminos_t.upper)
    assert_allclose(xminos.lower, xminos_t.lower)
    assert_allclose(yminos.upper, yminos_t.upper)
    assert_allclose(yminos.lower, yminos_t.lower)
    assert len(ctr) == 30
    assert len(ctr[0]) == 2
Exemple #29
0
def test_fitarg():
    m = Minuit(func4, print_level=-1, y=10., fix_y=True, limit_x=(0, 20.),
               pedantic=False)
    fitarg = m.fitarg
    assert_allclose(fitarg['y'], 10.)
    assert fitarg['fix_y'] is True
    assert fitarg['limit_x'] == (0, 20)
    m.migrad()

    fitarg = m.fitarg

    assert_allclose(fitarg['y'], 10.)
    assert_allclose(fitarg['x'], 2., atol=1e-2)
    assert_allclose(fitarg['z'], 7., atol=1e-2)

    assert 'error_y' in fitarg
    assert 'error_x' in fitarg
    assert 'error_z' in fitarg

    assert fitarg['fix_y'] is True
    assert fitarg['limit_x'] == (0, 20)
Exemple #30
0
def test_fitarg():
    m = Minuit(
        func4, print_level=-1, y=10.0, fix_y=True, limit_x=(0, 20.0), pedantic=False
    )
    fitarg = m.fitarg
    assert_allclose(fitarg["y"], 10.0)
    assert fitarg["fix_y"] is True
    assert fitarg["limit_x"] == (0, 20)
    m.migrad()

    fitarg = m.fitarg

    assert_allclose(fitarg["y"], 10.0)
    assert_allclose(fitarg["x"], 2.0, atol=1e-2)
    assert_allclose(fitarg["z"], 7.0, atol=1e-2)

    assert "error_y" in fitarg
    assert "error_x" in fitarg
    assert "error_z" in fitarg

    assert fitarg["fix_y"] is True
    assert fitarg["limit_x"] == (0, 20)
Exemple #31
0
def test_simple():
    result = minimize(func, (1, 1, 1))
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 1)
    assert result.nfev > 0
    assert result.njev == 0
Exemple #32
0
def test_oneside_outside():
    m = Minuit(func3, limit_x=(None, 1), pedantic=False, print_level=0)
    m.migrad()
    assert_allclose(m.values['x'], 1)
Exemple #33
0
def test_fix_param_with_gradient():
    m = Minuit(func4, grad_fcn=func4_grad, print_level=0, pedantic=False)
    m.migrad()
    m.minos()
    val = m.values
    assert_allclose(val['x'], 2)
    assert_allclose(val['y'], 5)
    assert_allclose(val['z'], 7)
    err = m.errors  # second derivative
    assert_allclose(err['x'], 2.236067977354171)
    assert_allclose(err['y'], 3.1622776602288)
    assert_allclose(err['z'], 2)
    m.print_all_minos()
    # now fix z = 10
    m = Minuit(func4,
               grad_fcn=func4_grad,
               print_level=-1,
               y=10.,
               fix_y=True,
               pedantic=False)
    m.migrad()
    val = m.values
    assert_allclose(val['x'], 2)
    assert_allclose(val['y'], 10)
    assert_allclose(val['z'], 7)
    assert_allclose(m.fval, 10. + 2.5)
    free_param = m.list_of_vary_param()
    fix_param = m.list_of_fixed_param()
    assert 'x' in free_param
    assert 'x' not in fix_param
    assert 'y' in fix_param
    assert 'y' not in free_param
    assert 'z' not in fix_param
Exemple #34
0
 def test_np_matrix(self):
     import numpy as np
     actual = self.m.np_matrix()
     expected = [[5., 0.], [0., 1.]]
     assert_allclose(actual, expected)
     assert isinstance(actual, np.ndarray)
Exemple #35
0
 def test_matrix(self):
     actual = self.m.np_matrix()
     expected = [[5., 0.], [0., 1.]]
     assert_allclose(actual, expected)
Exemple #36
0
 def test_matrix_correlation(self):
     actual = self.m.matrix(correlation=True)
     expected = [[1., 0.], [0., 1.]]
     assert_allclose(actual, expected)
Exemple #37
0
def test_gradient():
    result = minimize(func, (1, 1, 1), jac=grad)
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 1)
    assert result.nfev > 0
    assert result.njev > 0
Exemple #38
0
 def test_matrix(self):
     actual = self.m.np_matrix()
     expected = [[5., 0.], [0., 1.]]
     assert_allclose(actual, expected)
Exemple #39
0
 def test_matrix_correlation(self):
     actual = self.m.matrix(correlation=True)
     expected = [[1., 0.], [0., 1.]]
     assert_allclose(actual, expected)
Exemple #40
0
 def test_np_errors(self):
     actual = self.m.np_errors()
     expected = [2., 1.]
     assert_allclose(actual, expected, atol=1e-8)
     assert isinstance(actual, np.ndarray)
     assert actual.shape == (2, )
Exemple #41
0
 def test_np_covariance(self):
     actual = self.m.np_covariance()
     expected = [[4., 0.], [0., 1.]]
     assert_allclose(actual, expected, atol=1e-8)
     assert isinstance(actual, np.ndarray)
     assert actual.shape == (2, 2)
Exemple #42
0
 def test_np_matrix_correlation(self):
     actual = self.m.np_matrix(correlation=True)
     expected = [[1., 0.], [0., 1.]]
     assert_allclose(actual, expected, atol=1e-8)
     assert isinstance(actual, np.ndarray)
     assert actual.shape == (2, 2)
Exemple #43
0
 def test_matrix(self):
     actual = self.m.matrix()
     expected = [[4., 0.], [0., 1.]]
     assert_allclose(actual, expected, atol=1e-8)
Exemple #44
0
 def test_args(self):
     actual = self.m.args
     expected = [2., 5.]
     assert_allclose(actual, expected, atol=1e-8)
Exemple #45
0
def test_fix_param_with_gradient():
    m = Minuit(func4, grad_fcn=func4_grad, print_level=0, pedantic=False)
    m.migrad()
    m.minos()
    val = m.values
    assert_allclose(val['x'], 2)
    assert_allclose(val['y'], 5)
    assert_allclose(val['z'], 7)
    err = m.errors  # second derivative
    assert_allclose(err['x'], 2.236067977354171)
    assert_allclose(err['y'], 3.1622776602288)
    assert_allclose(err['z'], 2)
    m.print_all_minos()
    # now fix z = 10
    m = Minuit(func4, grad_fcn=func4_grad, print_level=-1, y=10., fix_y=True, pedantic=False)
    m.migrad()
    val = m.values
    assert_allclose(val['x'], 2)
    assert_allclose(val['y'], 10)
    assert_allclose(val['z'], 7)
    assert_allclose(m.fval, 10. + 2.5)
    free_param = m.list_of_vary_param()
    fix_param = m.list_of_fixed_param()
    assert 'x' in free_param
    assert 'x' not in fix_param
    assert 'y' in fix_param
    assert 'y' not in free_param
    assert 'z' not in fix_param
Exemple #46
0
def test_oneside_outside():
    m = Minuit(func3, limit_x=(None, 1), pedantic=False, print_level=0)
    m.migrad()
    assert_allclose(m.values['x'], 1)
Exemple #47
0
def test_modify_param_state():
    m = Minuit(func3, x=1, y=2, fix_y=True, pedantic=False, print_level=0)
    m.migrad()
    assert_allclose(m.np_values(), [2, 2], atol=1e-2)
    assert_allclose(m.np_errors(), [2, 1], atol=1e-2)
    m.fixed['y'] = False
    m.values['x'] = 1
    m.errors['x'] = 1
    assert_allclose(m.np_values(), [1, 2], atol=1e-2)
    assert_allclose(m.np_errors(), [1, 1], atol=1e-2)
    m.migrad()
    assert_allclose(m.np_values(), [2, 5], atol=1e-2)
    assert_allclose(m.np_errors(), [2, 1], atol=1e-2)
    m.values['y'] = 6
    m.hesse()  # does not change minimum
    assert_allclose(m.np_values(), [2, 6], atol=1e-2)
    assert_allclose(m.np_errors(), [2, 1], atol=1e-2)
Exemple #48
0
 def test_np_matrix_correlation(self):
     import numpy as np
     actual = self.m.np_matrix(correlation=True)
     expected = [[1., 0.], [0., 1.]]
     assert_allclose(actual, expected)
     assert isinstance(actual, np.ndarray)
Exemple #49
0
 def test_np_matrix(self):
     import numpy as np
     actual = self.m.np_matrix()
     expected = [[5., 0.], [0., 1.]]
     assert_allclose(actual, expected)
     assert isinstance(actual, np.ndarray)
Exemple #50
0
def test_simple():
    result = minimize(func, (1, 1, 1))
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 1)
    assert result.nfev > 0
    assert result.njev == 0
Exemple #51
0
 def test_np_matrix_correlation(self):
     import numpy as np
     actual = self.m.np_matrix(correlation=True)
     expected = [[1., 0.], [0., 1.]]
     assert_allclose(actual, expected)
     assert isinstance(actual, np.ndarray)
Exemple #52
0
def test_gradient():
    result = minimize(func, (1, 1, 1), jac=grad)
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 1)
    assert result.nfev > 0
    assert result.njev > 0
Exemple #53
0
def test_args():
    result = minimize(func, np.ones(3), args=(5, ))
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 5)
    assert result.nfev > 0
    assert result.njev == 0
Exemple #54
0
def test_args():
    result = minimize(func, np.ones(3), args=(5,))
    assert_allclose(result.x, (0, 1, 2), atol=1e-8)
    assert_allclose(result.fun, 5)
    assert result.nfev > 0
    assert result.njev == 0