def convert(obj: Union[str, Real, Expr, AnalyticSegment, 'PiecewiseAnalytic']): if isinstance(obj, str): from biolucia.parser import expression, token_phase value = PiecewiseAnalytic([AnalyticSegment(-inf, inf, expression.parse(token_phase(obj)))]) # TODO (drhagen): make this actually parse piecewise elif isinstance(obj, Expr) or isinstance(obj, Real): value = PiecewiseAnalytic([AnalyticSegment(-inf, inf, obj)]) # TODO (drhagen): make this actually parse piecewise elif isinstance(obj, AnalyticSegment): value = PiecewiseAnalytic([obj]) elif isinstance(obj, PiecewiseAnalytic): value = obj else: raise ValueError() return value
def parse(component: str): import biolucia.parser as parser # Circular import return parser.component.parse(parser.token_phase(component))