def test_kipet_model_can_only_add_reaction_model(self): """ Test that only ReactionModels can be added to KipetModel.models """ kipet_model = kipet.KipetModel() r1 = [] self.assertRaises(ValueError, kipet_model.add_reaction, r1)
def test_load_data(self): """Test that KipetModel read_data_file method is working""" from pandas import DataFrame kipet_model = kipet.KipetModel() filename = 'example_data/Ex_1_C_data.txt' df_data = kipet_model.read_data_file(filename) self.assertIsInstance(df_data, DataFrame)
def test_kipet_model_can_add_multiple_models(self): """ Test that KipetModel instance can add a list of ReactionModel instances """ kipet_model = kipet.KipetModel() r1 = kipet_model.new_reaction('reaction_model_1') r2 = kipet_model.new_reaction('reaction_model_2') model_list = [r1, r2] kipet_model.add_model_list(model_list) self.assertEqual(2, len(kipet_model.models))
def test_kipet_model_can_copy_reaction_models_with_ignore(self): """ Test that KipetModel instance can copy a ReactionModel instances """ kipet_model = kipet.KipetModel() r1 = kipet_model.new_reaction('reaction_model_1') r1.add_component('A', value=1) r2 = kipet_model.new_reaction('reaction_model_2', model=r1, ignore=['components']) self.assertNotEqual(r1.components, r2.components)
def test_adding_algebraic_equation_with_division_tol(self): """ Test adding algebraic equation with division tolerance added to the numerator and denominator to ReactionModel """ kipet_model = kipet.KipetModel() r1 = self.make_simple_reaction_model_with_only_components(kipet_model) r1.add_alg_var('y', description='alg var') r1.add_component('B') r1.add_component('C') c = r1.get_model_vars() r1.add_algebraic('y', (c.B) / (c.B + c.C)) self.assertEqual('Z[0,B] + 1e-12', r1.algs_dict['y'].expression.args[0].to_string())
def test_adding_algebraic_equation(self): """ Test adding algebraic equation to ReactionModel """ kipet_model = kipet.KipetModel() r1 = self.make_simple_reaction_model_with_only_components(kipet_model) r1.add_alg_var('y', description='alg var') r1.add_component('B') r1.add_component('C') c = r1.get_model_vars() r1.add_algebraic('y', (c.B) / (c.B + c.C)) self.assertIn('y', c.var_dict) self.assertIn('A', c.var_dict) self.assertIn('B', c.var_dict) self.assertIn('y', r1.algs_dict)
def setUp(self): self.u = pint.UnitRegistry() self.kipet_model = kipet.KipetModel() r1 = self.kipet_model.new_reaction('fed_batch_parest') r1.add_parameter('k1', value=0.05, units='ft**3/mol/min') r1.add_component('A', value=2.0, units='mol/L') r1.add_component('B', value=0.0, units='mol/L') r1.add_component('C', value=0.0, units='mol/L') r1.add_state('V', value=0.264172, units='gal') # Volumetric flow rate for B feed r1.add_alg_var('R1', units='mol/L/min', description='Reaction 1') filename = 'example_data/abc_fedbatch.csv' r1.add_data('C_data', file=filename, units='mol/L', remove_negatives=True) # Step function for B feed - steps can be added r1.add_step('s_Qin_B', coeff=1, time=15, switch='off') r1.add_constant('Qin_B', value=6, units='L/hour') # Concentration of B in feed r1.add_constant('Cin_B', value=2.0, units='mol/L') #r1.check_component_units() c = r1.get_model_vars() # c now holds of all of the pyomo variables needed to define the equations # Using this object allows for a much simpler construction of expressions r1.add_algebraic('R1', c.k1 * c.A * c.B) Qin_B = c.Qin_B * (c.s_Qin_B) QV = Qin_B / c.V r1.add_ode('A', -c.A * QV - c.R1) r1.add_ode('B', (c.Cin_B - c.B) * QV - c.R1) r1.add_ode('C', -c.C * QV + c.R1) r1.add_ode('V', Qin_B) self.r1 = r1
def make_kipet_model_instance_and_add_reaction(self): kipet_model = kipet.KipetModel() r1 = kipet_model.new_reaction('reaction_model') return kipet_model, r1
def test_kipet_model_int(self): """ Test that it can create a KipetModel instance """ kipet_model = kipet.KipetModel() self.assertIsInstance(kipet_model, kipet.KipetModel)
self.assertIsInstance(df_data, DataFrame) # def test_mee(self): # from unittest.mock import MagicMock # kipet_model = kipet.KipetModel() # r1 = self.make_simple_reaction_model_with_data(kipet_model, name='1', subset=10) # r2 = self.make_simple_reaction_model_with_data(kipet_model, name='2', subset=11) # # = kipet.KipetModel() # kipet_model._create_multiple_experiments_estimator = MagicMock(return_value=True) # kipet_model.run_opt() #kipet_model._create_multiple_experiments_estimator(3, 4, 5, key='value') if __name__ == '__main__': unittest.main() #%% from unittest.mock import MagicMock thing = kipet.KipetModel() thing._create_multiple_experiments_estimator = MagicMock(return_value=True) thing._create_multiple_experiments_estimator(3, 4, 5, key='value')