def angles(O): return graph_utils.extract_edge_list( graph_utils.bond_bending_edge_sets( edge_sets=graph_utils.construct_edge_sets( n_vertices=len(O.sites), edge_list=O.bonds), omit_bonds=True))
def angles(O): return graph_utils.extract_edge_list( graph_utils.bond_bending_edge_sets( edge_sets=graph_utils.construct_edge_sets(n_vertices=len( O.sites), edge_list=O.bonds), omit_bonds=True))
def arch_dof(n_vertices, edge_list): es = utils.construct_edge_sets(n_vertices=n_vertices, edge_list=edge_list) bbes = utils.bond_bending_edge_sets(edge_sets=es) bbel = utils.extract_edge_list(edge_sets=bbes) dofs = [rigidity.determine_degrees_of_freedom( n_dim=3, n_vertices=n_vertices, edge_list=bbel, method=method) for method in ["float", "integer"]] assert dofs[0] == dofs[1] return es, dofs[0]
def build_clash_detector(n_sites, bond_list, threshold): import scitbx.r3_utils result = scitbx.r3_utils.clash_detector_simple( n_sites=n_sites, threshold=threshold) from scitbx.graph import utils bond_sets = utils.construct_edge_sets( n_vertices=n_sites, edge_list=bond_list) def add_exclusions(edge_sets): for i,edge_set in enumerate(edge_sets): for j in edge_set: if (i < j): result.add_exclusion(i=i, j=j) add_exclusions(edge_sets=bond_sets) angle_sets = utils.bond_bending_edge_sets(edge_sets=bond_sets) add_exclusions(edge_sets=angle_sets) for i,j in utils.potential_implied_edge_list( edge_sets=bond_sets, bond_bending_edge_sets=angle_sets): result.add_exclusion(i=i, j=j) return result
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")