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))
Exemplo n.º 2
0
 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]
Exemplo n.º 4
0
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]
Exemplo n.º 5
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
Exemplo n.º 6
0
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"
Exemplo n.º 7
0
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")