def test_graph_adjacencies(self): g = nx.DiGraph() g.add_node("a", color="blue", label="a1") g.add_nodes_from(["b", "c", "d"]) g.add_node("root", color="red") g.add_edge("root", "a") g.add_edge("root", "d") g.add_edge("a", "b") g.add_edge("a", "c") g.add_edge("d", "c") res = graph_adjacencies(g) exp = [ { "id": "root", "name": "root", "data": {"color": "red"}, "adjacencies": [{"nodeTo": "a", "data": {}}, {"nodeTo": "d", "data": {}}], }, { "id": "a", "name": "a1", "data": {"color": "blue"}, "adjacencies": [{"nodeTo": "b", "data": {}}, {"nodeTo": "c", "data": {}}], }, {"id": "b", "name": "b", "data": {}, "adjacencies": []}, {"id": "c", "name": "c", "data": {}, "adjacencies": []}, {"id": "d", "name": "d", "data": {}, "adjacencies": [{"nodeTo": "c", "data": {}}]}, ] self.assertEqual(list(flatten(exp)), list(flatten(res)))
def _spacetree(self): ''' ''' form = FieldStorage( self.rfile, headers=self.headers, environ={'REQUEST_METHOD': 'POST'}, ) # Handle uploading of an HDF file: file_upload = form['hdf_file'] if not file_upload.filename: self._index(error='Please select a file to upload.') return # Create a temporary file for the upload: file_desc, file_path = mkstemp() file_obj = os.fdopen(file_desc, 'w') file_obj.write(file_upload.file.read()) file_obj.close() try: with hdf_file(file_path) as hdf_file_obj: #lfl_params = hdf_file_obj.keys() json_dep_tree = json.loads(hdf_file_obj.dependency_tree) from networkx.readwrite import json_graph gr_st = json_graph.node_link_graph(json_dep_tree) except IOError: self._index(error='Please select a valid HDF file.') return # Fetch parameters to display in a grid: #self._generate_json(lfl_params) # Save the dependency tree to tree.json: tree = os.path.join(AJAX_DIR, 'tree.json') with open(tree, 'w') as fh: json.dump(graph_adjacencies(gr_st), fh, indent=4) # Save the list of nodes to node_list.json: node_list = os.path.join(AJAX_DIR, 'node_list.json') spanning_tree_params = sorted(gr_st.nodes()) with open(node_list, 'w') as fh: json.dump(spanning_tree_params, fh, indent=4) #polaris_query, params, missing_lfl_params = self._fetch_params(lfl_params) polaris_query, params, missing_lfl_params = '', {}, [] # Render the spacetree: self._respond_with_template( 'spacetree.html', { 'missing_lfl_params': missing_lfl_params, 'params': sorted(params.items()), 'polaris_query': polaris_query, 'server': BASE_URL, 'year': date.today().year, })
def _generate_json(self, lfl_params): ''' Returns list of parameters used in the spanning tree. Note: LFL parameters not used will not be returned! ''' print "Establishing Node dependencies from Analysis Engine" # Ensure file is a valid HDF file before continuing: derived_nodes = get_derived_nodes(settings.NODE_MODULES) required_params = derived_nodes.keys() # TODO: Update ac_info with keys from provided fields: ac_info = { 'Family': u'B737 NG', 'Frame': u'737-3C', 'Identifier': u'15', 'Main Gear To Lowest Point Of Tail': None, 'Main Gear To Radio Altimeter Antenna': None, 'Manufacturer Serial Number': u'39009', 'Manufacturer': u'Boeing', 'Model': u'B737-8JP', 'Precise Positioning': True, 'Series': u'B737-800', 'Tail Number': 'G-ABCD', } # TODO: Option to populate an AFR: achieved_flight_record = {} # Generate the dependency tree: node_mgr = NodeManager( {}, 1000, lfl_params, required_params, [], derived_nodes, ac_info, achieved_flight_record, ) _graph = graph_nodes(node_mgr) gr_all, gr_st, order = process_order(_graph, node_mgr) # Save the dependency tree to tree.json: tree = os.path.join(AJAX_DIR, 'tree.json') with open(tree, 'w') as fh: json.dump(graph_adjacencies(gr_st), fh, indent=4) # Save the list of nodes to node_list.json: node_list = os.path.join(AJAX_DIR, 'node_list.json') spanning_tree_params = sorted(gr_st.nodes()) with open(node_list, 'w') as fh: json.dump(spanning_tree_params, fh, indent=4) return
def test_graph_adjacencies(self): g = nx.DiGraph() g.add_node('a', color='blue', label='a1') g.add_nodes_from(['b', 'c', 'd']) g.add_node('root', color='red') g.add_edge('root', 'a') g.add_edge('root', 'd') g.add_edge('a', 'b') g.add_edge('a', 'c') g.add_edge('d', 'c') res = graph_adjacencies(g) exp = [ { 'id': 'root', 'name': 'root', 'data': { 'color': 'red', }, 'adjacencies': [ { 'nodeTo': 'a', 'data': {}, }, { 'nodeTo': 'd', 'data': {}, }, ], }, { 'id': 'a', 'name': 'a1', 'data': { 'color': 'blue', }, 'adjacencies': [ { 'nodeTo': 'b', 'data': {}, }, { 'nodeTo': 'c', 'data': {}, }, ], }, { 'id': 'b', 'name': 'b', 'data': {}, 'adjacencies': [], }, { 'id': 'c', 'name': 'c', 'data': {}, 'adjacencies': [], }, { 'id': 'd', 'name': 'd', 'data': {}, 'adjacencies': [{ 'nodeTo': 'c', 'data': {}, }], }, ] self.assertEqual(list(flatten(exp)), list(flatten(res)))
def test_graph_adjacencies(self): g = nx.DiGraph() g.add_node('a', color='blue', label='a1') g.add_nodes_from(['b', 'c', 'd']) g.add_node('root', color='red') g.add_edge('root', 'a') g.add_edge('root', 'd') g.add_edge('a', 'b') g.add_edge('a', 'c') g.add_edge('d', 'c') res = graph_adjacencies(g) exp = [ { 'id': 'root', 'name': 'root', 'data': { 'color': 'red', }, 'adjacencies': [ { 'nodeTo': 'a', 'data': {}, }, { 'nodeTo': 'd', 'data': {}, }, ], }, { 'id': 'a', 'name': 'a1', 'data': { 'color': 'blue', }, 'adjacencies': [ { 'nodeTo': 'b', 'data': {}, }, { 'nodeTo': 'c', 'data': {}, }, ], }, { 'id': 'b', 'name': 'b', 'data': {}, 'adjacencies': [ ], }, { 'id': 'c', 'name': 'c', 'data': {}, 'adjacencies': [ ], }, { 'id': 'd', 'name': 'd', 'data': {}, 'adjacencies': [ { 'nodeTo': 'c', 'data': {}, } ], }, ] self.assertEqual(list(flatten(exp)), list(flatten(res)))