def _process_external_clusters(O, clusters): O.external_clusters_connect_count = 0 if (clusters is None): return cv = O.cluster_manager.connect_vertices for cluster in clusters: sub = sub_edge_list(edge_sets=O.edge_sets, vertex_indices=cluster) sub_edge_sets = sub.edge_sets() for i_sub,j_sub in sub.edge_list: if (len(sub_edge_sets[i_sub]) == 1): continue if (len(sub_edge_sets[j_sub]) == 1): continue if (cv(i=cluster[i_sub], j=cluster[j_sub], optimize=True) is not None): O.external_clusters_connect_count += 1
def _process_external_clusters(O, clusters): O.external_clusters_connect_count = 0 if (clusters is None): return cv = O.cluster_manager.connect_vertices for cluster in clusters: sub = sub_edge_list(edge_sets=O.edge_sets, vertex_indices=cluster) sub_edge_sets = sub.edge_sets() for i_sub, j_sub in sub.edge_list: if (len(sub_edge_sets[i_sub]) == 1): continue if (len(sub_edge_sets[j_sub]) == 1): continue if (cv(i=cluster[i_sub], j=cluster[j_sub], optimize=True) is not None): O.external_clusters_connect_count += 1
def run(args): assert len(args) == 0 # el = [] n_vertices = 0 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) assert len(es) == 0 bbes = utils.bond_bending_edge_sets(edge_sets=es) assert len(bbes) == 0 bbel = utils.extract_edge_list(edge_sets=bbes) assert len(bbel) == 0 piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert len(piel) == 0 bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) assert len(bbesob) == 0 # el = [(0,1), (1,2), (2,3)] n_vertices = 4 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) assert len(es) == n_vertices bbes = utils.bond_bending_edge_sets(edge_sets=es) assert len(bbes) == n_vertices bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0,1), (0,2), (1,2), (1,3), (2,3)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0,3)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) assert len(bbesob) == n_vertices bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0,2), (1,3)] # el = [(0,1), (1,2), (2,3), (3,4), (4,5), (5,6), (6,7)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [ (0, 1), (0, 2), (1, 2), (1, 3), (2, 3), (2, 4), (3, 4), (3, 5), (4, 5), (4, 6), (5, 6), (5, 7), (6, 7)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0,3), (1,4), (2,5), (3,6), (4,7)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [ (0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7)] # el = [(0,1), (1,2), (2,3), (0,3)] n_vertices = 4 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [] bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (1, 3)] # el = [(0,1), (1,2), (2,3), (3,4), (4,5), (0,5)] n_vertices = 6 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [ (0,1), (0,2), (0,4), (0,5), (1,2), (1,3), (1,5), (2,3), (2,4), (3,4), (3,5), (4,5)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0,3), (1,4), (2,5)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [ (0,2), (0,4), (1,3), (1,5), (2,4), (3,5)] # el = [(0,1), (1,2), (2,3), (2,6), (3,4), (3,7), (4,5), (0,5)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [ (0,1), (0,2), (0,4), (0,5), (1,2), (1,3), (1,5), (1,6), (2,3), (2,4), (2,6), (2,7), (3,4), (3,5), (3,6), (3,7), (4,5), (4,7)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list( edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0,3), (0,6), (1,4), (1,7), (2,5), (4,6), (5,7), (6,7)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [ (0,2), (0,4), (1,3), (1,5), (1,6), (2,4), (2,7), (3,5), (3,6), (4,7)] # el = [(0,1), (1,2), (2,3), (2,6), (3,4), (3,7), (4,5), (0,5)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 0 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 1 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1,3]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 2 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1,0]) assert sub.edge_list == [(0,1)] assert len(sub.edge_sets()) == 2 assert sub.reindexing_dict == {0: 1, 1: 0} sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[6,7,3,2]) assert sub.edge_list == [(1,2), (2,3), (0,3)] assert len(sub.edge_sets()) == 4 assert sub.reindexing_dict == {2: 3, 3: 2, 6: 0, 7: 1} # exercise_tree_marking() # print "OK"
def run(args): assert len(args) == 0 # el = [] n_vertices = 0 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) assert len(es) == 0 bbes = utils.bond_bending_edge_sets(edge_sets=es) assert len(bbes) == 0 bbel = utils.extract_edge_list(edge_sets=bbes) assert len(bbel) == 0 piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert len(piel) == 0 bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) assert len(bbesob) == 0 # el = [(0, 1), (1, 2), (2, 3)] n_vertices = 4 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) assert len(es) == n_vertices bbes = utils.bond_bending_edge_sets(edge_sets=es) assert len(bbes) == n_vertices bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0, 1), (0, 2), (1, 2), (1, 3), (2, 3)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0, 3)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) assert len(bbesob) == n_vertices bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (1, 3)] # el = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0, 1), (0, 2), (1, 2), (1, 3), (2, 3), (2, 4), (3, 4), (3, 5), (4, 5), (4, 6), (5, 6), (5, 7), (6, 7)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0, 3), (1, 4), (2, 5), (3, 6), (4, 7)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7)] # el = [(0, 1), (1, 2), (2, 3), (0, 3)] n_vertices = 4 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [] bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (1, 3)] # el = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (0, 5)] n_vertices = 6 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0, 1), (0, 2), (0, 4), (0, 5), (1, 2), (1, 3), (1, 5), (2, 3), (2, 4), (3, 4), (3, 5), (4, 5)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0, 3), (1, 4), (2, 5)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (0, 4), (1, 3), (1, 5), (2, 4), (3, 5)] # el = [(0, 1), (1, 2), (2, 3), (2, 6), (3, 4), (3, 7), (4, 5), (0, 5)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) assert bbel == [(0, 1), (0, 2), (0, 4), (0, 5), (1, 2), (1, 3), (1, 5), (1, 6), (2, 3), (2, 4), (2, 6), (2, 7), (3, 4), (3, 5), (3, 6), (3, 7), (4, 5), (4, 7)] assert set(el).issubset(set(bbel)) piel = utils.potential_implied_edge_list(edge_sets=es, bond_bending_edge_sets=bbes) assert piel == [(0, 3), (0, 6), (1, 4), (1, 7), (2, 5), (4, 6), (5, 7), (6, 7)] assert set(bbel).isdisjoint(set(piel)) bbesob = utils.bond_bending_edge_sets(edge_sets=es, omit_bonds=True) bbelob = utils.extract_edge_list(edge_sets=bbesob) assert bbelob == [(0, 2), (0, 4), (1, 3), (1, 5), (1, 6), (2, 4), (2, 7), (3, 5), (3, 6), (4, 7)] # el = [(0, 1), (1, 2), (2, 3), (2, 6), (3, 4), (3, 7), (4, 5), (0, 5)] n_vertices = 8 es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=el) sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 0 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 1 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1, 3]) assert len(sub.edge_list) == 0 assert len(sub.edge_sets()) == 2 sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[1, 0]) assert sub.edge_list == [(0, 1)] assert len(sub.edge_sets()) == 2 assert sub.reindexing_dict == {0: 1, 1: 0} sub = utils.sub_edge_list(edge_sets=es, vertex_indices=[6, 7, 3, 2]) assert sub.edge_list == [(1, 2), (2, 3), (0, 3)] assert len(sub.edge_sets()) == 4 assert sub.reindexing_dict == {2: 3, 3: 2, 6: 0, 7: 1} # exercise_tree_marking() # print("OK")