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)]
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)
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
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