Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
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"
Esempio n. 4
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")