Exemplo n.º 1
0
    def test_user_defined_fitfunc(self):
        param_in = [0.0, a_in + 1, tau_in + 1
                    ]  # slight offset to detect if the fitting works!
        fitfunc_in = flimlib.FitFunc(dummy_exp_tau,
                                     nparam_predicate=dummy_exp_tau_predicate)
        result = flimlib.GCI_marquardt_fitting_engine(period,
                                                      photon_count32,
                                                      param_in,
                                                      fitfunc=fitfunc_in)
        self.assertAlmostEqual(0.0, result.param[0], 1)
        self.assertAlmostEqual(a_in, result.param[1], 1)
        self.assertAlmostEqual(tau_in, result.param[2], 1)

        # linear fit! (did not work with the first param being nonzero)
        param_in = [0, linear_const + 1]
        fitfunc_in = flimlib.FitFunc(dummy_linear,
                                     nparam_predicate=dummy_linear_predicate)
        result = flimlib.GCI_marquardt_fitting_engine(period,
                                                      photon_count_linear,
                                                      param_in,
                                                      fitfunc=fitfunc_in,
                                                      noise_type='NOISE_CONST',
                                                      sig=1.0)
        self.assertAlmostEqual(0.0, result.param[0], 1)
        self.assertAlmostEqual(linear_const, result.param[1], 1)
Exemplo n.º 2
0
    def test_nparam(self):
        with self.assertRaises(TypeError):
            param_in = [a_in + 1, tau_in + 1]  # forgot the first parameter!
            flimlib.GCI_marquardt_fitting_engine(period, photon_count_linear,
                                                 param_in)

        # any odd number of parameters greater or equal to 3 should work!
        param_in = [0, a_in + 1, tau_in + 1, 1, 1]  # pass 5 parameters
        flimlib.GCI_marquardt_fitting_engine(period, photon_count_linear,
                                             param_in)
Exemplo n.º 3
0
 def test_output_margin(self):
     param_in = [0, a_in + 1, tau_in + 1
                 ]  # slight offset to detect if the fitting works!
     result = flimlib.GCI_marquardt_fitting_engine(period, photon_count32,
                                                   param_in)
     self.assertAlmostEqual(0.0, result.param[0], 1)
     self.assertAlmostEqual(a_in, result.param[1], 1)
     self.assertAlmostEqual(tau_in, result.param[2], 1)
Exemplo n.º 4
0
 def test_paramfree(self):
     param_in = [0, a_in + 1, tau_in + 1
                 ]  # slight offset to detect if the fitting works!
     result = flimlib.GCI_marquardt_fitting_engine(period,
                                                   photon_count32,
                                                   param_in,
                                                   paramfree=[1, 0, 1])
     # second parameter should have been held fixed!
     self.assertAlmostEqual(a_in + 1, result.param[1], 1)
Exemplo n.º 5
0
    def test_multiexp_lambda(self):
        lambda_in = 1 / tau_in  # lambda is the decay rate!
        param_in = [0, a_in + 1, lambda_in + 1
                    ]  # slight offset to detect if the fitting works!
        result = flimlib.GCI_marquardt_fitting_engine(
            period,
            photon_count32,
            param_in,
            fitfunc=flimlib.GCI_multiexp_lambda)

        self.assertAlmostEqual(a_in, result.param[1], 1)
        self.assertAlmostEqual(lambda_in, result.param[2], 1)
Exemplo n.º 6
0
 def test_restraintype(self):
     with self.assertRaises(ValueError):
         flimlib.GCI_set_restrain_limits([0, 0], [0], [0])
     with self.assertRaises(ValueError):
         flimlib.GCI_set_restrain_limits([[0, 0], [0, 0]], [0, 0], [0, 0])
     param_in = [0, a_in + 1, tau_in + 1]
     flimlib.GCI_set_restrain_limits([0, 1, 0], [0, 0, 0], [0, a_in - 1, 0])
     result = flimlib.GCI_marquardt_fitting_engine(
         period,
         photon_count32,
         param_in,
         restrain_type='ECF_RESTRAIN_USER')
     self.assertTrue(result.param[1] <= a_in - 1)