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')
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))