def test_2D_fitting(self): xdata = np.random.randint(-10, 11, size=(2, 400)) zdata = 2.5*xdata[0]**2 + 7.0*xdata[1]**2 a = Parameter('a') b = Parameter('b') x = Variable('x') y = Variable('y') new = a*x**2 + b*y**2 fit = Fit(new, xdata, zdata) result = fit.scipy_func(fit.xdata, [2, 3]) import inspect args, varargs, keywords, defaults = inspect.getargspec(fit.scipy_func) self.assertEqual(args, ['x', 'p']) fit_result = fit.execute() self.assertIsInstance(fit_result, FitResults)
def test_fitting(self): xdata = np.linspace(1,10,10) ydata = 3*xdata**2 a = Parameter('a') b = Parameter('b') x = Variable('x') new = a*x**b fit = Fit(new, xdata, ydata) func = sympy_to_py(new, [x], [a, b]) result = func(xdata, 3, 2) self.assertTrue(np.array_equal(result, ydata)) result = fit.scipy_func(fit.xdata, [3, 2]) self.assertTrue(np.array_equal(result, ydata)) import inspect args, varargs, keywords, defaults = inspect.getargspec(fit.scipy_func) # self.assertEqual(args, ['x', 'a', 'b']) fit_result = fit.execute() self.assertIsInstance(fit_result, FitResults) print(fit_result) self.assertAlmostEqual(fit_result.params.a, 3.0) self.assertAlmostEqual(fit_result.params.b, 2.0) self.assertIsInstance(fit_result.params.a_stdev, float) self.assertIsInstance(fit_result.params.b_stdev, float) self.assertIsInstance(fit_result.r_squared, float) # Test several false ways to access the data. self.assertRaises(AttributeError, getattr, *[fit_result.params, 'a_fdska']) self.assertRaises(AttributeError, getattr, *[fit_result.params, 'c']) self.assertRaises(AttributeError, getattr, *[fit_result.params, 'a_stdev_stdev']) self.assertRaises(AttributeError, getattr, *[fit_result.params, 'a_stdev_']) self.assertRaises(AttributeError, getattr, *[fit_result.params, 'a__stdev'])