Ejemplo n.º 1
0
 def test_rate_law_expressions_with_multiple_model_types(self):
     fixture_filename = os.path.join(os.path.dirname(__file__), 'fixtures', 'example-model.xlsx')
     model = Reader().run(fixture_filename)[Model][0]
     rate_laws = model.get_rate_laws(id='AK_AMP-backward')
     self.assertEqual(len(rate_laws), 1)
     rate_law = rate_laws[0]
     self.assertEqual(len(rate_law.expression.species), 1)
     self.assertEqual(rate_law.expression.species[0].id, 'Adk_Protein[c]')
     self.assertEqual(len(rate_law.expression.parameters), 1)
     self.assertEqual(rate_law.expression.parameters[0].id, 'k_cat_rev_ak')
     self.assertEqual(len(rate_law.expression.observables), 1)
     self.assertEqual(rate_law.expression.observables[0].id, 'AXP_c')
     self.assertEqual(len(rate_law.expression.functions), 1)
     self.assertEqual(rate_law.expression.functions[0].id, 'func_1')
Ejemplo n.º 2
0
class TestInitialDynamicComponentsComprehensively(unittest.TestCase):
    def setUp(self):
        self.model_file = os.path.join(os.path.dirname(__file__), 'fixtures',
                                       'test_dynamic_expressions.xlsx')
        self.model = Reader().run(self.model_file)[Model][0]
        de_simulation_config = SimulationConfig(time_max=10)
        wc_sim_config = WCSimulationConfig(de_simulation_config)
        multialgorithm_simulation = MultialgorithmSimulation(
            self.model, wc_sim_config)
        _, self.dynamic_model = multialgorithm_simulation.build_simulation()

    def test(self):
        # test all DynamicComponents that implement eval()

        ### Test DynamicExpressions ###
        # each one is tested using each of the objects it uses in some instance in self.model_file
        # DynamicFunction
        for id, dynamic_function in self.dynamic_model.dynamic_functions.items(
        ):
            expected_value = float(self.model.get_functions(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_function.eval(0),
                                              expected_value)
        # test eval_dynamic_functions()
        for func_id, func_val in self.dynamic_model.eval_dynamic_functions(
                0).items():
            expected_value = float(
                self.model.get_functions(id=func_id)[0].comments)
            numpy.testing.assert_approx_equal(func_val, expected_value)
        a_func_id = list(self.dynamic_model.dynamic_functions)[0]
        for func_id, func_val in \
            self.dynamic_model.eval_dynamic_functions(0, functions_to_eval=[a_func_id]).items():
            expected_value = float(
                self.model.get_functions(id=func_id)[0].comments)
            numpy.testing.assert_approx_equal(func_val, expected_value)

        # DynamicStopCondition
        for id, dynamic_stop_condition in self.dynamic_model.dynamic_stop_conditions.items(
        ):
            expected_val_in_comment = self.model.get_stop_conditions(
                id=id)[0].comments
            if expected_val_in_comment == 'True':
                expected_value = True
            elif expected_val_in_comment == 'False':
                expected_value = False
            self.assertEqual(expected_value, dynamic_stop_condition.eval(0))

        # DynamicObservable
        for id, dynamic_observable in self.dynamic_model.dynamic_observables.items(
        ):
            expected_value = float(
                self.model.get_observables(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_observable.eval(0),
                                              expected_value)
        # test eval_dynamic_observables()
        for obs_id, obs_val in self.dynamic_model.eval_dynamic_observables(
                0).items():
            expected_value = float(
                self.model.get_observables(id=obs_id)[0].comments)
            numpy.testing.assert_approx_equal(obs_val, expected_value)
        an_obs_id = list(self.dynamic_model.dynamic_observables)[0]
        for obs_id, obs_val in \
            self.dynamic_model.eval_dynamic_observables(0, observables_to_eval=[an_obs_id]).items():
            expected_value = float(
                self.model.get_observables(id=obs_id)[0].comments)
            numpy.testing.assert_approx_equal(obs_val, expected_value)

        # DynamicRateLaw
        for id, dynamic_rate_law in self.dynamic_model.dynamic_rate_laws.items(
        ):
            expected_value = float(self.model.get_rate_laws(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_rate_law.eval(0),
                                              expected_value)

        ### Test DynamicComponents ###
        # DynamicCompartment
        for id, dynamic_compartment in self.dynamic_model.dynamic_compartments.items(
        ):
            expected_value = float(
                self.model.get_compartments(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_compartment.eval(0),
                                              expected_value)

        # DynamicParameter
        for id, dynamic_parameter in self.dynamic_model.dynamic_parameters.items(
        ):
            expected_value = float(
                self.model.get_parameters(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_parameter.eval(0),
                                              expected_value)

        # DynamicSpecies
        for id, dynamic_species in self.dynamic_model.dynamic_species.items():
            expected_value = float(self.model.get_species(id=id)[0].comments)
            numpy.testing.assert_approx_equal(dynamic_species.eval(0),
                                              expected_value)

    # FIX FOR DE-SIM CHANGES: need to make a few dynamic models to test all branches of get_stop_condition()
    # a dynamic model with no stop concitions
    # a dynamic model with stop condidtions that all evaluate false
    # a dynamic model with at least one stop condidtions that evaluates true
    def test_get_stop_condition(self):
        all_stop_conditions = self.dynamic_model.get_stop_condition()
        self.assertTrue(callable(all_stop_conditions))
        self.assertTrue(all_stop_conditions(0))