Geometry#
- autode.geom.are_coords_reasonable(coords: ndarray) bool #
Determine if a set of coords are reasonable. No distances can be < 0.7 Å and if there are more than 4 atoms ensure they do not all lie in the same plane. The latter possibility arises from RDKit’s conformer generation algorithm breaking
- Return type:
bool
- autode.geom.calc_heavy_atom_rmsd(atoms1: Atoms, atoms2: Atoms) float #
Calculate the RMSD between two sets of atoms considering only the ‘heavy’ atoms, i.e. the non-hydrogen atoms
- Parameters:
atoms2 (list(autode.atoms.Atom))
- Returns:
RMSD between the two sets
- Return type:
(float)
- autode.geom.calc_rmsd(coords1: ndarray, coords2: ndarray) float #
Calculate the RMSD between two sets of coordinates using the Kabsch algorithm
- Parameters:
coords2 (np.ndarray) – shape = (n ,3)
- Returns:
Root mean squared distance
- Return type:
(float)
- autode.geom.get_neighbour_list(species: Species, atom_i: int, index_set: Sequence[int]) Sequence[int] #
Calculate a neighbour list from atom i as a list of atom labels
- Parameters:
species (autode.species.Species)
index_set (set(int) | None) – Indexes that are possible neighbours for atom_i, if None then all atoms are ok
- Returns:
list of atom ids in ascending distance away from i
- Return type:
(list(int))
- autode.geom.get_points_on_sphere(n_points: int, r: float = 1) List[ndarray] #
Find n evenly spaced points on a sphere using the “How to generate equidistributed points on the surface of a sphere” by Markus Deserno, 2004.
- Parameters:
r (float) – radius of the sphere
- Returns:
(list(np.ndarray))
- autode.geom.get_rot_mat_euler(axis: ndarray, theta: float | Angle) ndarray #
Compute the 3D rotation matrix using the Euler Rodrigues formula https://en.wikipedia.org/wiki/Euler–Rodrigues_formula for an anticlockwise rotation of theta radians about a given axis
- Parameters:
theta (float) – Angle in radians (float)
- Returns:
Rotation matrix. shape = (3, 3)
- Return type:
(np.ndarray)
- autode.geom.get_rot_mat_euler_from_terms(a: float, b: float, c: float, d: float) ndarray #
3D rotation matrix from terms unique terms in the matrix
- autode.geom.get_rot_mat_kabsch(p_matrix: ndarray, q_matrix: ndarray) ndarray #
Get the optimal rotation matrix with the Kabsch algorithm. Notation is from https://en.wikipedia.org/wiki/Kabsch_algorithm
- Parameters:
q_matrix (np.ndarray)
- Returns:
rotation matrix
- Return type:
(np.ndarray)
- autode.geom.proj(u: ndarray, v: ndarray) ndarray #
Calculate the projection of v onto the direction of u. Useful for https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process
- Parameters:
v (np.ndarray)
- Returns:
proj_u(v)
- Return type:
(np.ndarray)
- autode.geom.symm_matrix_from_ltril(array: Sequence[float] | Sequence[Sequence[float]]) ndarray #
Construct a symmetric matrix from the lower triangular elements e.g.:
array = [0, 1, 2] -> array([[0, 1], [1, 2]])
- Return type:
(np.ndarray)