Skip to content

Commit

Permalink
Calibrate association constants to achieve steady states with dissoci…
Browse files Browse the repository at this point in the history
…ation reactions
  • Loading branch information
YinHoon committed Mar 12, 2020
1 parent 8a8739c commit 2862db5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
6 changes: 4 additions & 2 deletions tests/eukaryote/test_complexation.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,10 @@ def test_methods(self):
self.assertEqual(model.parameters.get_one(id='K_m_complex_1_association_in_n_prot3').comments,
'The value was assumed to be 1.0 times the concentration of prot3 in nucleus')
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_association_in_n').value, (1/40000 + 2/20000 + 1/25000)/0.1)
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_association_in_n').comments,
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_association_in_n').comments,
'The value was assigned so that the ratio of effective dissociation constant to '
'association constant is the same as the specified ratio of free subunit to subunit in complexes '
'at equilibrium')
'at equilibrium')
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_dissociation_in_n_degrade_prot1').value, 1/40000.)
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_dissociation_in_n_degrade_prot2').value, 2/20000.)
self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_dissociation_in_n_degrade_prot3').value, 1/25000.)
Expand All @@ -268,6 +268,8 @@ def test_methods(self):
self.assertEqual(model.distribution_init_concentrations.get_one(id='dist-init-conc-complex_2[m]').mean, 9)
self.assertEqual(model.distribution_init_concentrations.get_one(id='dist-init-conc-complex_2[c_m]').mean, 9)

self.assertEqual(model.parameters.get_one(id='k_cat_complex_1_association_in_n').value, (1/40000 + 2/20000 + 1/25000) * 4)
self.assertEqual(model.parameters.get_one(id='k_cat_complex_2_association_in_n').value, 2/25000 * 2.5)
self.assertEqual(model.parameters.get_one(id='K_m_complex_1_association_in_n_prot1').value, 6/scipy.constants.Avogadro/5E-14)
self.assertEqual(model.parameters.get_one(id='K_m_complex_1_association_in_n_prot1').comments,
'The value was assumed to be 1.0 times the concentration of prot1 in nucleus')
Expand Down
16 changes: 11 additions & 5 deletions wc_model_gen/eukaryote/complexation.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,8 @@ def calibrate_submodel(self):
complex_st_id = reaction.id[:reaction.id.index('_association')]
compl_compartment_id = reaction.id[reaction.id.index('_in_') + 4:]
compl_compartment = model.compartments.get_one(id=compl_compartment_id)
model_compl_species = model.species_types.get_one(
id=complex_st_id).species.get_one(compartment=compl_compartment)

for param in reaction.rate_laws[0].expression.parameters:
if 'K_m_' in param.id:
Expand All @@ -312,11 +314,15 @@ def calibrate_submodel(self):
param.comments = 'The value was assigned to 1e-05 because the concentration of {} in {} was not known'.format(
species.species_type.id, compl_compartment.name)
elif 'k_cat_' in param.id:
param.value = self._effective_dissociation_constant['{}[{}]'.format(
complex_st_id, compl_compartment_id)] / subunit_equilibrium_fraction
param.comments = 'The value was assigned so that the ratio of effective dissociation constant to ' + \
'association constant is the same as the specified ratio of free subunit to subunit in complexes ' + \
'at equilibrium'
if model_compl_species.distribution_init_concentration:
param.value = self._effective_dissociation_constant['{}[{}]'.format(
complex_st_id, compl_compartment_id)] * model_compl_species.distribution_init_concentration.mean
else:
param.value = self._effective_dissociation_constant['{}[{}]'.format(
complex_st_id, compl_compartment_id)] / subunit_equilibrium_fraction
param.comments = 'The value was assigned so that the ratio of effective dissociation constant to ' + \
'association constant is the same as the specified ratio of free subunit to subunit in complexes ' + \
'at equilibrium'

print('Complexation submodel has been generated')

Expand Down

0 comments on commit 2862db5

Please sign in to comment.