def from_networkx_graph(nx_graph): """Returns an UndirectedHypergraph object that is the graph equivalent of the given NetworkX Graph object. :param nx_graph: the NetworkX undirected graph object to transform. :returns: UndirectedHypergraph -- H object equivalent to the NetworkX undirected graph. :raises: TypeError -- Transformation only applicable to undirected NetworkX graphs """ import networkx as nx if not isinstance(nx_graph, nx.Graph): raise TypeError("Transformation only applicable to undirected \ NetworkX graphs") G = UndirectedHypergraph() for node in nx_graph.nodes(): G.add_node(node, copy.copy(nx_graph.nodes[node])) for edge in nx_graph.edges(): G.add_hyperedge([edge[0], edge[1]], copy.copy(nx_graph[edge[0]][edge[1]])) return G
def from_networkx_graph(nx_graph): """Returns an UndirectedHypergraph object that is the graph equivalent of the given NetworkX Graph object. :param nx_graph: the NetworkX undirected graph object to transform. :returns: UndirectedHypergraph -- H object equivalent to the NetworkX undirected graph. :raises: TypeError -- Transformation only applicable to undirected NetworkX graphs """ import networkx as nx if not isinstance(nx_graph, nx.Graph): raise TypeError("Transformation only applicable to undirected \ NetworkX graphs") G = UndirectedHypergraph() for node in nx_graph.nodes_iter(): G.add_node(node, copy.copy(nx_graph.node[node])) for edge in nx_graph.edges_iter(): G.add_hyperedge([edge[0], edge[1]], copy.copy(nx_graph[edge[0]][edge[1]])) return G
def test_add_hyperedge(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) attrib = {'weight': 6, 'color': 'black'} H = UndirectedHypergraph() H.add_node(node_a, label=1337) hyperedge_name = H.add_hyperedge(nodes1, attrib, weight=5) assert hyperedge_name == 'e1' # Test that all hyperedge attributes are correct assert H._hyperedge_attributes[hyperedge_name]['nodes'] == nodes1 assert H._hyperedge_attributes[hyperedge_name]['__frozen_nodes'] == \ frozen_nodes1 assert H._hyperedge_attributes[hyperedge_name]['weight'] == 5 assert H._hyperedge_attributes[hyperedge_name]['color'] == 'black' # Test that compose_hyperedge list contains the correct info assert frozen_nodes1 in H._node_set_to_hyperedge assert hyperedge_name == H._node_set_to_hyperedge[frozen_nodes1] # Test that the stars contain the correct info for node in frozen_nodes1: assert hyperedge_name in H._star[node] # Test that adding same hyperedge will only update attributes new_attrib = {'weight': 10} H.add_hyperedge(nodes1, new_attrib) assert H._hyperedge_attributes[hyperedge_name]['weight'] == 10 assert H._hyperedge_attributes[hyperedge_name]['color'] == 'black' try: H.add_hyperedge(set()) assert False except ValueError: pass except BaseException as e: assert False, e
def test_add_hyperedge(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) attrib = {'weight': 6, 'color': 'black'} H = UndirectedHypergraph() H.add_node(node_a, label=1337) hyperedge_name = H.add_hyperedge(nodes1, attrib, weight=5) assert hyperedge_name == 'e1' # Test that all hyperedge attributes are correct assert H._hyperedge_attributes[hyperedge_name]['nodes'] == nodes1 assert H._hyperedge_attributes[hyperedge_name]['__frozen_nodes'] == \ frozen_nodes1 assert H._hyperedge_attributes[hyperedge_name]['weight'] == 5 assert H._hyperedge_attributes[hyperedge_name]['color'] == 'black' # Test that compose_hyperedge list contains the correct info assert frozen_nodes1 in H._node_set_to_hyperedge assert hyperedge_name == H._node_set_to_hyperedge[frozen_nodes1] # Test that the stars contain the correct info for node in frozen_nodes1: assert hyperedge_name in H._star[node] # Test that adding same hyperedge will only update attributes new_attrib = {'weight': 10} H.add_hyperedge(nodes1, new_attrib) assert H._hyperedge_attributes[hyperedge_name]['weight'] == 10 assert H._hyperedge_attributes[hyperedge_name]['color'] == 'black' try: H.add_hyperedge(set()) assert False except ValueError: pass except BaseException as e: assert False, e