def test_noise_type_input(self): with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, noise_type='foo') with self.assertRaises(TypeError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type={"foo": "bar"})
def test_unused_noise_types(self): with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GAUSSIAN_FIT') with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, noise_type='NOISE_MLE')
def test_photon_count(self): flimlib.GCI_triple_integral_fitting_engine( period, photon_count64) #passing float 64 should be fine with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count2d) #passing 2d array will fail with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine(period, 5.7) #must be 1d array flimlib.GCI_triple_integral_fitting_engine(period, [1, 2])
def test_noise_const_and_given(self): #the result should be the same if noise given is constant result_const = flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_CONST', sig=1.0) result_noise_given = flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GIVEN', sig=np.ones(samples)) self.assertAlmostEqual(result_const.chisq, result_noise_given.chisq) self.assertAlmostEqual(result_const.A, result_noise_given.A) self.assertAlmostEqual(result_const.Z, result_noise_given.Z) self.assertAlmostEqual(result_const.tau, result_noise_given.tau)
def test_noise_const(self): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, noise_type='NOISE_CONST', sig=2) flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, noise_type='NOISE_CONST', sig=[5]) with self.assertRaises(TypeError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_CONST', sig=[1, 2, 3, 4, 5]) with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_CONST', sig='foo')
def test_output_margin(self): result = flimlib.GCI_triple_integral_fitting_engine( period, photon_count32) # test to an integer precision since the triple integral fit isn't as rigorous self.assertAlmostEqual(result.A, a_in, 0) self.assertAlmostEqual(result.tau, tau_in, 0) self.assertAlmostEqual(result.Z, 0.0, 0) self.assertTrue(result.tries > 0) self.assertAlmostEqual(result.fitted[0], a_in, 0) self.assertAlmostEqual(result.residuals[0], 0.0, 0) self.assertAlmostEqual(result.residuals[-1], 0.0, 0)
def test_noise_given(self): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, noise_type='NOISE_GIVEN', sig=list(range(samples))) with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GIVEN', sig=2) with self.assertRaises(TypeError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GIVEN', sig={"foo": "bar"}) with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GIVEN', sig='foo') with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_GIVEN', sig=[1, 2, 3, 4, 5])
def test_instr(self): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, instr=[1, 2, 3, 4, 5]) flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, instr=["42"]) flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, instr=list(range(300)) ) # no errors??? ask mark/jenu. ok we should actually just check that it's the right length with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, instr=5) with self.assertRaises(ValueError): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, instr="foo") with self.assertRaises(TypeError): flimlib.GCI_triple_integral_fitting_engine(period, photon_count32, instr={"foo": "bar"})
def test_chisq_target(self): result = flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, chisq_target=0.0 ) #impossible target causes it to run more than once and give up self.assertTrue(result.tries > 1)
def test_noise_poisson_fit(self): flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_POISSON_FIT') # this should print a warning flimlib.GCI_triple_integral_fitting_engine( period, photon_count32, noise_type='NOISE_POISSON_FIT', sig=2)