Skip to content

Commit

Permalink
SSA reaction rate in CN space
Browse files Browse the repository at this point in the history
  • Loading branch information
balazs1987 committed Nov 30, 2018
1 parent ca29f8a commit b984792
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 4 deletions.
3 changes: 2 additions & 1 deletion tests/multialgorithm/submodels/test_submodels.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ def test_get_specie_concentrations(self):
"dynamic submodel .* cannot compute concentration in compartment .* with volume=0")

def test_calc_reaction_rates(self):
expected_rates = {'reaction_2': 0.0, 'reaction_4': 2.0}
# reaction_4 is adjusted w V*NA factor to account for calculating rxn rate in copy space
expected_rates = {'reaction_2': 0.0, 'reaction_4': 13791.0}
for dynamic_submodel in self.dynamic_submodels.values():
rates = dynamic_submodel.calc_reaction_rates()
for index,rxn in enumerate(dynamic_submodel.reactions):
Expand Down
1 change: 1 addition & 0 deletions tests/multialgorithm/test_multialgorithm_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ def setUp(self):
self.model = MakeModels.make_test_model('2 species, 1 reaction, with rates given by reactant population',
specie_copy_numbers={'spec_type_0[compt_1]':10, 'spec_type_1[compt_1]':10})

@unittest.skip('Disable temporarily, while A finishes "incomplete-updates" branch')
def test_nan_propensities(self):
self.model.species_types.get_one(id='spec_type_0').molecular_weight = float('NaN')
multialgorithm_simulation = MultialgorithmSimulation(self.model, {})
Expand Down
43 changes: 43 additions & 0 deletions wc_sim.core.debug.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# log config for the core WC simulator
[debug_logs]
[[formatters]]
[[[default]]]
template = {timestamp}; {name:s}; {level:s}; {src:s}:{func:s}:{line:d}; {sim_time:f}; {message:s}

[[[plot]]]
template = {timestamp}; {message:s}

[[handlers]]
[[[debug.file]]]
class = FileHandler
filename = ~/tmp/logs/wc/debug.log
mode = a

[[[plot.file]]]
class = FileHandler
filename = ~/tmp/logs/wc/plot.log
mode = w

[[[debug.console]]]
class = StreamHandler
stream = stdout

[[loggers]]
[[[wc.debug.file]]]
level = DEBUG
formatters = default,
handlers = debug.file,
[[[[additional_context]]]]
sim_time = get_sim_time

[[[wc.debug.console]]]
level = INFO
formatters = default,
handlers = debug.console,
[[[[additional_context]]]]
sim_time = get_sim_time

[[[wc.plot.file]]]
level = INFO
formatters = default, plot,
handlers = plot.file,
43 changes: 43 additions & 0 deletions wc_sim/core/config/wc_sim.core.debug.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# log config for the core WC simulator
[debug_logs]
[[formatters]]
[[[default]]]
template = {timestamp}; {name:s}; {level:s}; {src:s}:{func:s}:{line:d}; {sim_time:f}; {message:s}

[[[plot]]]
template = {timestamp}; {message:s}

[[handlers]]
[[[debug.file]]]
class = FileHandler
filename = ~/tmp/logs/wc/debug.log
mode = a

[[[plot.file]]]
class = FileHandler
filename = ~/tmp/logs/wc/plot.log
mode = w

[[[debug.console]]]
class = StreamHandler
stream = stdout

[[loggers]]
[[[wc.debug.file]]]
level = DEBUG
formatters = default,
handlers = debug.file,
[[[[additional_context]]]]
sim_time = get_sim_time

[[[wc.debug.console]]]
level = INFO
formatters = default,
handlers = debug.console,
[[[[additional_context]]]]
sim_time = get_sim_time

[[[wc.plot.file]]]
level = INFO
formatters = default, plot,
handlers = plot.file,
15 changes: 12 additions & 3 deletions wc_sim/multialgorithm/submodels/dynamic_submodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,11 +154,20 @@ def calc_reaction_rates(self):
:obj:`np.ndarray`: a numpy array of reaction rates, indexed by reaction index
"""
# TODO(Arthur): optimization: get concentrations only for modifiers in the reactions
species_concentrations = self.get_specie_concentrations()
for idx_reaction, rxn in enumerate(self.reactions):
# species_concentrations = self.get_specie_concentrations()
species_counts = self.get_specie_counts()

for idx_reaction, rxn in enumerate(self.reactions):
if rxn.rate_laws:
parameter_values = {param.id: param.value for param in rxn.rate_laws[0].equation.parameters}
self.rates[idx_reaction] = RateLawUtils.eval_rate_law(rxn.rate_laws[0], species_concentrations, parameter_values)
self.rates[idx_reaction] = RateLawUtils.eval_rate_law(rxn.rate_laws[0], species_counts, parameter_values)

#Balazs debug
#if rxn.id=='transcription_tu_1_1' or rxn.id=='degrad_tu_1_1' :
# if random.random() > 0.95:
# print('Rate of reaction {}: {}'.format(rxn.id, self.rates[idx_reaction]))


# TODO(Arthur): optimization: get this if to work:
# if self.logger.isEnabledFor(self.logger.getEffectiveLevel()):
# print('self.logger.getEffectiveLevel())', self.logger.getEffectiveLevel())
Expand Down

0 comments on commit b984792

Please sign in to comment.