Example #1
0
def count_banned_value_observations(banned_values, root_expr, bindings):
    f = make_banned_value_counter(banned_values, bindings)
    count = [0]
    def g(prob_expr):
        count[0] += f(prob_expr[2])
    E.filter_walk(E.is_prob, g, root_expr)
    return count[0]
Example #2
0
def get_variable_order(root_expr):
    touched = set()
    order = []
    def f(v):
        if v not in touched:
            touched.add(v)
            order.append(unpack_v(v))
        return v
    # abuse of map - ignore result, just use it to walk tree
    filter_walk(is_v, f, root_expr)
    return order
Example #3
0
def get_variable_order(root_expr):
    touched = set()
    order = []

    def f(v):
        if v not in touched:
            touched.add(v)
            order.append(unpack_v(v))
        return v

    # abuse of map - ignore result, just use it to walk tree
    filter_walk(is_v, f, root_expr)
    return order
Example #4
0
 def banned_value_counter(exprs):
     count = [0]
     f = make_counter(count)
     for expr in exprs:
         E.filter_walk(p, f, expr)
     return count[0]
Example #5
0
def count_dos(expr):
    count = [0]
    f = make_counter(count)
    E.filter_walk(E.is_do, f, expr)
    return count[0]