From 5a1ed3c74d4b43366cc28232ab283eaab338de7c Mon Sep 17 00:00:00 2001 From: nanglo123 Date: Thu, 19 Sep 2024 14:16:02 -0400 Subject: [PATCH 1/2] Add consumed and produced key if a template is reversible for sbml amr export --- mira/modeling/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mira/modeling/__init__.py b/mira/modeling/__init__.py index 3ec931fde..52cd54880 100644 --- a/mira/modeling/__init__.py +++ b/mira/modeling/__init__.py @@ -284,6 +284,7 @@ def make_model(self): self.template_model.initials) for participant in template.left ) + consumed_key = tuple(c.key for c in consumed) else: consumed, consumed_key = tuple(), None @@ -333,6 +334,7 @@ def make_model(self): self.template_model.initials) for participant in template.right ) + produced_key = tuple(p.key for p in produced) elif not is_replication(template): produced, produced_key = tuple(), None From cc9fb51b0efead0c22768bd8e0fc67a93ac093b6 Mon Sep 17 00:00:00 2001 From: Ben Gyori Date: Mon, 23 Sep 2024 00:12:19 -0400 Subject: [PATCH 2/2] Add test for reversible flux AMR generation --- tests/test_metamodel.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_metamodel.py b/tests/test_metamodel.py index f3393adea..accdf19be 100644 --- a/tests/test_metamodel.py +++ b/tests/test_metamodel.py @@ -263,3 +263,17 @@ def test_initial_expression_float(): init = Initial(concept=Concept(name='x'), expression=1) assert isinstance(init.expression, SympyExprStr) assert isinstance(init.expression.args[0], sympy.Expr) + + +def test_reversible_flux(): + from mira.modeling import Model + from mira.modeling.amr.petrinet import template_model_to_petrinet_json + t = ReversibleFlux( + left=[Concept(name='x')], + right=[Concept(name='y')], + ) + # Make sure we can export to AMR + tm = TemplateModel(templates=[t]) + model = Model(tm) + amr = template_model_to_petrinet_json(tm) +