def test_solving(): pk = 973 questions = geoserver_interface.download_questions(pk) question = questions.values()[0] label_data = geoserver_interface.download_labels(pk)[pk] diagram = open_image(question.diagram_path) graph_parse = diagram_to_graph_parse(diagram) match_parse = parse_match_from_known_labels(graph_parse, label_data) AB = v('AB', 'line') AC = v('AC', 'line') BC = v('BC', 'line') ED = v('ED', 'line') AE = v('AE', 'line') E = v('E', 'point') D = v('D', 'point') x = v('x', 'number') p1 = f('LengthOf', AB) == f('LengthOf', AC) p2 = f('IsMidpointOf', E, AB) p3 = f('IsMidpointOf', D, AC) p4 = f('LengthOf', AE) == x p5 = f('LengthOf', ED) == 4 qn = f('LengthOf', BC) confident_atoms = parse_confident_formulas(graph_parse) text_atoms = ground_formula_nodes(match_parse, [p1, p2, p3, p4, p5]) atoms = confident_atoms + text_atoms grounded_qn = ground_formula_nodes(match_parse, [qn])[0] ns = NumericSolver(atoms) print ns.evaluate(grounded_qn)
def test_ground_atoms(): pk = 973 questions = geoserver_interface.download_questions(pk) question = questions.values()[0] label_data = geoserver_interface.download_labels(pk)[pk] diagram = open_image(question.diagram_path) graph_parse = diagram_to_graph_parse(diagram) match_parse = parse_match_from_known_labels(graph_parse, label_data) AB = v('AB', 'line') AC = v('AC', 'line') BC = v('BC', 'line') ED = v('ED', 'line') AE = v('AE', 'line') E = v('E', 'point') D = v('D', 'point') x = v('x', 'number') p1 = f('LengthOf', AB) == f('LengthOf', AC) p2 = f('IsMidpointOf', E, AB) p3 = f('IsMidpointOf', D, AC) p4 = f('LengthOf', AE) == x p5 = f('LengthOf', ED) == 4 qn = f('LengthOf', BC) grounded_atoms = ground_formula_nodes(match_parse, [p1, p2, p3, p4, p5, qn]) for grounded_atom in grounded_atoms: print grounded_atom graph_parse.core_parse.display_points()