Пример #1
0
    def test_set_symtable(self):
        # test that we use Parameter.set(value=XXX) and have
        # that new value be used in constraint expressions
        pars = Parameters()
        pars.add('x', value=1.0)
        pars.add('y', expr='x + 1')

        assert_(isclose(pars['y'].value, 2.0))
        pars['x'].set(value=3.0)
        assert_(isclose(pars['y'].value, 4.0))
Пример #2
0
    def test_set_symtable(self):
        # test that we use Parameter.set(value=XXX) and have
        # that new value be used in constraint expressions
        pars = Parameters()
        pars.add('x', value=1.0)
        pars.add('y', expr='x + 1')

        assert_(isclose(pars['y'].value, 2.0))
        pars['x'].set(value=3.0)
        assert_(isclose(pars['y'].value, 4.0))
Пример #3
0
 def test_isclose(self):
     assert_(isclose(1., 1+1e-5, atol=1e-4, rtol=0))
     assert_(not isclose(1., 1+1e-5, atol=1e-6, rtol=0))
     assert_(isclose(1e10, 1.00001e10, rtol=1e-5, atol=1e-8))
     assert_(not isclose(0, np.inf))
     assert_(not isclose(-np.inf, np.inf))
     assert_(isclose(np.inf, np.inf))
     assert_(not isclose(np.nan, np.nan))
Пример #4
0
 def test_expr_with_bounds(self):
     "test an expression with bounds, without value"
     pars = Parameters()
     pars.add('c1', value=0.2)
     pars.add('c2', value=0.2)
     pars.add('c3', value=0.2)
     pars.add('csum', value=0.8)
     # this should not raise TypeError:
     pars.add('c4', expr='csum-c1-c2-c3', min=0, max=1)
     assert_(isclose(pars['c4'].value, 0.2))
Пример #5
0
    def test_dumps_loads_parameters(self):
        # test that we can dumps() and then loads() a Parameters
        pars = Parameters()
        pars.add('x', value=1.0)
        pars.add('y', value=2.0)
        pars['x'].expr = 'y / 2.0'

        dumps = pars.dumps()

        newpars = Parameters().loads(dumps)
        newpars['y'].value = 100.0
        assert_(isclose(newpars['x'].value, 50.0))
Пример #6
0
    def test_dumps_loads_parameters(self):
        # test that we can dumps() and then loads() a Parameters
        pars = Parameters()
        pars.add('x', value=1.0)
        pars.add('y', value=2.0)
        pars['x'].expr = 'y / 2.0'

        dumps = pars.dumps()

        newpars = Parameters().loads(dumps)
        newpars['y'].value = 100.0
        assert_(isclose(newpars['x'].value, 50.0))
Пример #7
0
    def test_params_usersyms(self):
        # test passing usersymes to Parameters()
        def myfun(x):
            return x**3

        params = Parameters(usersyms={"myfun": myfun})
        params.add("a", value=2.3)
        params.add("b", expr="myfun(a)")

        xx = np.linspace(0, 1, 10)
        yy = 3 * xx + np.random.normal(scale=0.002, size=len(xx))

        model = Model(lambda x, a: a * x)
        result = model.fit(yy, params=params, x=xx)
        assert_(isclose(result.params['a'].value, 3.0, rtol=0.025))
        assert_(result.nfev > 3)
        assert_(result.nfev < 300)