def test2grid_minimize(self):
        """ I sigproc.fit.Minimizer Jacobian grid_minimize """

        result = fit.grid_minimize(self.x, self.y, self.model, points=100)
        names = self.model.parameters.name
        val = self.model.parameters.value
        err = self.model.parameters.stderr
        valr = [2.4272, 1.2912, 0.4928]
        errr = [0.4345, 0.3796, 0.0921]

        print(self.model.param2str(accuracy=4, output='result'))

        msg = 'Resulting value for {:s} is not correct within {:.0f}\%'
        pc = 0.05  # 5% difference is allowed
        for i in range(3):
            self.assertAlmostEqual(val[i],
                                   valr[i],
                                   delta=pc * valr[i],
                                   msg=msg.format(names[i], pc * 100))

        msg = 'Resulting std-error for {:s} is not correct within {:.0f}\%'
        pc = 0.1  # 10% difference is allowed
        for i in range(3):
            self.assertAlmostEqual(err[i],
                                   errr[i],
                                   delta=pc * errr[i],
                                   msg=msg.format(names[i], pc * 100))
Ejemplo n.º 2
0
 def test2grid_minimize(self):
     """ I sigproc.fit.Minimizer Function grid_minimize """
     model = self.model
     points = 100
     fitters, newmodels, chisqrs = fit.grid_minimize(self.x, self.y, model,
                                         parameters=self.pnames, points=points, 
                                         return_all=True, verbose=False)
     values = newmodels[0].get_parameters()[0]
     pars1 = [mod_.parameters['ampl'] for mod_ in newmodels]
     
     msg = 'Not correct amount of fitting points'
     self.assertEqual(len(fitters), points, msg=msg)
     self.assertEqual(len(newmodels), points, msg=msg)
     self.assertEqual(len(chisqrs), points, msg=msg)
     
     msg = 'Parameters not well distributed'
     for i, j in zip(np.random.randint(0,points, size=50), np.random.randint(0,points, size=50)):
         if i != j:
             self.assertNotEqual(pars1[i], pars1[j], msg=msg)
     
     msg = 'Chi2 is not ordened correctly'
     self.assertTrue(chisqrs[0] == np.min(chisqrs), msg=msg)
     self.assertTrue(np.all(np.diff(chisqrs) >= 0), msg=msg)
     
     msg = 'Fit did not converge to the correct values'
     self.assertArrayAlmostEqual(values[0:2], self.value[0:2], places=2, msg=msg)
    def test2grid_minimize(self):
        """ I sigproc.fit.Minimizer Function grid_minimize """
        model = self.model
        points = 100
        fitters, newmodels, chisqrs = fit.grid_minimize(self.x,
                                                        self.y,
                                                        model,
                                                        parameters=self.pnames,
                                                        points=points,
                                                        return_all=True,
                                                        verbose=False)
        values = newmodels[0].get_parameters()[0]
        pars1 = [mod_.parameters['ampl'] for mod_ in newmodels]

        msg = 'Not correct amount of fitting points'
        self.assertEqual(len(fitters), points, msg=msg)
        self.assertEqual(len(newmodels), points, msg=msg)
        self.assertEqual(len(chisqrs), points, msg=msg)

        msg = 'Parameters not well distributed'
        for i, j in zip(np.random.randint(0, points, size=50),
                        np.random.randint(0, points, size=50)):
            if i != j:
                self.assertNotEqual(pars1[i], pars1[j], msg=msg)

        msg = 'Chi2 is not ordened correctly'
        self.assertTrue(chisqrs[0] == np.min(chisqrs), msg=msg)
        self.assertTrue(np.all(np.diff(chisqrs) >= 0), msg=msg)

        msg = 'Fit did not converge to the correct values'
        self.assertArrayAlmostEqual(values[0:2],
                                    self.value[0:2],
                                    places=2,
                                    msg=msg)
Ejemplo n.º 4
0
 def test2grid_minimize(self):
     """ I sigproc.fit.Minimizer Jacobian grid_minimize """
     
     result = fit.grid_minimize(self.x, self.y, self.model, points=100)
     names = self.model.parameters.name
     val = self.model.parameters.value
     err = self.model.parameters.stderr
     valr = [2.4272, 1.2912, 0.4928]
     errr = [0.4345, 0.3796, 0.0921]
     
     print self.model.param2str(accuracy=4, output='result')
     
     msg = 'Resulting value for {:s} is not correct within {:.0f}\%'
     pc = 0.05 # 5% difference is allowed
     for i in range(3):
         self.assertAlmostEqual(val[i], valr[i], delta = pc*valr[i], 
                                msg=msg.format(names[i], pc*100))
                                
     msg = 'Resulting std-error for {:s} is not correct within {:.0f}\%'
     pc = 0.1 # 10% difference is allowed
     for i in range(3):
         self.assertAlmostEqual(err[i], errr[i], delta = pc*errr[i],
                                msg=msg.format(names[i], pc*100))