def test_update_events(self): m = equilibrium_model() con = InitialValueExperiment(Model().add('@(B < 2) B = 0')) sim = simulate(m, con) self.assertTrue(sim.matrix_values(0.7, 'B') < 1)
def test_simulate_system2(self): m = equilibrium_model() con = InitialValueExperiment(equilibrium_dose_variant()) sim = m.simulate(con) self.assertEqual(sim.system_values(0, 'kf'), 0.5) self.assertEqual(sim.system_values(0, 'A'), 10) self.assertLess(sim.system_values(1, 'A'), 10)
def test_simulate_system2(self): m = equilibrium_model() con = InitialValueExperiment(equilibrium_dose_variant()) sim = simulate(m, con) self.assertEqual(sim.matrix_values(0, 'kf'), 0.5) self.assertEqual(sim.matrix_values(0, 'A'), 10) self.assertLess(sim.matrix_values(1, 'A'), 10)
def test_log_probability_dk(self): m = equilibrium_model() con = InitialValueExperiment() unc = AffineMeasurementUncertainty(2, 0) obs = LinearWeightedSumOfSquaresObservation([0], ['A'], unc) assert_log_probability_dk(m, con, obs, m['A0'].value, atol=1e-6) assert_log_probability_dk(m, con, obs, m['A0'].value + 2) obs = LinearWeightedSumOfSquaresObservation([0, 0, 0], ['A', 'B', 'C'], unc) assert_log_probability_dk( m, con, obs, [m['A0'].value + 0.1, m['B0'].value + 0.2, 0.3])
def test_simulate_system(self): m = equilibrium_model() con = InitialValueExperiment() sim = m.simulate(con) self.assertEqual(sim.system_values(0, 'kf'), 0.5) self.assertEqual(sim.system_values(0, 'A'), 10) self.assertLess(sim.system_values(1, 'A'), 10) self.assertTrue(array_equal(sim.system_values(0, ['A', 'B']), array([10, 5]))) self.assertTrue(array_equal(sim.system_values([0, 1], 'kf'), array([0.5, 0.5]))) self.assertTrue(array_equal(sim.system_values([0, 1, 2], ['kr', 'kf']), array([[0.2, 0.5], [0.2, 0.5], [0.2, 0.5]])))
def test_simulate_single(self): m = equilibrium_model() sim = simulate(m) self.assertEqual(sim.vector_values(0, 'A'), m['A0'].value) assert_allclose(sim.vector_values(0, ['A', 'A0']), [m['A0'].value, m['A0'].value]) self.assertEqual(sim.matrix_values(0, 'kf'), 0.5) self.assertEqual(sim.matrix_values(0, 'A'), 10) self.assertLess(sim.matrix_values(1, 'A'), 10) assert_allclose(sim.matrix_values(0, ['A', 'B']), np.asarray([10, 5])) assert_allclose(sim.matrix_values([0, 1], 'kf'), np.asarray([0.5, 0.5])) assert_allclose(sim.matrix_values([0, 1, 2], ['kr', 'kf']), np.asarray([[0.2, 0.5], [0.2, 0.5], [0.2, 0.5]]))
def test_simulate_sensitivity(self): m = equilibrium_model() con = InitialValueExperiment() sim = simulate(m, con, parameters=['A0', 'kr']) assert_allclose(sim.matrix_sensitivities(0.0, 'A'), [1.0, 0.0]) self.assertEqual(sim.matrix_sensitivities(0.0, 'A').shape, (2, )) assert_allclose(sim.matrix_sensitivities([0.0, 10.0], 'A0'), [[1.0, 0.0], [1.0, 0.0]]) self.assertEqual( sim.matrix_sensitivities([0.0, 10.0], 'A0').shape, (2, 2)) assert_allclose(sim.matrix_sensitivities(0.0, ['A', 'A0']), [[1.0, 0.0], [1.0, 0.0]]) self.assertEqual( sim.matrix_sensitivities(0.0, ['A', 'A0']).shape, (2, 2)) assert_allclose(sim.matrix_sensitivities([0.0, 10.0], ['A0', 'B0']), [[[1.0, 0.0], [0.0, 0.0]], [[1.0, 0.0], [0.0, 0.0]]]) self.assertEqual( sim.matrix_sensitivities([0.0, 10.0], ['A', 'A0']).shape, (2, 2, 2))
def test_log_probability(self): m = equilibrium_model() con = InitialValueExperiment() sim = simulate(m, con) unc = AffineMeasurementUncertainty(2, 0) obs = LinearWeightedSumOfSquaresObservation([0], ['A'], unc) self.assertAlmostEqual(obs.probability(sim, m['A0'].value), norm.pdf(m['A0'].value, m['A0'].value, 2)) self.assertAlmostEqual(obs.log_probability(sim, m['A0'].value), norm.logpdf(m['A0'].value, m['A0'].value, 2)) obs = LinearWeightedSumOfSquaresObservation([0], ['A'], unc) self.assertAlmostEqual(obs.probability(sim, m['A0'].value + 2), norm.pdf(m['A0'].value + 2, m['A0'].value, 2)) self.assertAlmostEqual( obs.log_probability(sim, m['A0'].value + 2), norm.logpdf(m['A0'].value + 2, m['A0'].value, 2)) self.assertEqual(obs.sample(sim).size, 1) obs = LinearWeightedSumOfSquaresObservation([0, 0, 0], ['A', 'B', 'C'], unc) ics = [m['A0'].value, m['B0'].value, 0] self.assertAlmostEqual( obs.probability(sim, ics), multivariate_normal.pdf([0, 0, 0], [0, 0, 0], 2**2)) self.assertAlmostEqual( obs.log_probability(sim, ics), multivariate_normal.logpdf([0, 0, 0], [0, 0, 0], 2**2)) self.assertAlmostEqual( obs.log_probability(sim, ics), multivariate_normal.logpdf([0, 0, 0], [0, 0, 0], np.asarray([2, 2, 2])**2)) self.assertEqual(obs.sample(sim).size, 3)