Skip to content

Commit

Permalink
Merge pull request #282 from gyorilab/epsilon
Browse files Browse the repository at this point in the history
Handle non-standard unicode characters in models
  • Loading branch information
bgyori authored Feb 17, 2024
2 parents e133987 + 073630a commit 766cab2
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
5 changes: 4 additions & 1 deletion mira/metamodel/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@

import sympy
import re
import unicodedata


def get_parseable_expression(s: str) -> str:
"""Return an expression that can be parsed using sympy."""
s = s.replace('lambda', 'XXlambdaXX')
return re.sub(r'\.(?=\D)', 'XX_XX', s)
s = re.sub(r'\.(?=\D)', 'XX_XX', s)
s = unicodedata.normalize('NFKC', s)
return s


def revert_parseable_expression(s: str) -> str:
Expand Down
6 changes: 6 additions & 0 deletions tests/test_metamodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,3 +238,9 @@ def test_from_askenet_petri_mathml():
mathml_str = sorted_json_str(mathml_tm.dict())
org_str = sorted_json_str(tm.dict())
assert mathml_str == org_str


def test_safe_parse():
eps = 'ϵ'
eps_sym = sympy.Symbol(eps)
assert safe_parse_expr(eps, local_dict={eps: eps_sym}) == eps_sym

0 comments on commit 766cab2

Please sign in to comment.