Exemplo n.º 1
0
    def test_species_concentration_units(self):
        model = Model()
        st_1 = model.species_types.create(id='st_1')
        st_2 = model.species_types.create(id='st_2')
        c_1 = model.compartments.create(id='c_1')
        c_2 = model.compartments.create(id='c_2')
        st_1_c_1 = model.species.create(species_type=st_1, compartment=c_1)
        st_1_c_2 = model.species.create(species_type=st_1, compartment=c_2)
        st_2_c_1 = model.species.create(species_type=st_2, compartment=c_1)
        st_2_c_2 = model.species.create(species_type=st_2, compartment=c_2)
        st_1_c_1.id = st_1_c_1.gen_id()
        st_1_c_2.id = st_1_c_2.gen_id()
        st_2_c_1.id = st_2_c_1.gen_id()
        st_2_c_2.id = st_2_c_2.gen_id()

        st_1_c_1.distribution_init_concentration = DistributionInitConcentration(units=unit_registry.parse_units('gram'))
        st_1_c_2.distribution_init_concentration = DistributionInitConcentration(units=unit_registry.parse_units('hour'))
        st_2_c_1.distribution_init_concentration = DistributionInitConcentration(units=unit_registry.parse_units('liter'))
        st_2_c_2.distribution_init_concentration = DistributionInitConcentration(units=unit_registry.parse_units('second'))
        st_1_c_1.distribution_init_concentration.id = st_1_c_1.distribution_init_concentration.gen_id()
        st_1_c_2.distribution_init_concentration.id = st_1_c_2.distribution_init_concentration.gen_id()
        st_2_c_1.distribution_init_concentration.id = st_2_c_1.distribution_init_concentration.gen_id()
        st_2_c_2.distribution_init_concentration.id = st_2_c_2.distribution_init_concentration.gen_id()

        ChangeValueTransform((('species', {'id': 'st_1[c_1]'}),
                              'distribution_init_concentration',
                              'units'), unit_registry.parse_units('meter')).run(model)
        self.assertEqual(st_1_c_1.distribution_init_concentration.units, unit_registry.parse_units('meter'))
        self.assertEqual(st_1_c_2.distribution_init_concentration.units, unit_registry.parse_units('hour'))
        self.assertEqual(st_2_c_1.distribution_init_concentration.units, unit_registry.parse_units('liter'))
        self.assertEqual(st_2_c_2.distribution_init_concentration.units, unit_registry.parse_units('second'))
Exemplo n.º 2
0
    def test_parameter_value(self):
        model = Model()
        p_1 = model.parameters.create(id='p_1', value=1)
        p_2 = model.parameters.create(id='p_2', value=3)
        ChangeValueTransform((('parameters', {'id': 'p_1'}), 'value'), 2).run(model)

        self.assertEqual(p_1.value, 2)
        self.assertEqual(p_2.value, 3)
Exemplo n.º 3
0
    def test_parameter_units(self):
        model = Model()
        p_1 = model.parameters.create(id='p_1', units=unit_registry.parse_units('M'))
        p_2 = model.parameters.create(id='p_2', units=unit_registry.parse_units('l'))
        ChangeValueTransform((('parameters', {'id': 'p_1'}), 'units'), unit_registry.parse_units('m^2')).run(model)

        self.assertEqual(p_1.units, unit_registry.parse_units('m^2'))
        self.assertEqual(p_2.units, unit_registry.parse_units('l'))
Exemplo n.º 4
0
    def test_function_expression(self):
        model = Model()
        f = model.functions.create(id='f', expression=FunctionExpression(expression='x'))
        g = model.functions.create(id='g', expression=FunctionExpression(expression='y'))
        ChangeValueTransform((('functions', {'id': 'g'}), 'expression', 'expression'), 'z').run(model)

        self.assertEqual(f.expression.expression, 'x')
        self.assertEqual(g.expression.expression, 'z')
Exemplo n.º 5
0
    def test_compartment_density(self):
        model = Model()
        c = model.compartments.create(id='c', init_volume=InitVolume(mean=1.))
        e = model.compartments.create(id='e', init_volume=InitVolume(mean=1.))
        ChangeValueTransform((('compartments', {'id': 'c'}), ('init_volume',), ('mean',)), 2.).run(model)

        self.assertEqual(c.init_volume.mean, 2.)
        self.assertEqual(e.init_volume.mean, 1.)
Exemplo n.º 6
0
    def test_reaction_expression(self):
        model = Model()
        s_1 = model.submodels.create(id='s_1')
        r_1_1 = model.reactions.create(submodel=s_1, id='r_1_1')
        rl_f = model.rate_laws.create(reaction=r_1_1, direction=RateLawDirection.forward, expression=RateLawExpression(expression='x'))
        rl_b = model.rate_laws.create(reaction=r_1_1, direction=RateLawDirection.backward, expression=RateLawExpression(expression='y'))
        ChangeValueTransform((('reactions', {'id': 'r_1_1'}),
                              ('rate_laws', {'direction': RateLawDirection.forward}),
                              'expression',
                              'expression'), 'z').run(model)

        self.assertEqual(rl_f.expression.expression, 'z')
        self.assertEqual(rl_b.expression.expression, 'y')
Exemplo n.º 7
0
    def test_species_concentration_value(self):
        model = Model()
        st_1 = model.species_types.create(id='st_1')
        st_2 = model.species_types.create(id='st_2')
        c_1 = model.compartments.create(id='c_1')
        c_2 = model.compartments.create(id='c_2')
        st_1_c_1 = model.species.create(species_type=st_1, compartment=c_1)
        st_1_c_2 = model.species.create(species_type=st_1, compartment=c_2)
        st_2_c_1 = model.species.create(species_type=st_2, compartment=c_1)
        st_2_c_2 = model.species.create(species_type=st_2, compartment=c_2)
        st_1_c_1.id = st_1_c_1.gen_id()
        st_1_c_2.id = st_1_c_2.gen_id()
        st_2_c_1.id = st_2_c_1.gen_id()
        st_2_c_2.id = st_2_c_2.gen_id()

        st_1_c_1.distribution_init_concentration = DistributionInitConcentration(mean=1, std=2)
        st_1_c_2.distribution_init_concentration = DistributionInitConcentration(mean=2, std=2)
        st_2_c_1.distribution_init_concentration = DistributionInitConcentration(mean=3, std=2)
        st_2_c_2.distribution_init_concentration = DistributionInitConcentration(mean=4, std=2)
        st_1_c_1.distribution_init_concentration.id = st_1_c_1.distribution_init_concentration.gen_id()
        st_1_c_2.distribution_init_concentration.id = st_1_c_2.distribution_init_concentration.gen_id()
        st_2_c_1.distribution_init_concentration.id = st_2_c_1.distribution_init_concentration.gen_id()
        st_2_c_2.distribution_init_concentration.id = st_2_c_2.distribution_init_concentration.gen_id()

        ChangeValueTransform((('species', {'id': st_2_c_1.id}),
                              'distribution_init_concentration',
                              'mean'), 0).run(model)
        self.assertEqual(st_1_c_1.distribution_init_concentration.mean, 1)
        self.assertEqual(st_1_c_2.distribution_init_concentration.mean, 2)
        self.assertEqual(st_2_c_1.distribution_init_concentration.mean, 0)
        self.assertEqual(st_2_c_2.distribution_init_concentration.mean, 4)

        ChangeValueTransform((('species', {'id': st_2_c_1.id}),
                              'distribution_init_concentration',
                              'std'), 0).run(model)
        self.assertEqual(st_1_c_1.distribution_init_concentration.std, 2)
        self.assertEqual(st_1_c_2.distribution_init_concentration.std, 2)
        self.assertEqual(st_2_c_1.distribution_init_concentration.std, 0)
        self.assertEqual(st_2_c_2.distribution_init_concentration.std, 2)
Exemplo n.º 8
0
    def test_reaction_flux_bounds_max(self):
        model = Model()
        s_1 = model.submodels.create(id='s_1')
        s_2 = model.submodels.create(id='s_2')
        r_1_1 = model.reactions.create(submodel=s_1, id='r_1_1', flux_bounds=FluxBounds(max=1))
        r_1_2 = model.reactions.create(submodel=s_1, id='r_1_2', flux_bounds=FluxBounds(max=2))
        r_2_1 = model.reactions.create(submodel=s_2, id='r_2_1', flux_bounds=FluxBounds(max=3))
        r_2_2 = model.reactions.create(submodel=s_2, id='r_2_2', flux_bounds=FluxBounds(max=4))
        ChangeValueTransform((('reactions', {'id': 'r_2_2'}), ('flux_bounds',), ('max',)), 0).run(model)

        self.assertEqual(r_1_1.flux_bounds.max, 1)
        self.assertEqual(r_1_2.flux_bounds.max, 2)
        self.assertEqual(r_2_1.flux_bounds.max, 3)
        self.assertEqual(r_2_2.flux_bounds.max, 0)
Exemplo n.º 9
0
    def test_reaction_flux_bounds_min(self):
        model = Model()
        s_1 = model.submodels.create(id='s_1')
        s_2 = model.submodels.create(id='s_2')
        r_1_1 = model.reactions.create(submodel=s_1, id='r_1_1', flux_bounds=FluxBounds(min=1, units=unit_registry.parse_units('M s^-1')))
        r_1_2 = model.reactions.create(submodel=s_1, id='r_1_2', flux_bounds=FluxBounds(min=2, units=unit_registry.parse_units('M s^-1')))
        r_2_1 = model.reactions.create(submodel=s_2, id='r_2_1', flux_bounds=FluxBounds(min=3, units=unit_registry.parse_units('M s^-1')))
        r_2_2 = model.reactions.create(submodel=s_2, id='r_2_2', flux_bounds=FluxBounds(min=4, units=unit_registry.parse_units('M s^-1')))
        ChangeValueTransform((('reactions', {'id': 'r_1_2'}), ('flux_bounds',), ('min',)), 0).run(model)

        self.assertEqual(r_1_1.flux_bounds.min, 1)
        self.assertEqual(r_1_2.flux_bounds.min, 0)
        self.assertEqual(r_2_1.flux_bounds.min, 3)
        self.assertEqual(r_2_2.flux_bounds.min, 4)
Exemplo n.º 10
0
    def test_reaction_reversible(self):
        model = Model()
        s_1 = model.submodels.create(id='s_1')
        s_2 = model.submodels.create(id='s_2')
        r_1_1 = model.reactions.create(submodel=s_1, id='r_1_1', reversible=False)
        r_1_2 = model.reactions.create(submodel=s_1, id='r_1_2', reversible=False)
        r_2_1 = model.reactions.create(submodel=s_2, id='r_2_1', reversible=True)
        r_2_2 = model.reactions.create(submodel=s_2, id='r_2_2', reversible=True)
        ChangeValueTransform((('reactions', {'id': 'r_2_1'}), 'reversible'), False).run(model)

        self.assertEqual(r_1_1.reversible, False)
        self.assertEqual(r_1_2.reversible, False)
        self.assertEqual(r_2_1.reversible, False)
        self.assertEqual(r_2_2.reversible, True)
Exemplo n.º 11
0
    def test_reaction_k_cat(self):
        model = Model()
        s_1 = model.submodels.create(id='s_1')
        r_1_1 = model.reactions.create(submodel=s_1, id='r_1_1')
        k_cat_f = model.parameters.create(id='k_cat_f', value=1)
        k_cat_b = model.parameters.create(id='k_cat_b', value=2)
        rl_f = model.rate_laws.create(reaction=r_1_1, direction=RateLawDirection.forward,
                                      expression=RateLawExpression(
                                          parameters=[k_cat_f]))
        rl_b = model.rate_laws.create(reaction=r_1_1, direction=RateLawDirection.backward,
                                      expression=RateLawExpression(
                                          parameters=[k_cat_b]))
        rl_f.id = rl_f.gen_id()
        rl_b.id = rl_b.gen_id()
        ChangeValueTransform((('parameters', {'id': 'k_cat_b'}), 'value'), 0).run(model)

        self.assertEqual(k_cat_f.value, 1)
        self.assertEqual(k_cat_b.value, 0)
Exemplo n.º 12
0
    def test___eq__(self):
        t1 = ChangeValueTransform((('species', {'id': 'st_1[c_1]'}),
                                   'distribution_init_concentration',
                                   'std'), 0)
        t2 = ChangeValueTransform((('species', {'id': 'st_1[c_1]'}),
                                   'distribution_init_concentration',
                                   'std'), 0)
        self.assertEqual(t1, t2)

        t2.value = 1.
        self.assertNotEqual(t1, t2)

        self.assertNotEqual(t1, 1.)
        self.assertNotEqual(1., t1)

        t1 = ChangeValueTransform((('species', {'id': 'st_1[c_1]'}),
                                   'distribution_init_concentration',
                                   'std'), 0)
        t2 = ChangeValueTransform((('species', {'id': 'st_1[c_1]'}),
                                   'distribution_init_concentration',
                                   'mean'), 0)
        self.assertNotEqual(t1, t2)
Exemplo n.º 13
0
    def test_attr_path_to_from_str(self):
        t1 = ChangeValueTransform('species', 0)
        t2 = ChangeValueTransform(None, 0)
        t2.attr_path = ChangeValueTransform.attr_path_from_str(t1.attr_path_to_str())
        self.assertEqual(t1.attr_path, t2.attr_path)

        t1 = ChangeValueTransform(['species'], 0)
        t2 = ChangeValueTransform(None, 0)
        t2.attr_path = ChangeValueTransform.attr_path_from_str(t1.attr_path_to_str())
        self.assertEqual(t1.attr_path, t2.attr_path)

        t1 = ChangeValueTransform(['species', 'reactions'], 0)
        t2 = ChangeValueTransform(None, 0)
        t2.attr_path = ChangeValueTransform.attr_path_from_str(t1.attr_path_to_str())
        self.assertEqual(t1.attr_path, t2.attr_path)

        t1 = ChangeValueTransform([['species', {'id': 'st_1[c_1]'}],
                                   'distribution_init_concentration',
                                   'std'], 0)
        t2 = ChangeValueTransform(None, 0)
        t2.attr_path = ChangeValueTransform.attr_path_from_str(t1.attr_path_to_str())
        self.assertEqual(t1.attr_path, t2.attr_path)

        t1 = ChangeValueTransform(['rate_laws', {'direction': RateLawDirection.forward}], 0)
        t2 = ChangeValueTransform(None, 0)
        t2.attr_path = ChangeValueTransform.attr_path_from_str(t1.attr_path_to_str())
        self.assertEqual(t1.attr_path, t2.attr_path)