def to_graph_decomposition(H): """Returns an UndirectedHypergraph object that has the same nodes (and corresponding attributes) as the given H, except that for all hyperedges in the given H, each node in the hyperedge is pairwise connected to every other node also in that hyperedge in the new H. Said another way, each of the original hyperedges are decomposed in the new H into cliques (aka the "2-section" or "clique graph"). :param H: the H to decompose into a graph. :returns: UndirectedHypergraph -- the decomposed H. :raises: TypeError -- Transformation only applicable to undirected Hs """ if not isinstance(H, UndirectedHypergraph): raise TypeError("Transformation only applicable to \ undirected Hs") G = UndirectedHypergraph() nodes = [(node, H.get_node_attributes(node_attributes)) for node in G.node_iterator()] G.add_nodes(nodes) edges = [(node_a, node_b) for hyperedge_id in H.hyperedge_id_iterator() for node_a in H.get_hyperedge_nodes(hyperedge_id) for node_b in H.get_hyperedge_nodes(hyperedge_id) if node_a != node_b] G.add_hyperedges(edges) return G
def to_graph_decomposition(H): """Returns an UndirectedHypergraph object that has the same nodes (and corresponding attributes) as the given H, except that for all hyperedges in the given H, each node in the hyperedge is pairwise connected to every other node also in that hyperedge in the new H. Said another way, each of the original hyperedges are decomposed in the new H into cliques (aka the "2-section" or "clique graph"). :param H: the H to decompose into a graph. :returns: UndirectedHypergraph -- the decomposed H. :raises: TypeError -- Transformation only applicable to undirected Hs """ if not isinstance(H, UndirectedHypergraph): raise TypeError("Transformation only applicable to \ undirected Hs") G = UndirectedHypergraph() nodes = [(node, H.get_node_attributes(node_attributes)) for node in G.node_iterator()] G.add_nodes(nodes) edges = [(node_a, node_b) for hyperedge_id in H.hyperedge_id_iterator() for node_a in H.get_hyperedge_nodes(hyperedge_id) for node_b in H.get_hyperedge_nodes(hyperedge_id) if node_a != node_b] G.add_hyperedges(edges) return G
def test_read_and_write(): # Try writing the following hypergraph to a file node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.write("test_undirected_read_and_write.txt") # Try reading the hypergraph that was just written into a new hypergraph new_H = UndirectedHypergraph() new_H.read("test_undirected_read_and_write.txt") assert H._node_attributes.keys() == new_H._node_attributes.keys() for new_hyperedge_id in new_H.get_hyperedge_id_set(): new_hyperedge_nodes = new_H.get_hyperedge_nodes(new_hyperedge_id) new_hyperedge_weight = new_H.get_hyperedge_weight(new_hyperedge_id) found_matching_hyperedge = False for hyperedge_id in H.get_hyperedge_id_set(): hyperedge_nodes = H.get_hyperedge_nodes(hyperedge_id) hyperedge_weight = H.get_hyperedge_weight(hyperedge_id) if new_hyperedge_nodes == hyperedge_nodes and \ new_hyperedge_weight == hyperedge_weight: found_matching_hyperedge = True continue assert found_matching_hyperedge remove("test_undirected_read_and_write.txt") # Try reading an invalid hypergraph file invalid_H = UndirectedHypergraph() try: invalid_H.read("tests/data/invalid_undirected_hypergraph.txt") assert False except IOError: pass except BaseException as e: assert False, e
def test_remove_hyperedges(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_hyperedges(['e1', 'e3']) assert 'e1' not in H._hyperedge_attributes assert 'e1' not in H._star[node_a] assert 'e1' not in H._star[node_b] assert 'e1' not in H._star[node_c] assert frozen_nodes1 not in H._node_set_to_hyperedge assert 'e3' not in H._hyperedge_attributes assert 'e3' not in H._star[node_d] assert 'e3' not in H._star[node_e] assert frozen_nodes3 not in H._node_set_to_hyperedge
def test_remove_hyperedges(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_hyperedges(['e1', 'e3']) assert 'e1' not in H._hyperedge_attributes assert 'e1' not in H._star[node_a] assert 'e1' not in H._star[node_b] assert 'e1' not in H._star[node_c] assert frozen_nodes1 not in H._node_set_to_hyperedge assert 'e3' not in H._hyperedge_attributes assert 'e3' not in H._star[node_d] assert 'e3' not in H._star[node_e] assert frozen_nodes3 not in H._node_set_to_hyperedge
def test_get_hyperedge_weight(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') weight_e1 = H.get_hyperedge_weight('e1') weight_e2 = H.get_hyperedge_weight('e2') assert weight_e1 == 2 assert weight_e2 == 2
def test_get_hyperedge_id(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_hyperedge_id(nodes1) == 'e1' assert H.get_hyperedge_id(nodes2) == 'e2' assert H.get_hyperedge_id(nodes3) == 'e3' try: H.get_hyperedge_id(set([node_a, node_b, node_c, node_d])) assert False except ValueError: pass except BaseException as e: assert False, e
def test_copy(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() H.add_node("A", root=True) hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') new_H = H.copy() assert new_H._node_attributes == H._node_attributes assert new_H._hyperedge_attributes == H._hyperedge_attributes assert new_H._star == H._star assert new_H._node_set_to_hyperedge == H._node_set_to_hyperedge
def test_get_hyperedge_weight(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') weight_e1 = H.get_hyperedge_weight('e1') weight_e2 = H.get_hyperedge_weight('e2') assert weight_e1 == 2 assert weight_e2 == 2
def test_copy(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() H.add_node("A", root=True) hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') new_H = H.copy() assert new_H._node_attributes == H._node_attributes assert new_H._hyperedge_attributes == H._hyperedge_attributes assert new_H._star == H._star assert new_H._node_set_to_hyperedge == H._node_set_to_hyperedge
def test_get_hyperedge_id(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_hyperedge_id(nodes1) == 'e1' assert H.get_hyperedge_id(nodes2) == 'e2' assert H.get_hyperedge_id(nodes3) == 'e3' try: H.get_hyperedge_id(set([node_a, node_b, node_c, node_d])) assert False except ValueError: pass except BaseException as e: assert False, e
def test_read_and_write(): # Try writing the following hypergraph to a file node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.write("test_undirected_read_and_write.txt") # Try reading the hypergraph that was just written into a new hypergraph new_H = UndirectedHypergraph() new_H.read("test_undirected_read_and_write.txt") assert H._node_attributes.keys() == new_H._node_attributes.keys() for new_hyperedge_id in new_H.get_hyperedge_id_set(): new_hyperedge_nodes = new_H.get_hyperedge_nodes(new_hyperedge_id) new_hyperedge_weight = new_H.get_hyperedge_weight(new_hyperedge_id) found_matching_hyperedge = False for hyperedge_id in H.get_hyperedge_id_set(): hyperedge_nodes = H.get_hyperedge_nodes(hyperedge_id) hyperedge_weight = H.get_hyperedge_weight(hyperedge_id) if new_hyperedge_nodes == hyperedge_nodes and \ new_hyperedge_weight == hyperedge_weight: found_matching_hyperedge = True continue assert found_matching_hyperedge remove("test_undirected_read_and_write.txt") # Try reading an invalid hypergraph file invalid_H = UndirectedHypergraph() try: invalid_H.read("tests/data/invalid_undirected_hypergraph.txt") assert False except IOError: pass except BaseException as e: assert False, e
def test_get_hyperedge_attribute(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_hyperedge_attribute('e1', 'weight') == 1 assert H.get_hyperedge_attribute('e1', 'color') == 'white' assert H.get_hyperedge_attribute('e1', 'sink') is False # Try requesting an invalid hyperedge try: H.get_hyperedge_attribute('e5', 'weight') assert False except ValueError: pass except BaseException as e: assert False, e # Try requesting an invalid attribute try: H.get_hyperedge_attribute('e1', 'source') assert False except ValueError: pass except BaseException as e: assert False, e
def test_get_hyperedge_attribute(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_hyperedge_attribute('e1', 'weight') == 1 assert H.get_hyperedge_attribute('e1', 'color') == 'white' assert H.get_hyperedge_attribute('e1', 'sink') is False # Try requesting an invalid hyperedge try: H.get_hyperedge_attribute('e5', 'weight') assert False except ValueError: pass except BaseException as e: assert False, e # Try requesting an invalid attribute try: H.get_hyperedge_attribute('e1', 'source') assert False except ValueError: pass except BaseException as e: assert False, e
def test_remove_node(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_node(node_a) # Test that everything that needed to be removed was removed assert node_a not in H._node_attributes assert node_a not in H._star assert "e1" not in H._hyperedge_attributes assert "e2" not in H._hyperedge_attributes assert frozen_nodes1 not in H._node_set_to_hyperedge assert frozen_nodes2 not in H._node_set_to_hyperedge # Test that everything that wasn't supposed to be removed wasn't removed assert "e3" in H._hyperedge_attributes assert frozen_nodes3 in H._node_set_to_hyperedge try: H.remove_node(node_a) assert False except ValueError: pass except BaseException as e: assert False, e
def test_remove_node(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_node(node_a) # Test that everything that needed to be removed was removed assert node_a not in H._node_attributes assert node_a not in H._star assert "e1" not in H._hyperedge_attributes assert "e2" not in H._hyperedge_attributes assert frozen_nodes1 not in H._node_set_to_hyperedge assert frozen_nodes2 not in H._node_set_to_hyperedge # Test that everything that wasn't supposed to be removed wasn't removed assert "e3" in H._hyperedge_attributes assert frozen_nodes3 in H._node_set_to_hyperedge try: H.remove_node(node_a) assert False except ValueError: pass except BaseException as e: assert False, e
def test_remove_hyperedge(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_hyperedge('e1') assert 'e1' not in H._hyperedge_attributes assert 'e1' not in H._star[node_a] assert 'e1' not in H._star[node_b] assert 'e1' not in H._star[node_c] assert frozen_nodes1 not in H._node_set_to_hyperedge try: H.remove_hyperedge('e1') assert False except ValueError: pass except BaseException as e: assert False, e
def test_get_star(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_star(node_a) == set(['e1', 'e2']) assert H.get_star(node_b) == set(['e1']) assert H.get_star(node_c) == set(['e1']) assert H.get_star(node_d) == set(['e2', 'e3']) assert H.get_star(node_e) == set(['e3']) # Try requesting an invalid node try: H.get_star("F") assert False except ValueError: pass except BaseException as e: assert False, e
def test_remove_hyperedge(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_hyperedge('e1') assert 'e1' not in H._hyperedge_attributes assert 'e1' not in H._star[node_a] assert 'e1' not in H._star[node_b] assert 'e1' not in H._star[node_c] assert frozen_nodes1 not in H._node_set_to_hyperedge try: H.remove_hyperedge('e1') assert False except ValueError: pass except BaseException as e: assert False, e
def test_get_star(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'weight': 2, 'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert H.get_star(node_a) == set(['e1', 'e2']) assert H.get_star(node_b) == set(['e1']) assert H.get_star(node_c) == set(['e1']) assert H.get_star(node_d) == set(['e2', 'e3']) assert H.get_star(node_e) == set(['e3']) # Try requesting an invalid node try: H.get_star("F") assert False except ValueError: pass except BaseException as e: assert False, e
def test_add_hyperedges(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) common_attrib = {'sink': False} hyperedges = [nodes1, nodes2] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert 'e1' in hyperedge_names assert 'e2' in hyperedge_names assert H._hyperedge_attributes['e1']['nodes'] == nodes1 assert H._hyperedge_attributes['e1']['weight'] == 1 assert H._hyperedge_attributes['e1']['color'] == 'white' assert H._hyperedge_attributes['e1']['sink'] is False assert H._hyperedge_attributes['e2']['nodes'] == nodes2 assert H._hyperedge_attributes['e2']['weight'] == 1 assert H._hyperedge_attributes['e2']['color'] == 'white' assert H._hyperedge_attributes['e2']['sink'] is False assert set(hyperedge_names) == H.get_hyperedge_id_set() assert set(hyperedge_names) == H.get_hyperedge_id_set() for hyperedge_id in H.hyperedge_id_iterator(): assert hyperedge_id in hyperedge_names
def test_remove_nodes(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_nodes([node_a, node_e]) # Test that everything that needed to be removed was removed assert node_a not in H._node_attributes assert node_a not in H._star assert "e1" not in H._hyperedge_attributes assert "e2" not in H._hyperedge_attributes assert frozen_nodes1 not in H._node_set_to_hyperedge assert frozen_nodes2 not in H._node_set_to_hyperedge assert node_e not in H._node_attributes assert node_e not in H._star assert "e3" not in H._hyperedge_attributes assert frozen_nodes3 not in H._node_set_to_hyperedge
def test_add_hyperedges(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) common_attrib = {'sink': False} hyperedges = [nodes1, nodes2] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') assert 'e1' in hyperedge_names assert 'e2' in hyperedge_names assert H._hyperedge_attributes['e1']['nodes'] == nodes1 assert H._hyperedge_attributes['e1']['weight'] == 1 assert H._hyperedge_attributes['e1']['color'] == 'white' assert H._hyperedge_attributes['e1']['sink'] is False assert H._hyperedge_attributes['e2']['nodes'] == nodes2 assert H._hyperedge_attributes['e2']['weight'] == 1 assert H._hyperedge_attributes['e2']['color'] == 'white' assert H._hyperedge_attributes['e2']['sink'] is False assert set(hyperedge_names) == H.get_hyperedge_id_set() assert set(hyperedge_names) == H.get_hyperedge_id_set() for hyperedge_id in H.hyperedge_id_iterator(): assert hyperedge_id in hyperedge_names
def test_remove_nodes(): node_a = 'A' node_b = 'B' node_c = 'C' node_d = 'D' node_e = 'E' nodes1 = set([node_a, node_b, node_c]) frozen_nodes1 = frozenset(nodes1) nodes2 = set([node_a, node_d]) frozen_nodes2 = frozenset(nodes2) nodes3 = set([node_d, node_e]) frozen_nodes3 = frozenset(nodes3) common_attrib = {'sink': False} hyperedges = hyperedges = [nodes1, nodes2, nodes3] H = UndirectedHypergraph() hyperedge_names = \ H.add_hyperedges(hyperedges, common_attrib, color='white') H.remove_nodes([node_a, node_e]) # Test that everything that needed to be removed was removed assert node_a not in H._node_attributes assert node_a not in H._star assert "e1" not in H._hyperedge_attributes assert "e2" not in H._hyperedge_attributes assert frozen_nodes1 not in H._node_set_to_hyperedge assert frozen_nodes2 not in H._node_set_to_hyperedge assert node_e not in H._node_attributes assert node_e not in H._star assert "e3" not in H._hyperedge_attributes assert frozen_nodes3 not in H._node_set_to_hyperedge
'pants_on_fire_c', 'venue' ]) df1 = pd.read_csv( "C:/Users/user/PycharmProjects/dataset/yelp-dataset/result.csv", names=['subject', 'edge']) # df.info() # print(df.head(10)) # Initialize an empty hypergraph H = UndirectedHypergraph() # NODE node_list = df['id'] node_list1 = tuple(node_list) # EDGE node_subject = df1['edge'] # attribute_list = {"f1": df['speaker'], # "f2": df['job'], # "f3": df['state']} # economy = df.loc[df['subject'] == 'economy'] # # list = economy['id'] hyperedge_list = (node_subject) edge_list = list(zip(hyperedge_list, hyperedge_list.index)) # print(hyperedge_list) node = H.add_nodes(node_list1) hyperedge_ids = H.add_hyperedges(edge_list) print(node)