Пример #1
0
def exercise_stl_vector_unsigned():
  a = shared.stl_vector_unsigned()
  assert a.size() == 0
  assert len(a) == 0
  a.append([])
  assert a.size() == 1
  a.append([1])
  assert len(a) == 2
  a.append([1,2])
  assert native(a) == [(), (1,), (1, 2)]
  a.extend(a)
  a.reserve(len(a) + 100)
  assert native(a) == [(), (1,), (1, 2), (), (1,), (1, 2)]
  a.insert(1, [2,3])
  assert native(a) == [(), (2,3), (1,), (1, 2), (), (1,), (1, 2)]
  a[4] = [3,4]
  assert native(a) == [(), (2,3), (1,), (1, 2), (3,4), (1,), (1, 2)]
  a = a[2:5]
  assert native(a) == [(1,), (1, 2), (3, 4)]
  del a[0]
  assert native(a) == [(1, 2), (3, 4)]
  a.append([2,3])
  a.append([5,6])
  assert native(a) == [(1, 2), (3, 4), (2, 3), (5, 6)]
  del a[1:3]
  assert native(a) == [(1, 2), (5, 6)]
  del a[:]
  assert a.size() == 0
  a.append([1,2])
  a.append([2,3])
  a.append([3,4])
  del a[-1:]
  assert native(a) == [(1, 2), (2, 3)]
  del a[:1]
  assert native(a) == [(2, 3)]
  b = a.deep_copy()
  assert native(b) == [(2, 3)]
  a.clear()
  assert a.size() == 0
  assert b.size() == 1
  a = shared.stl_vector_unsigned([[1,2],[2,3]])
  assert native(a) == [(1, 2), (2, 3)]
  a = shared.stl_vector_unsigned(0)
  assert native(a) == []
  a = shared.stl_vector_unsigned(3)
  assert native(a) == [(),(),()]
  a = shared.stl_vector_unsigned(3, [1,2])
  assert native(a) == [(1,2),(1,2),(1,2)]
Пример #2
0
def exercise_stl_set_unsigned():
  a = shared.stl_set_unsigned()
  assert a.size() == 0
  a = shared.stl_set_unsigned([(2,1)])
  assert a.size() == 1
  assert tuple(a[0]) == (1, 2)
  a = shared.stl_set_unsigned([(2,1),(3,5,2)])
  assert native(a) == [(1, 2), (2, 3, 5)]
  #
  from scitbx.array_family import flex
  b = shared.stl_vector_unsigned()
  s = flex.size_t()
  a.append_union_of_selected_arrays(arrays=b, selection=s)
  assert a.size() == 3
  assert a[2].size() == 0
  b.append([2,1])
  b.append([])
  b.append([4,3,2])
  s.append(2)
  s.append(1)
  a.append_union_of_selected_arrays(arrays=b, selection=s)
  assert tuple(a[3]) == (2,3,4)
  s[1] = 0
  a.append_union_of_selected_arrays(arrays=b, selection=s)
  assert tuple(a[4]) == (1,2,3,4)
  assert native(a) == [(1, 2), (2, 3, 5), (), (2, 3, 4), (1, 2, 3, 4)]
  #
  s = pickle.dumps(a, 1)
  l = pickle.loads(s)
  assert len(l) == len(a)
  for ae,le in zip(a,l):
    assert list(ae) == list(le)
Пример #3
0
 def __init__(O, labels, sites_cart, masses, geo_manager):
   from scitbx.array_family import shared
   edge_list = geo_manager.simple_edge_list(omit_slack_greater_than=0)
   tt = scitbx.graph.tardy_tree.construct(
     n_vertices=len(sites_cart),
     edge_list=edge_list,
     external_clusters=geo_manager.rigid_clusters_due_to_dihedrals_and_planes(
       constrain_dihedrals_with_sigma_less_than=10))
   orcs = tt.cluster_manager.overlapping_rigid_clusters(
     edge_sets=tt.edge_sets)
   O.labels = flex.std_string()
   O.sites_cart = flex.vec3_double()
   O.masses = flex.double()
   O.indices = []
   O.external_clusters = []
   O.related_x_i_seqs = shared.stl_vector_unsigned(sites_cart.size())
   orca_dof = 0
   for i_orc,orc in enumerate(orcs):
     external_cluster = []
     for i_seq in orc:
       x_i_seq = len(O.sites_cart)
       O.related_x_i_seqs[i_seq].append(x_i_seq)
       external_cluster.append(x_i_seq)
       O.labels.append("%s:%d" % (labels[i_seq], i_orc))
       O.sites_cart.append(sites_cart[i_seq])
       O.masses.append(masses[i_seq])
       O.indices.append((i_orc, i_seq))
     O.external_clusters.append(external_cluster)
     if (len(orc) == 1):
       orca_dof += 3
     elif (len(orc) == 2):
       orca_dof += 5
     else:
       orca_dof += 6
   print "sites_cart.size():", sites_cart.size()
   print "O.sites_cart.size():", O.sites_cart.size()
   print "original Cartesian dof:", sites_cart.size()*3
   print "orca dof:", orca_dof
   for i_seq,x_i_seqs in enumerate(O.related_x_i_seqs):
     O.masses /= len(x_i_seqs)
   # XXX find more direct way to get x_edge_list
   x_edge_list = []
   for i,j in edge_list:
     for x_i in O.related_x_i_seqs[i]:
       i_orc = O.indices[x_i][0]
       for x_j in O.related_x_i_seqs[j]:
         j_orc = O.indices[x_j][0]
         if (i_orc == j_orc):
           x_edge_list.append(tuple(sorted((x_i,x_j))))
   O.tardy_tree = scitbx.graph.tardy_tree.construct(
     sites=O.sites_cart,
     edge_list=x_edge_list,
     external_clusters=O.external_clusters)
   x_model_indices = expand_model_or_conformer_indices(
     indices=geo_manager.model_indices,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_conformer_indices = expand_model_or_conformer_indices(
     indices=geo_manager.conformer_indices,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_site_symmetry_table = expand_site_symmetry_table(
     site_symmetry_table=geo_manager.site_symmetry_table,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_bond_params_table = expand_bond_params_table(
     bond_params_table=geo_manager.bond_params_table,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_shell_sym_tables = []
   for shell_sym_table in geo_manager.shell_sym_tables:
     x_shell_sym_tables.append(expand_pair_sym_table(
       pair_sym_table=shell_sym_table,
       x_n_seq=O.sites_cart.size(),
       related_x_i_seqs=O.related_x_i_seqs))
   x_nonbonded_types = expand_nonbonded_types(
     nonbonded_types=geo_manager.nonbonded_types,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_angle_proxies = expand_angle_proxies(
     angle_proxies=geo_manager.angle_proxies,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_dihedral_proxies = expand_dihedral_or_chirality_proxies(
     proxies=geo_manager.dihedral_proxies,
     proxy_type=cctbx.geometry_restraints.dihedral_proxy,
     proxy_array_type=cctbx.geometry_restraints.shared_dihedral_proxy,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_chirality_proxies = expand_dihedral_or_chirality_proxies(
     proxies=geo_manager.chirality_proxies,
     proxy_type=cctbx.geometry_restraints.chirality_proxy,
     proxy_array_type=cctbx.geometry_restraints.shared_chirality_proxy,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   x_planarity_proxies = expand_planarity_proxies(
     planarity_proxies=geo_manager.planarity_proxies,
     x_n_seq=O.sites_cart.size(),
     related_x_i_seqs=O.related_x_i_seqs)
   O.geo_manager = cctbx.geometry_restraints.manager.manager(
     crystal_symmetry=geo_manager.crystal_symmetry,
     model_indices=x_model_indices,
     conformer_indices=x_conformer_indices,
     site_symmetry_table=x_site_symmetry_table,
     bond_params_table=x_bond_params_table,
     shell_sym_tables=x_shell_sym_tables,
     nonbonded_params=geo_manager.nonbonded_params,
     nonbonded_types=x_nonbonded_types,
     nonbonded_function=geo_manager.nonbonded_function,
     nonbonded_distance_cutoff=geo_manager.nonbonded_distance_cutoff,
     nonbonded_buffer=geo_manager.nonbonded_buffer,
     angle_proxies=x_angle_proxies,
     dihedral_proxies=x_dihedral_proxies,
     chirality_proxies=x_chirality_proxies,
     planarity_proxies=x_planarity_proxies,
     plain_pairs_radius=geo_manager.plain_pairs_radius,
     max_reasonable_bond_distance=geo_manager.max_reasonable_bond_distance,
     min_cubicle_edge=geo_manager.min_cubicle_edge)
   O.tardy_tree_rmsd_calculator = None
Пример #4
0
 def __init__(O, labels, sites_cart, masses, geo_manager):
     from scitbx.array_family import shared
     edge_list = geo_manager.simple_edge_list(omit_slack_greater_than=0)
     tt = scitbx.graph.tardy_tree.construct(
         n_vertices=len(sites_cart),
         edge_list=edge_list,
         external_clusters=geo_manager.
         rigid_clusters_due_to_dihedrals_and_planes(
             constrain_dihedrals_with_sigma_less_than=10))
     orcs = tt.cluster_manager.overlapping_rigid_clusters(
         edge_sets=tt.edge_sets)
     O.labels = flex.std_string()
     O.sites_cart = flex.vec3_double()
     O.masses = flex.double()
     O.indices = []
     O.external_clusters = []
     O.related_x_i_seqs = shared.stl_vector_unsigned(sites_cart.size())
     orca_dof = 0
     for i_orc, orc in enumerate(orcs):
         external_cluster = []
         for i_seq in orc:
             x_i_seq = len(O.sites_cart)
             O.related_x_i_seqs[i_seq].append(x_i_seq)
             external_cluster.append(x_i_seq)
             O.labels.append("%s:%d" % (labels[i_seq], i_orc))
             O.sites_cart.append(sites_cart[i_seq])
             O.masses.append(masses[i_seq])
             O.indices.append((i_orc, i_seq))
         O.external_clusters.append(external_cluster)
         if (len(orc) == 1):
             orca_dof += 3
         elif (len(orc) == 2):
             orca_dof += 5
         else:
             orca_dof += 6
     print "sites_cart.size():", sites_cart.size()
     print "O.sites_cart.size():", O.sites_cart.size()
     print "original Cartesian dof:", sites_cart.size() * 3
     print "orca dof:", orca_dof
     for i_seq, x_i_seqs in enumerate(O.related_x_i_seqs):
         O.masses /= len(x_i_seqs)
     # XXX find more direct way to get x_edge_list
     x_edge_list = []
     for i, j in edge_list:
         for x_i in O.related_x_i_seqs[i]:
             i_orc = O.indices[x_i][0]
             for x_j in O.related_x_i_seqs[j]:
                 j_orc = O.indices[x_j][0]
                 if (i_orc == j_orc):
                     x_edge_list.append(tuple(sorted((x_i, x_j))))
     O.tardy_tree = scitbx.graph.tardy_tree.construct(
         sites=O.sites_cart,
         edge_list=x_edge_list,
         external_clusters=O.external_clusters)
     x_model_indices = expand_model_or_conformer_indices(
         indices=geo_manager.model_indices,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_conformer_indices = expand_model_or_conformer_indices(
         indices=geo_manager.conformer_indices,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_site_symmetry_table = expand_site_symmetry_table(
         site_symmetry_table=geo_manager.site_symmetry_table,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_bond_params_table = expand_bond_params_table(
         bond_params_table=geo_manager.bond_params_table,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_shell_sym_tables = []
     for shell_sym_table in geo_manager.shell_sym_tables:
         x_shell_sym_tables.append(
             expand_pair_sym_table(pair_sym_table=shell_sym_table,
                                   x_n_seq=O.sites_cart.size(),
                                   related_x_i_seqs=O.related_x_i_seqs))
     x_nonbonded_types = expand_nonbonded_types(
         nonbonded_types=geo_manager.nonbonded_types,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_angle_proxies = expand_angle_proxies(
         angle_proxies=geo_manager.angle_proxies,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_dihedral_proxies = expand_dihedral_or_chirality_proxies(
         proxies=geo_manager.dihedral_proxies,
         proxy_type=cctbx.geometry_restraints.dihedral_proxy,
         proxy_array_type=cctbx.geometry_restraints.shared_dihedral_proxy,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_chirality_proxies = expand_dihedral_or_chirality_proxies(
         proxies=geo_manager.chirality_proxies,
         proxy_type=cctbx.geometry_restraints.chirality_proxy,
         proxy_array_type=cctbx.geometry_restraints.shared_chirality_proxy,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     x_planarity_proxies = expand_planarity_proxies(
         planarity_proxies=geo_manager.planarity_proxies,
         x_n_seq=O.sites_cart.size(),
         related_x_i_seqs=O.related_x_i_seqs)
     O.geo_manager = cctbx.geometry_restraints.manager.manager(
         crystal_symmetry=geo_manager.crystal_symmetry,
         model_indices=x_model_indices,
         conformer_indices=x_conformer_indices,
         site_symmetry_table=x_site_symmetry_table,
         bond_params_table=x_bond_params_table,
         shell_sym_tables=x_shell_sym_tables,
         nonbonded_params=geo_manager.nonbonded_params,
         nonbonded_types=x_nonbonded_types,
         nonbonded_function=geo_manager.nonbonded_function,
         nonbonded_distance_cutoff=geo_manager.nonbonded_distance_cutoff,
         nonbonded_buffer=geo_manager.nonbonded_buffer,
         angle_proxies=x_angle_proxies,
         dihedral_proxies=x_dihedral_proxies,
         chirality_proxies=x_chirality_proxies,
         planarity_proxies=x_planarity_proxies,
         plain_pairs_radius=geo_manager.plain_pairs_radius,
         max_reasonable_bond_distance=geo_manager.
         max_reasonable_bond_distance,
         min_cubicle_edge=geo_manager.min_cubicle_edge)
     O.tardy_tree_rmsd_calculator = None