Skip to content

Commit

Permalink
bidirectional rules extended
Browse files Browse the repository at this point in the history
  • Loading branch information
Marketa Opichalova committed Feb 27, 2024
1 parent 2649431 commit f648027
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 5 deletions.
52 changes: 50 additions & 2 deletions Testing/objects_testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@
reversed_complexes_4 = [(0, 0), (1, 1), (2, 3)]
pairs_4 = [(0, 2), (1, 3)]
rate_4 = Rate("3.0*[K()::cyt]/2.0*v_1")
reversed_rate4 = Rate("2.0*[K()::cyt]/3.0*v_1")
reversed_rate_4 = Rate("2.0*[K()::cyt]/3.0*v_1")

r4 = Rule(sequence_4, mid_4, compartments_4, complexes_4, pairs_4, rate_4)
reversed_r4a = Rule(
Expand All @@ -266,8 +266,56 @@
compartments_4,
reversed_complexes_4,
pairs_4,
reversed_rate4,
reversed_rate_4,
)
sequence_one_side_bidirectional = (s36, s37)
mid_one_side_bidirectional_a = 2
mid_one_side_bidirectional_b = 0
compartments_one_side_bidirectional = ["cyt"] * 2
complexes_one_side_bidirectional = [(0, 0), (1, 1)]
pairs_one_side_bidirectional_a = [(0, None), (1, None)]
pairs_one_side_bidirectional_b = [(None, 0), (None, 1)]
one_side_bidirectional_a = Rule(
sequence_one_side_bidirectional,
mid_one_side_bidirectional_a,
compartments_one_side_bidirectional,
complexes_one_side_bidirectional,
pairs_one_side_bidirectional_a,
rate_4,
)
one_side_bidirectional_b = Rule(
sequence_one_side_bidirectional,
mid_one_side_bidirectional_b,
compartments_one_side_bidirectional,
complexes_one_side_bidirectional,
pairs_one_side_bidirectional_b,
rate_4,
)
one_side_bidirectional_b_reversed_rate = Rule(
sequence_one_side_bidirectional,
mid_one_side_bidirectional_b,
compartments_one_side_bidirectional,
complexes_one_side_bidirectional,
pairs_one_side_bidirectional_b,
reversed_rate_4,
)
one_side_bidirectional_a_no_rate = Rule(
sequence_one_side_bidirectional,
mid_one_side_bidirectional_a,
compartments_one_side_bidirectional,
complexes_one_side_bidirectional,
pairs_one_side_bidirectional_a,
None,
)
one_side_bidirectional_b_no_rate = Rule(
sequence_one_side_bidirectional,
mid_one_side_bidirectional_b,
compartments_one_side_bidirectional,
complexes_one_side_bidirectional,
pairs_one_side_bidirectional_b,
None,
)


sequence_5 = (s34, s35, s36, s37, s38)
mid_5 = 2
Expand Down
34 changes: 31 additions & 3 deletions Testing/parsing/test_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,47 @@ def test_parser():
def test_bidirectional():
rule_expr = "#! rules\nK(S{u}).B()::cyt <=> K(S{p})::cyt + B()::cyt"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.rule_no_rate in parsed.data["rules"]
assert objects.reversed_no_rate in parsed.data["rules"]

rule_expr = (
"#! rules\nK(S{u}).B()::cyt <=> K(S{p})::cyt + B()::cyt @ 3*[K()::cyt]/2*v_1"
)
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.r4 in parsed.data["rules"]
assert objects.reversed_r4a in parsed.data["rules"]

rule_expr = (
"#! rules\nK(S{u}).B()::cyt <=> K(S{p})::cyt + B()::cyt @ 3*[K()::cyt]/2*v_1 | 2*[K()::cyt]/3*v_1"
)
rule_expr = "#! rules\nK(S{u}).B()::cyt <=> K(S{p})::cyt + B()::cyt @ 3*[K()::cyt]/2*v_1 | 2*[K()::cyt]/3*v_1"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.r4 in parsed.data["rules"]
assert objects.reversed_r4b in parsed.data["rules"]

rule_expr = "#! rules\n <=> K(S{p})::cyt + B()::cyt @ 3*[K()::cyt]/2*v_1"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.one_side_bidirectional_a in parsed.data["rules"]
assert objects.one_side_bidirectional_b in parsed.data["rules"]

rule_expr = "#! rules\n K(S{p})::cyt + B()::cyt <=> @ 3*[K()::cyt]/2*v_1"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.one_side_bidirectional_a in parsed.data["rules"]
assert objects.one_side_bidirectional_b in parsed.data["rules"]

rule_expr = "#! rules\n K(S{p})::cyt + B()::cyt <=> @ 3*[K()::cyt]/2*v_1 | 2*[K()::cyt]/3*v_1"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.one_side_bidirectional_a in parsed.data["rules"]
assert objects.one_side_bidirectional_b_reversed_rate in parsed.data["rules"]

rule_expr = "#! rules\n K(S{p})::cyt + B()::cyt <=>"
parsed = objects.rules_parser.parse(rule_expr)
assert parsed.success
assert objects.one_side_bidirectional_a_no_rate in parsed.data["rules"]
assert objects.one_side_bidirectional_b_no_rate in parsed.data["rules"]

rule_expr = "#! rules\nK(S{u}).B()::cyt => K(S{p})::cyt + B()::cyt @ 3*[K()::cyt]/2*v_1 | 2*[K()::cyt]/3*v_1"
assert not objects.rules_parser.parse(rule_expr).success

0 comments on commit f648027

Please sign in to comment.