def compile(protocol: callable, enable_optimizations: [bool, None] = True): dag = Dag(protocol()) if enable_optimizations: compile_dag(dag) else: compile_dag_without_optimizations(dag) return dag
def test_agg_mean(party_data, expected): cols_in_one = create_cols(party_data[0]) rel_one = create("in1", cols_in_one, party_data[0]["stored_with"]) agg = aggregate(rel_one, "agg", party_data[0]["col_names"][:1], party_data[0]["col_names"][1], "mean") div = divide(agg, "div", party_data[0]["col_names"][1], [10]) collect(div, {1, 2}) d = Dag({rel_one}) compile_dag(d) compare_to_expected(d, expected)
def test_single_dataset(party_data, expected): cols_in_one = create_cols(party_data[0]) rel_one = create("in1", cols_in_one, party_data[0]["stored_with"]) agg = aggregate(rel_one, "agg", party_data[0]["col_names"][:1], party_data[0]["col_names"][1], "mean") div = divide(agg, "div", party_data[0]["col_names"][1], [10]) collect(div, {1, 2}) d = Dag({rel_one}) compile_dag(d) p = HeuristicPart(d) parts = p.partition(100) compare_partition_to_expected(parts, expected)
def test_agg_variance(party_data, expected): cols_in_one = create_cols(party_data[0]) cols_in_two = create_cols(party_data[1]) rel_one = create("in1", cols_in_one, party_data[0]["stored_with"]) rel_two = create("in2", cols_in_two, party_data[1]["stored_with"]) cc = concat([rel_one, rel_two], "concat", party_data[0]["col_names"]) variance = aggregate(cc, "variance", [party_data[0]["col_names"][0]], party_data[0]["col_names"][1], "variance") mult = multiply(variance, "mult", party_data[0]["col_names"][0], [party_data[0]["col_names"][1], 7]) collect(mult, {1, 2}) d = Dag({rel_one, rel_two}) compile_dag(d) compare_to_expected(d, expected)
def test_join(party_data, expected): cols_in_one = create_cols(party_data[0]) cols_in_two = create_cols(party_data[1]) rel_one = create("in1", cols_in_one, party_data[0]["stored_with"]) rel_two = create("in2", cols_in_two, party_data[1]["stored_with"]) j = join(rel_one, rel_two, "join", [party_data[0]["col_names"][0]], [party_data[1]["col_names"][0]]) agg = aggregate(j, "agg", [party_data[0]["col_names"][0]], party_data[0]["col_names"][1], "mean") div = divide(agg, "div", party_data[0]["col_names"][1], [10]) collect(div, {1, 2}) d = Dag({rel_one, rel_two}) compile_dag(d) p = HeuristicPart(d) parts = p.partition(100) compare_partition_to_expected(parts, expected)
def test_three_datasets_concat(party_data, expected): cols_in_one = create_cols(party_data[0]) cols_in_two = create_cols(party_data[1]) cols_in_three = create_cols(party_data[2]) rel_one = create("in1", cols_in_one, party_data[0]["stored_with"]) rel_two = create("in2", cols_in_two, party_data[1]["stored_with"]) rel_three = create("in3", cols_in_three, party_data[2]["stored_with"]) cc = concat([rel_one, rel_two, rel_three], "cc", party_data[0]["col_names"]) agg = aggregate(cc, "agg", party_data[0]["col_names"][:1], party_data[0]["col_names"][1], "mean") div = divide(agg, "div", party_data[0]["col_names"][1], [10]) collect(div, {1, 2, 3}) d = Dag({rel_one, rel_two, rel_three}) compile_dag(d) p = HeuristicPart(d) parts = p.partition(100) compare_partition_to_expected(parts, expected)