Skip to content

Commit

Permalink
Fixed rate laws in rna degradation and transcription
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashwin-Srinivasan committed Jul 23, 2018
1 parent 393ae66 commit 06820bf
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 30 deletions.
16 changes: 8 additions & 8 deletions tests/rand_gen/test_rna_degradation.py
Expand Up @@ -95,17 +95,17 @@ def test(self):
rnas[0].get_len() - 1)

# check rate laws
'''for rna, rxn in zip(rnas, submodel.reactions):
deg_rnase = model.observables.get_one(id='deg_rnase_obs')
deg_rnase = deg_rnase.species[0].species.species_type
deg_avg_conc = 5000/scipy.constants.Avogadro / cytosol.initial_volume
for rna, rxn in zip(rnas, submodel.reactions):
self.assertEqual(len(rxn.rate_laws), 1)
rl = rxn.rate_laws[0]
self.assertEqual(rl.direction.name, 'forward')
self.assertEqual(rl.equation.expression,
'k_cat * {0}[c] / (k_m + {0}[c])'.format(rna.id))
self.assertEqual(rl.equation.modifiers, [
rxn.participants[0].species])
'{0}[c] * (((k_cat * {1}[c]) / (k_m + {1}[c])) + {2})'.format(rna.id, deg_rnase.id, '0.1'))
self.assertEqual(rl.equation.modifiers, [deg_rnase.species.get_one(compartment=cytosol), rxn.participants[0].species])
self.assertEqual(rl.equation.parameters, [])
self.assertEqual(rl.k_m, rna.concentration)
self.assertEqual(rl.k_m,deg_avg_conc)
self.assertEqual(rl.k_cat, 2 * numpy.log(2) / rna.half_life)

k_cats = [rxn.rate_laws[0].k_cat for rxn in submodel.reactions]
numpy.testing.assert_almost_equal(numpy.mean(
k_cats), 2. * numpy.log(2.) * (1. / 120.), decimal=2)'''
14 changes: 7 additions & 7 deletions tests/rand_gen/test_transcription.py
Expand Up @@ -98,16 +98,16 @@ def test(self):
+ submodel.reactions[0].participants.get_one(species=h).coefficient,
-(rnas[0].get_len() - 1))

rna_poly = model.observables.get_one(
id='rna_poly_obs')
rna_poly = rna_poly.species[0].species
poly_avg_conc = 3000/scipy.constants.Avogadro / cytosol.initial_volume #http://bionumbers.hms.harvard.edu/bionumber.aspx?s=n&v=2&id=106199
# check rate laws
for rxn in submodel.reactions:
self.assertEqual(len(rxn.rate_laws), 1)
rl = rxn.rate_laws[0]
self.assertEqual(rl.direction.name, 'forward')
self.assertEqual(rl.equation.expression, 'k_cat')
self.assertEqual(rl.equation.modifiers, [])
self.assertEqual(rl.equation.expression, '(((k_cat * rna_poly[c]) / (k_m + rna_poly[c])))')
self.assertEqual(rl.equation.modifiers, [rna_poly])
self.assertEqual(rl.equation.parameters, [])
numpy.testing.assert_equal(rl.k_m, float('nan'))

k_cats = [rxn.rate_laws[0].k_cat for rxn in submodel.reactions]
numpy.testing.assert_almost_equal(numpy.mean(
k_cats), 10. * numpy.log(2.) * (1. / 120.), decimal=2)
numpy.testing.assert_equal(rl.k_m, poly_avg_conc)
29 changes: 14 additions & 15 deletions wc_model_gen/rand_gen/transcription.py
Expand Up @@ -130,26 +130,25 @@ def gen_reactions(self):

def gen_rate_laws(self):
""" Generate rate laws associated with submodel """
model = self.model
cell = self.knowledge_base.cell
cytosol = model.compartments.get_one(id='c')

mean_volume = cell.properties.get_one(id='mean_volume').value
mean_doubling_time = cell.properties.get_one(id='mean_doubling_time').value

equation = None
for rxn in self.model.get_reactions():
for rl in rxn.rate_laws:
if rl.equation.expression == 'k_cat':
equation = rl.equation
break
if equation is not None:
break
if equation is None:
equation = wc_lang.RateLawEquation(expression='k_cat')

poly_avg_conc = 3000/scipy.constants.Avogadro / cytosol.initial_volume #http://bionumbers.hms.harvard.edu/bionumber.aspx?s=n&v=2&id=106199
rna_poly = self.model.observables.get_one(
id='rna_poly_obs')
rna_poly = rna_poly.species[0].species.species_type
exp='(((k_cat * {}[c]) / (k_m + {}[c])))'.format(rna_poly.id, rna_poly.id)
equation = wc_lang.RateLawEquation(expression = exp)

rnas = cell.species_types.get(__type=wc_kb.RnaSpeciesType)
for rna, rxn in zip(rnas, self.submodel.reactions):
rl = rxn.rate_laws.create()
rl.direction = wc_lang.RateLawDirection.forward
rl.equation = equation
rl.k_cat = rna.concentration * scipy.constants.Avogadro * mean_volume * numpy.log(2) * (1 / rna.half_life)
rl.k_m = float('nan')
rl.direction = wc_lang.RateLawDirection.forward
rl.k_cat = 2 * (numpy.log(2) / rna.half_life + numpy.log(2) / mean_doubling_time)
rl.k_m = poly_avg_conc
rl.equation.modifiers.append(
rna_poly.species.get_one(compartment=cytosol))

0 comments on commit 06820bf

Please sign in to comment.