Пример #1
0
def parse_formula(code, extra_operators=[]):
    if not code.strip():
        code = "~ 1"

    for op in extra_operators:
        if op.precedence < 0:
            raise ValueError, "all operators must have precedence >= 0"

    operators = _default_ops + extra_operators
    operator_strings = [op.token_type for op in operators]
    tree = infix_parse(_tokenize_formula(code, operator_strings), operators, _atomic_token_types)
    if not isinstance(tree, ParseNode) or tree.type != "~":
        tree = ParseNode("~", None, [tree], tree.origin)
    return tree
Пример #2
0
def parse_formula(code, extra_operators=[]):
    if not code.strip():
        code = "~ 1"

    for op in extra_operators:
        if op.precedence < 0:
            raise ValueError, "all operators must have precedence >= 0"

    operators = _default_ops + extra_operators
    operator_strings = [op.token_type for op in operators]
    tree = infix_parse(_tokenize_formula(code, operator_strings), operators,
                       _atomic_token_types)
    if not isinstance(tree, ParseNode) or tree.type != "~":
        tree = ParseNode("~", None, [tree], tree.origin)
    return tree
Пример #3
0
def evaluate_formula(formula):
    """Given mixed effects formula, return a model description."""
    # mixed effects specific operators
    extra_operators = [Operator('|', 2, 50), Operator('|| ', 2, 50)]

    # construct a list of operator strings needed for tokenization
    operators = _default_ops + extra_operators
    operator_strings = [op.token_type for op in operators]

    tokens = list(_tokenize_formula(formula, operator_strings))
    node = infix_parse(tokens, operators, _atomic_token_types)

    e = Evaluator()

    # we can't handle double bar yet
    e.add_op('|', 2, eval_bar)

    model_description = e.eval(node, require_evalexpr=False)

    return model_description
Пример #4
0
def parse_constraint(string, variable_names):
    return infix_parse(_tokenize_constraint(string, variable_names),
                       _ops, _atomic)
Пример #5
0
def parse_constraint(string, variable_names):
    return infix_parse(_tokenize_constraint(string, variable_names),
                       _ops, _atomic)
Пример #6
0
def _query_from_string(events, string):
    return _eval(events, infix_parse(_tokenize(string), _ops, _atomic))
Пример #7
0
def _query_from_string(events, string):
    return _eval(events, infix_parse(_tokenize(string), _ops, _atomic))