def visit_assignment(self, assignment, **kwargs): prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) lhs = self.prefix_variable(assignment.lhs, **kwargs) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=assignment, prefix=prefix, exclude=prefix_excludes) return assignment.__class__(lhs=lhs, rhs=rhs)
def visit_timederivative(self, time_derivative, **kwargs): prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) dep = self.prefix_variable(time_derivative.dependent_variable, **kwargs) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=time_derivative, prefix=prefix, exclude=prefix_excludes) return time_derivative.__class__(dependent_variable=dep, rhs=rhs)
def test_get_prefixed_rhs_string(self): # Signature: name(cls, expr_obj, prefix='', exclude=None) # No Docstring # from nineml.abstraction_layer.component.util import MathUtil e = StrToExpr.alias("a := b*c + d/(e*sin(f+g/e)) + b1 + e_ / exp(12*g)") rhs_sub = MathUtil.get_prefixed_rhs_string(e, prefix="U_", exclude=["c", "e_"]) self.assertEqual(rhs_sub, "U_b*c + U_d/(e*sin(U_f+U_g/e)) + U_b1 + e_ / exp(12*U_g)")
def visit_condition(self, condition, **kwargs): prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=condition, prefix=prefix, exclude=prefix_excludes) return condition.__class__(rhs=rhs)