Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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
Exemplo n.º 8
0
    def make_kipet_model_instance_and_add_reaction(self):

        kipet_model = kipet.KipetModel()
        r1 = kipet_model.new_reaction('reaction_model')
        return kipet_model, r1
Exemplo n.º 9
0
 def test_kipet_model_int(self):
     """
     Test that it can create a KipetModel instance
     """
     kipet_model = kipet.KipetModel()
     self.assertIsInstance(kipet_model, kipet.KipetModel)
Exemplo n.º 10
0
        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')