Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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])
Ejemplo n.º 5
0
    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]])))
Ejemplo n.º 6
0
    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]]))
Ejemplo n.º 7
0
    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))
Ejemplo n.º 8
0
    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)