From 3cba5901f9d0aa608823c0197738e5a07b9fbde9 Mon Sep 17 00:00:00 2001 From: Artur Meski Date: Sun, 3 Sep 2017 18:52:25 +0100 Subject: [PATCH] get_param --- ...action_system_with_concentrations_param.py | 19 +++++++++++++++++++ rs_testing.py | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/rs/reaction_system_with_concentrations_param.py b/rs/reaction_system_with_concentrations_param.py index c86194f..f984bab 100644 --- a/rs/reaction_system_with_concentrations_param.py +++ b/rs/reaction_system_with_concentrations_param.py @@ -17,6 +17,7 @@ class ReactionSystemWithConcentrationsParam(ReactionSystem): def __init__(self): self.reactions = [] + self.parameters = dict() self.parametric_reactions = [] self.meta_reactions = dict() self.permanent_entities = dict() @@ -49,6 +50,24 @@ class ReactionSystemWithConcentrationsParam(ReactionSystem): if self.max_concentration < def_max_conc: self.max_concentration = def_max_conc + def get_param(self, name): + if self.has_param(name): + return self.parameters[name] + else: + param = ParameterObj(name) + self.add_param(param) + return param + + def has_param(self, name): + return name in self.parameters + + def add_param(self, param): + if param in self.parameters: + raise RuntimeError("Parameter {:s} already exists".format(param)) + param_key = param.name + self.parameters[param_key] = param + self.parameters[param_key].idx = len(self.parameters) + def get_max_concentration_level(self, e): if e in self.max_conc_per_ent: diff --git a/rs_testing.py b/rs_testing.py index 5b77c7c..effc5a3 100644 --- a/rs_testing.py +++ b/rs_testing.py @@ -24,10 +24,12 @@ def trivial_param(): r.add_bg_set_entity(("c", 3)) r.add_bg_set_entity(("z", 3)) r.add_bg_set_entity(("final", 1)) + + param_p1 = r.get_param("P1") r.add_reaction([("x", 1)], [("c", 1)], [("y", 2)]) r.add_reaction([("y", 1)], [("c", 1)], [("z", 1)]) - r.add_reaction(ParameterObj("P1"), [("c", 1)], [("final", 1)]) + r.add_reaction(param_p1, [("c", 1)], [("final", 1)]) c = ContextAutomatonWithConcentrations(r) c.add_init_state("0")