From cb45e539435ca8d32191d13ae6f0b668bcd3e13d Mon Sep 17 00:00:00 2001 From: t-young31 Date: Fri, 21 Jun 2024 11:03:38 +0100 Subject: [PATCH 1/6] template branch --- doc/changelog.rst | 13 +++++++++++++ setup.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index d70b8d361..717163768 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,6 +1,19 @@ Changelog ========= +1.4.4 +------ +------- + +Functionality improvements +************************** +- ... + +Bug Fixes +********* +- ... + + 1.4.3 ------ ------- diff --git a/setup.py b/setup.py index 3854df28e..8e145d2f1 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ setup( name="autode", - version="1.4.3", + version="1.4.4", python_requires=">3.7", packages=[ "autode", From e9cebd6ec929ad85e828c5c56eac6c93ba218f3a Mon Sep 17 00:00:00 2001 From: Shoubhik Maiti <17470159+shoubhikraj@users.noreply.github.com> Date: Wed, 3 Jul 2024 16:05:56 +0100 Subject: [PATCH 2/6] Improved CRFO and PRFO optimiser (#344) * initial commit * update constraint code * unfinished update * minor changes * unfinished update * refactor dic constraints * uninished updates * uninished updates * bugixes * small changes * prfo update * rename improper dihedral * PRFO update * test fix * test fixes * update * small update * cartesian update * minor update * unifinished update * unifinished update * partial fix * bugfix * remove cartesian constraints * testfix * testfix 2 * add tests * revert parts of prfo update * remove unnecessary line * comment * add test for PRFO * pr suggestions * pr suggestions 2 * revert to original CRFO code * force hessian to be positive definite * prfo fixes * updates * update * add test * update changelog and remove unused code --- autode/opt/coordinates/base.py | 25 ++++- autode/opt/coordinates/cartesian.py | 8 +- autode/opt/coordinates/dic.py | 158 +++++++++++++++------------ autode/opt/coordinates/internals.py | 3 +- autode/opt/coordinates/primitives.py | 7 ++ autode/opt/optimisers/crfo.py | 86 +++++---------- autode/opt/optimisers/prfo.py | 82 ++++++++++---- autode/wrappers/XTB.py | 6 + doc/changelog.rst | 2 +- tests/test_opt/test_coordiantes.py | 33 +++++- tests/test_opt/test_crfo.py | 19 ++-- tests/test_opt/test_prfo.py | 41 ++++++- 12 files changed, 297 insertions(+), 173 deletions(-) diff --git a/autode/opt/coordinates/base.py b/autode/opt/coordinates/base.py index af2843311..6772b6819 100644 --- a/autode/opt/coordinates/base.py +++ b/autode/opt/coordinates/base.py @@ -232,7 +232,7 @@ def update_h_from_old_h( for update_type in hessian_update_types: updater = update_type( h=old_coords._h, - s=self.raw - old_coords.raw, + s=np.array(self) - np.array(old_coords), y=self._g - old_coords._g, subspace_idxs=old_coords.indexes, ) @@ -250,6 +250,29 @@ def update_h_from_old_h( "Could not update the Hessian - no suitable update strategies" ) + @property + def rfo_shift(self): + """ + Get the RFO diagonal shift factor λ that can be applied to the + Hessian (H - λI) to obtain the RFO step + + Returns: + (float): The shift parameter + """ + h_n, _ = self._h.shape + # form the augmented Hessian + aug_h = np.zeros(shape=(h_n + 1, h_n + 1)) + + aug_h[:h_n, :h_n] = self._h + aug_h[-1, :h_n] = self._g + aug_h[:h_n, -1] = self._g + + # first non-zero eigenvalue + aug_h_lmda = np.linalg.eigvalsh(aug_h) + rfo_lmda = aug_h_lmda[0] + assert abs(rfo_lmda) > 1.0e-10 + return rfo_lmda + def make_hessian_positive_definite(self) -> None: """ Make the Hessian matrix positive definite by shifting eigenvalues diff --git a/autode/opt/coordinates/cartesian.py b/autode/opt/coordinates/cartesian.py index 423539f8f..876dd95d1 100644 --- a/autode/opt/coordinates/cartesian.py +++ b/autode/opt/coordinates/cartesian.py @@ -1,5 +1,5 @@ import numpy as np -from typing import Optional, TYPE_CHECKING +from typing import Optional, List, TYPE_CHECKING from autode.log import logger from autode.values import ValueArray @@ -9,6 +9,7 @@ if TYPE_CHECKING: from autode.values import Gradient from autode.hessians import Hessian + from autode.opt.coordinates.primitives import ConstrainedPrimitive class CartesianCoordinates(OptCoordinates): @@ -45,7 +46,7 @@ def _update_g_from_cart_g(self, arr: Optional["Gradient"]) -> None: Arguments: arr: Gradient array """ - self.g = None if arr is None else np.array(arr).flatten() + self._g = None if arr is None else np.array(arr).flatten() def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: """ @@ -57,7 +58,8 @@ def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: Arguments: arr: Hessian matrix """ - self.h = None if arr is None else np.array(arr) + assert self.h_or_h_inv_has_correct_shape(arr) + self._h = None if arr is None else np.array(arr) def iadd(self, value: np.ndarray) -> OptCoordinates: return np.ndarray.__iadd__(self, value) diff --git a/autode/opt/coordinates/dic.py b/autode/opt/coordinates/dic.py index 2d5277854..54ec4015b 100644 --- a/autode/opt/coordinates/dic.py +++ b/autode/opt/coordinates/dic.py @@ -145,11 +145,11 @@ def _update_g_from_cart_g(self, arr: Optional["Gradient"]) -> None: arr: Cartesian gradient array """ if arr is None: - self._x.g, self.g = None, None + self._x.g, self._g = None, None else: self._x.g = arr.flatten() - self.g = np.matmul(self.B_T_inv.T, self._x.g) + self._g = np.matmul(self.B_T_inv.T, self._x.g) return None @@ -162,14 +162,16 @@ def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: arr: Cartesian Hessian matrix """ if arr is None: - self._x.h, self.h = None, None + self._x.h, self._h = None, None else: self._x.h = arr # NOTE: This is not the full transformation as noted in # 10.1063/1.471864 only an approximate Hessian is required(?) - self.h = np.linalg.multi_dot((self.B_T_inv.T, arr, self.B_T_inv)) + hess = np.linalg.multi_dot((self.B_T_inv.T, arr, self.B_T_inv)) + assert self.h_or_h_inv_has_correct_shape(hess) + self._h = hess return None @@ -217,6 +219,7 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": x_1 = self.to("cartesian") + np.matmul(self.B_T_inv, value) success = False + rms_s = np.inf for i in range(1, _max_back_transform_iterations + 1): try: x_k = x_k + np.matmul(self.B_T_inv, (s_new - s_k)) @@ -245,7 +248,7 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": else: logger.warning( f"Failed to transform in {i} cycles. " - f"Final RMS(s) = {rms_s:.8f}" + + f"Final RMS(s) = {rms_s:.8f}" ) x_k = x_1 if not self.allow_unconverged_back_transform: @@ -292,7 +295,7 @@ def __new__(cls, input_array) -> "InternalCoordinates": arr = super().__new__(cls, input_array) - arr._lambda = None # Additional lagrangian multipliers + arr._lambda = np.array([]) # Additional lagrangian multipliers return arr def __array_finalize__(self, obj: "OptCoordinates") -> None: @@ -301,11 +304,28 @@ def __array_finalize__(self, obj: "OptCoordinates") -> None: self._lambda = getattr(obj, "_lambda", None) return - def zero_lagrangian_multipliers(self) -> None: - r"""Zero all \lambda_i""" + @classmethod + def from_cartesian( + cls, + x: "CartesianCoordinates", + primitives: Optional[PIC] = None, + ) -> "DICWithConstraints": + """ + Generate delocalised internal coordinates with constraints + with the Lagrangian multipliers initialised as zeroes - self._lambda = np.zeros(shape=(self.n_constraints,)) - return None + Args: + x: Cartesian coordinates + + primitives: Primitive internal coordinates. If undefined then use + all pairwise inverse distances + + Returns: + (DICWithConstraints): DIC with constraints + """ + dic = super().from_cartesian(x=x, primitives=primitives) + dic._lambda = np.zeros(shape=(dic.n_constraints,)) + return dic @property def raw(self) -> np.ndarray: @@ -355,88 +375,84 @@ def active_indexes(self) -> List[int]: return [i for i in range(n + m) if i not in self.inactive_indexes] - def _update_g_from_cart_g(self, arr: Optional["Gradient"]) -> None: - r""" - Updates the gradient from a calculated Cartesian gradient, where - the gradient is that of the Lagrangian. Includes dL/d_λi terms where - λi is the i-th lagrangian multiplier. - - ----------------------------------------------------------------------- - Arguments: - arr: Cartesian gradient array + def iadd(self, value: np.ndarray) -> "OptCoordinates": """ + Add a step in internal coordinates (along with Lagrange multipliers) + to this set of coordinates, and update the Cartesian coordinates - if arr is None: - self._x.g, self.g = None, None - return - - assert self._lambda is not None, "Must have λ defined" + Args: + value: Difference between current and new DICs, and the multipliers + """ + assert len(value) == len(self) + self.n_constraints + # separate the coordinates and the lagrange multipliers + if self.n_constraints > 0: + delta_lambda = value[-self.n_constraints :] + self._lambda += delta_lambda + delta_s = value[: -self.n_constraints] + else: + delta_s = value - self._x.g = arr.flatten() - n = len(self) - m = self.n_constraints + return super().iadd(delta_s) - self.g = np.zeros(shape=(n + m,)) + @property + def g(self): + """ + Gradient of the energy, contains the Lagrangian dL/d_λi terms where + λi is the i-th lagrangian multiplier. + """ + if self._g is None: + return None - # Set the first part dL/ds_i - self.g[:n] = np.matmul(self.B_T_inv.T, self._x.g) + n, m = len(self), self.n_constraints + arr = np.zeros(shape=(n + m,)) + arr[:n] = self._g + # constrained gradient terms for i in range(m): - self.g[n - m + i] -= self._lambda[i] * 1 # λ dC_i/ds_i + arr[n - m + i] -= self._lambda[i] * 1 # λ dC_i/ds_i - # and the final dL/dλ_i + # final dL/dλ_i c = self.constrained_primitives for i in range(m): - self.g[n + i] = -c[i].delta(self._x) # C_i(x) = Z - Z_ideal + arr[n + i] = -c[i].delta(self._x) # C_i(x) = Z - Z_ideal - return None + return arr - def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: - """ - Update the DIC Hessian matrix from a Cartesian one + @g.setter + def g(self, value): + """Setting g is not allowed with constraints""" + raise RuntimeError("Cannot set gradient with constraints enabled") - ----------------------------------------------------------------------- - Arguments: - arr: Cartesian Hessian matrix + @property + def h(self): """ + The Hessian matrix, containing Lagrangian constraint terms - if arr is None: - self._x.h, self.h = None, None - - else: - self._x.h = arr - n = len(self) - m = self.n_constraints - - self.h = np.zeros(shape=(n + m, n + m)) - - # Fill in the upper left corner with d^2L/ds_i ds_j - # where the second derivative of the constraint is zero - self.h[:n, :n] = np.linalg.multi_dot( - (self.B_T_inv.T, arr, self.B_T_inv) - ) + Returns: + (np.ndarray): + """ + if self._h is None: + return None - # and the d^2L/ds_i dλ_i = -dC_i/ds_i = -1 - # d^2L/dλ_i dλ_j = 0 + n, m = len(self), self.n_constraints + arr = np.zeros(shape=(n + m, n + m)) - for i in range(m): - self.h[n + i, :] = self.h[:, n + i] = 0.0 + # Upper left corner is d^2L/ds_i ds_j + arr[:n, :n] = self._h - for i in range(m): - self.h[n - m + i, n + i] = self.h[n + i, n - m + i] = -1.0 + # and the d^2L/ds_i dλ_i = -dC_i/ds_i = -1 + # d^2L/dλ_i dλ_j = 0 + for i in range(m): + arr[n + i, :] = arr[:, n + i] = 0.0 - return None + for i in range(m): + arr[n - m + i, n + i] = arr[n + i, n - m + i] = -1.0 - def h_or_h_inv_has_correct_shape(self, arr: Optional[np.ndarray]): - """Does a Hessian or its inverse have the correct shape?""" - if arr is None: - return True # None is always valid + return arr - n_rows, n_cols = arr.shape - return ( - arr.ndim == 2 - and n_rows == n_cols == len(self) + self.n_constraints - ) + @h.setter + def h(self, value): + raise RuntimeError("Cannot set hessian when constraints are enabled") def update_lagrange_multipliers(self, arr: np.ndarray) -> None: """Update the lagrange multipliers by adding a set of values""" diff --git a/autode/opt/coordinates/internals.py b/autode/opt/coordinates/internals.py index 3de919b13..421ddf7fb 100644 --- a/autode/opt/coordinates/internals.py +++ b/autode/opt/coordinates/internals.py @@ -24,6 +24,7 @@ PrimitiveDummyLinearAngle, PrimitiveLinearAngle, PrimitiveDihedralAngle, + PrimitiveImproperDihedral, LinearBendType, ) @@ -397,7 +398,7 @@ def _add_angles_from_species( mol, m, o, n, bonded=True ) if r is not None: - self.add(PrimitiveDihedralAngle(m, r, o, n)) + self.add(PrimitiveImproperDihedral(m, r, o, n)) continue # Otherwise, we use a nearby (< 4.0 A) reference atom to diff --git a/autode/opt/coordinates/primitives.py b/autode/opt/coordinates/primitives.py index 52efca8a1..6a74b86ae 100644 --- a/autode/opt/coordinates/primitives.py +++ b/autode/opt/coordinates/primitives.py @@ -408,6 +408,13 @@ def __repr__(self): return f"Dihedral({self.m}-{self.o}-{self.p}-{self.n})" +class PrimitiveImproperDihedral(PrimitiveDihedralAngle): + """Out-of-Plan (improper) dihedral angles""" + + def __repr__(self): + return f"ImproperDihedral({self.m}-{self.o}-{self.p}-{self.n})" + + class LinearBendType(Enum): """For linear angles, there are two orthogonal directions""" diff --git a/autode/opt/optimisers/crfo.py b/autode/opt/optimisers/crfo.py index a28aa8565..202a255c2 100644 --- a/autode/opt/optimisers/crfo.py +++ b/autode/opt/optimisers/crfo.py @@ -44,6 +44,7 @@ def _step(self) -> None: """Partitioned rational function step""" assert self._coords is not None, "Must have coords to take a step" assert self._coords.g is not None, "Must have a gradient" + if self.iteration != 0: self._coords.update_h_from_old_h( self._history.penultimate, self._hessian_update_types @@ -60,39 +61,41 @@ def _step(self) -> None: f"Active space is {len(idxs)} dimensional" ) - b, u = np.linalg.eigh(self._coords.h[:, idxs][idxs, :]) + d2L_eigvals = np.linalg.eigvalsh(self._coords.h) logger.info( - f"∇^2L has {sum(lmda < 0 for lmda in b)} negative " - f"eigenvalue(s). Should have {m - n_satisfied_constraints}" + f"∇^2L has {sum(lmda < 0 for lmda in d2L_eigvals)} negative " + f"eigenvalue(s). Should have {m}" ) - logger.info("Calculating transformed gradient vector") - f = u.T.dot(self._coords.g[idxs]) - - lambda_p = self._lambda_p_from_eigvals_and_gradient(b, f) - logger.info(f"Calculated λ_p=+{lambda_p:.8f}") - - lambda_n = self._lambda_n_from_eigvals_and_gradient(b, f) - logger.info(f"Calculated λ_n={lambda_n:.8f}") + # force molecular Hessian block to be positive definite + hessian = self._coords.h.copy() + shift = self._coords.rfo_shift + hessian -= shift * np.eye(n + m) + for i in range(m): # no shift on constraints + hessian[-m + i, -m + i] = 0.0 - # Create the step along the n active DICs and m lagrangian multipliers - delta_s_active = np.zeros(shape=(len(idxs),)) + logger.info(f"Calculated RFO λ = {shift:.4f}") - o = m - n_satisfied_constraints - logger.info(f"Maximising {o} modes") + d2L_eigvals = np.linalg.eigvalsh(hessian) + n_negative = sum(lmda < 0 for lmda in d2L_eigvals) + if not n_negative == m: + raise RuntimeError( + f"Constrained optimisation failed, ∇^2L has {n_negative} " + f" negative eigenvalues after RFO diagonal shift - " + f"should have {m}" + ) - for i in range(o): - delta_s_active -= f[i] * u[:, i] / (b[i] - lambda_p) + # Set all non-active components of gradient to zero + gradient = self._coords.g.copy() + gradient[self._coords.inactive_indexes] = 0.0 - for j in range(n - n_satisfied_constraints): - delta_s_active -= f[o + j] * u[:, o + j] / (b[o + j] - lambda_n) + # take a quasi-Newton step + delta_s = -np.matmul(np.linalg.inv(hessian), gradient) # Set all the non-active components of the step to zero - delta_s = np.zeros(shape=(n + m,)) - delta_s[idxs] = delta_s_active + delta_s[self._coords.inactive_indexes] = 0.0 - c = self._take_step_within_trust_radius(delta_s[:n]) - self._coords.update_lagrange_multipliers(c * delta_s[n:]) + self._take_step_within_trust_radius(delta_s) return None @property @@ -131,41 +134,4 @@ def _build_internal_coordinates(self): self._coords = DICWithConstraints.from_cartesian( x=cartesian_coords, primitives=primitives ) - self._coords.zero_lagrangian_multipliers() return None - - def _lambda_p_from_eigvals_and_gradient( - self, b: np.ndarray, f: np.ndarray - ) -> float: - """ - Calculate the positive eigenvalue of the augmented hessian from - the eigenvalues of the full lagrangian Hessian matrix (b) and the - gradient in the Hessian eigenbasis - """ - assert self._coords is not None - - m = self._coords.n_constraints - self._coords.n_satisfied_constraints - - aug_h = np.zeros(shape=(m + 1, m + 1)) - aug_h[:m, :m] = np.diag(b[:m]) - aug_h[:-1, -1] = aug_h[-1, :-1] = f[:m] - - eigenvalues = np.linalg.eigvalsh(aug_h) - return eigenvalues[-1] - - def _lambda_n_from_eigvals_and_gradient( - self, b: np.ndarray, f: np.ndarray - ) -> float: - """Like lambda_p but for the negative component""" - assert self._coords is not None - - n_satisfied = self._coords.n_satisfied_constraints - m = self._coords.n_constraints - n_satisfied - n = len(self._coords) - n_satisfied - - aug_h = np.zeros(shape=(n + 1, n + 1)) - aug_h[:n, :n] = np.diag(b[m:]) - aug_h[-1, :n] = aug_h[:n, -1] = f[m:] - - eigenvalues = np.linalg.eigvalsh(aug_h) - return eigenvalues[0] diff --git a/autode/opt/optimisers/prfo.py b/autode/opt/optimisers/prfo.py index 4b8ae4100..3fb78a886 100644 --- a/autode/opt/optimisers/prfo.py +++ b/autode/opt/optimisers/prfo.py @@ -1,13 +1,12 @@ """Partitioned rational function optimisation""" import numpy as np -from typing import Union +from typing import Union, Optional from autode.log import logger from autode.values import Distance from autode.opt.optimisers.crfo import CRFOptimiser from autode.opt.optimisers.hessian_update import BofillUpdate from autode.opt.coordinates.cartesian import CartesianCoordinates -from autode.exceptions import CalculationException class PRFOptimiser(CRFOptimiser): @@ -15,6 +14,7 @@ def __init__( self, init_alpha: Union[Distance, float] = 0.05, recalc_hessian_every: int = 10, + imag_mode_idx: int = 0, *args, **kwargs, ): @@ -27,9 +27,8 @@ def __init__( Arguments: init_alpha: Maximum step size (default Å if unit not given) - imag_mode_idx: Index of the imaginary mode to follow. Default = 0, - the most imaginary mode (i.e. most negative - eigenvalue) + imag_mode_idx: Index of the imaginary mode to follow. Default + is 0th mode i.e. the most negative mode See Also: :py:meth:`RFOOptimiser ` @@ -39,6 +38,8 @@ def __init__( self.alpha = Distance(init_alpha, units="ang") assert self.alpha > 0 self.recalc_hessian_every = int(recalc_hessian_every) + self._mode_idx = imag_mode_idx + self._last_eigvec: Optional[np.ndarray] = None # store last mode self._hessian_update_types = [BofillUpdate] def _step(self) -> None: @@ -52,33 +53,75 @@ def _step(self) -> None: self._history.penultimate, self._hessian_update_types ) - assert self._coords.h is not None # _update_hessian must set .h - idxs = list(range(len(self._coords))) + assert self._coords.h is not None # must set .h - b, u = np.linalg.eigh(self._coords.h[:, idxs][idxs, :]) + b, u = np.linalg.eigh(self._coords.h) + f = u.T.dot(self._coords.g) n_negative_eigenvalues = sum(lmda < 0 for lmda in b) logger.info( f"∇^2E has {n_negative_eigenvalues} negative " f"eigenvalue(s). Should have 1" ) - if n_negative_eigenvalues < 1: - raise CalculationException("Lost imaginary (TS) mode") + imag_idx = self._get_imag_mode_idx(u) + logger.info(f"Following mode {imag_idx} uphill") - f = u.T.dot(self._coords.g[idxs]) - lambda_p = self._lambda_p_from_eigvals_and_gradient(b, f) - lambda_n = self._lambda_n_from_eigvals_and_gradient(b, f) - logger.info(f"Calculated λ_p=+{lambda_p:.8f}, λ_n={lambda_n:.8f}") + b_max = b[imag_idx] + u_max = u[:, imag_idx] + f_max = f[imag_idx] - delta_s = np.zeros(shape=(len(idxs),)) - delta_s -= f[0] * u[:, 0] / (b[0] - lambda_p) + b_min = np.delete(b, imag_idx) + u_min = np.delete(u, imag_idx, axis=1) + f_min = np.delete(f, imag_idx) - for j in range(1, len(idxs)): - delta_s -= f[j] * u[:, j] / (b[j] - lambda_n) + n = len(b) + delta_s = np.zeros(shape=(n,)) + # downhill step + aug_h_min = np.zeros(shape=(n, n)) + aug_h_min[: n - 1, : n - 1] = np.diag(b_min) + aug_h_min[:-1, -1] = aug_h_min[-1, :-1] = f_min + lambda_n = np.linalg.eigvalsh(aug_h_min)[0] + logger.info(f"Calculated λ_n = {lambda_n:.6f}") - _ = self._take_step_within_trust_radius(delta_s) + for i in range(n - 1): + delta_s -= f_min[i] * u_min[:, i] / (b_min[i] - lambda_n) + + # uphill step + aug_h_max = np.zeros(shape=(2, 2)) + aug_h_max[:1, :1] = b_max + aug_h_max[:-1, -1] = aug_h_max[-1, :-1] = f_max + lambda_p = np.linalg.eigvalsh(aug_h_max)[-1] + logger.info(f"Calculated λ_p = {lambda_p:.6f}") + + delta_s -= f_max * u_max / (b_max - lambda_p) + + self._last_eigvec = u[:, imag_idx].flatten() + self._take_step_within_trust_radius(delta_s) return None + def _get_imag_mode_idx(self, u: np.ndarray): + """ + Find the imaginary mode to follow upwards in the current step. + + Args: + u (np.ndarray): The Hessian eigenvectors + + Returns: + (int): Integer + """ + if self.iteration == 0: + return self._mode_idx + + overlaps = [] + for i in range(u.shape[1]): + overlaps.append( + np.abs(np.dot(u[:, i].flatten(), self._last_eigvec)) + ) + + mode_idx = np.argmax(overlaps) + logger.info(f"Overlap with previous TS mode: {overlaps[mode_idx]:.3f}") + return mode_idx + def _initialise_run(self) -> None: """ Initialise running a partitioned rational function optimisation by @@ -86,7 +129,6 @@ def _initialise_run(self) -> None: """ assert self._species is not None, "Must have a species to init" - # self._build_internal_coordinates() self._coords = CartesianCoordinates(self._species.coordinates).to( "dic" ) diff --git a/autode/wrappers/XTB.py b/autode/wrappers/XTB.py index 338b05e18..a685f0248 100644 --- a/autode/wrappers/XTB.py +++ b/autode/wrappers/XTB.py @@ -109,6 +109,12 @@ def print_point_charge_file(calc: "CalculationExecutor"): def print_xcontrol_file(self, calc: "CalculationExecutor", molecule): """Print an XTB input file with constraints and point charges""" + # do not print constraints if not optimisation + if not isinstance(calc.input.keywords, OptKeywords) and ( + calc.input.point_charges is None + ): + return + xcontrol_filename = f"xcontrol_{calc.name}" with open(xcontrol_filename, "w") as xcontrol_file: self.print_distance_constraints(xcontrol_file, molecule) diff --git a/doc/changelog.rst b/doc/changelog.rst index 717163768..fe23c709b 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -7,7 +7,7 @@ Changelog Functionality improvements ************************** -- ... +- Improved constrained optimisation (:code:`CRFOptimiser`) and handling of multiple constraints Bug Fixes ********* diff --git a/tests/test_opt/test_coordiantes.py b/tests/test_opt/test_coordiantes.py index eb8e21040..8e3a5559c 100644 --- a/tests/test_opt/test_coordiantes.py +++ b/tests/test_opt/test_coordiantes.py @@ -22,7 +22,7 @@ AnyPIC, ) from autode.opt.coordinates.cartesian import CartesianCoordinates -from autode.opt.coordinates.dic import DIC +from autode.opt.coordinates.dic import DIC, DICWithConstraints from autode.opt.coordinates.primitives import ( PrimitiveInverseDistance, PrimitiveDistance, @@ -30,6 +30,7 @@ PrimitiveBondAngle, ConstrainedPrimitiveBondAngle, PrimitiveDihedralAngle, + PrimitiveImproperDihedral, PrimitiveLinearAngle, PrimitiveDummyLinearAngle, LinearBendType, @@ -111,10 +112,10 @@ def test_cartesian_coordinates_hessian_update(): # Simple coordinates with 2 atoms in 3 D coords = CartesianCoordinates(np.arange(0, 6).reshape((2, 3))) - with pytest.raises(ValueError): + with pytest.raises(AssertionError): coords.update_h_from_cart_h(arr=np.array([])) - with pytest.raises(ValueError): + with pytest.raises(AssertionError): coords.update_h_from_cart_h(arr=np.array([1.0])) # Hessian needs to be 6x6 @@ -199,6 +200,29 @@ def test_basic_dic_properties(): _ = x.to("unknown coordinates") +def test_dic_constraints(): + mol = water_mol() + mol.constraints.distance = {(0, 1): 1.5} + + pic = AnyPIC.from_species(mol) + x = CartesianCoordinates(mol.coordinates) + q = DICWithConstraints.from_cartesian(x, pic) + assert q.n_constraints == 1 + assert q.g is None and q.h is None + + # with constraints grad or hessian cannot be set directly + with pytest.raises(RuntimeError): + q.g = np.arange(3) + with pytest.raises(RuntimeError): + q.h = np.arange(3) + + q.update_g_from_cart_g(np.random.rand(9)) + q.update_h_from_cart_h(np.random.rand(9, 9)) + # one extra dimension from Lagrange multiplier + assert q.g.shape == (4,) + assert q.h.shape == (4, 4) + + def test_invalid_pic_construction(): # Cannot construct some primitives e.g. PrimitiveInverseDistances from non Primitive # internal coordinates @@ -783,6 +807,7 @@ def test_repr(): PrimitiveLinearAngle(0, 1, 2, 3, LinearBendType.BEND), PrimitiveLinearAngle(0, 1, 2, 3, LinearBendType.COMPLEMENT), PrimitiveDummyLinearAngle(0, 1, 2, LinearBendType.BEND), + PrimitiveImproperDihedral(0, 1, 2, 3), ] for p in prims: @@ -844,7 +869,7 @@ def test_pic_generation_linear_angle_ref(): assert not any(isinstance(ic, PrimitiveDummyLinearAngle) for ic in pic) assert PrimitiveLinearAngle(4, 3, 2, 8, LinearBendType.BEND) in pic # for C-Fe-C, only one out-of-plane dihedral should be present - assert PrimitiveDihedralAngle(3, 5, 2, 1) in pic + assert PrimitiveImproperDihedral(3, 5, 2, 1) in pic assert sum(isinstance(ic, PrimitiveDihedralAngle) for ic in pic) == 1 # check degrees of freedom = 3N - 6 _ = pic(m.coordinates.flatten()) diff --git a/tests/test_opt/test_crfo.py b/tests/test_opt/test_crfo.py index f040278a8..9cb066d20 100644 --- a/tests/test_opt/test_crfo.py +++ b/tests/test_opt/test_crfo.py @@ -62,7 +62,6 @@ def test_coordinate_setup(): # Initial lagrangian multiplier is close to zero, which is the last # component in the optimisation space - opt._coords.zero_lagrangian_multipliers() assert np.isclose(opt._coords._lambda[0], 0.0) @@ -70,14 +69,14 @@ def crfo_water_coords(): return crfo_coords(molecule=water_molecule()) -def test_setting_invalid_lagrange_multipliers(): +def test_adding_invalid_step(): s = crfo_water_coords() - # the vector of lagrange multipliers must be of length one to be - # appropriate for a water molecule with a single constrained distance - invalid_multipliers = np.ones(shape=(4,)) + # the added step must be the length of the coordinates plus + # one lagragne multiplier + invalid_step = np.ones(shape=(5,)) - with pytest.raises(ValueError): - s.update_lagrange_multipliers(invalid_multipliers) + with pytest.raises(AssertionError): + s += invalid_step def test_simple_gradient_update(): @@ -121,7 +120,7 @@ def test_primitive_projection_discard(): assert len(s) == 3 # Shift on the first couple of DIC but nothing on the final one - s += np.array([0.03, -0.07, 0.0]) + s += np.array([0.03, -0.07, 0.0, 0.0]) def r(_x): return np.linalg.norm(_x[:3] - _x[3:6]) @@ -182,7 +181,7 @@ def test_step_c2h3(): coords = crfo_coords(m) # Should be able to add an arbitrary vector to the coordinates - coords += np.random.uniform(-0.1, 0.1, size=coords.shape) + coords += np.random.uniform(-0.1, 0.1, size=coords.raw.shape) def test_baker1997_example(): @@ -263,7 +262,7 @@ def test_xtb_opt_with_two_distance_constraint(): opt._initialise_run() # Moving the angle should preserve the distances - s = opt._coords + np.array([0.1, 0.0, 0.0]) + s = opt._coords + np.array([0.1, 0.0, 0.0, 0.0, 0.0]) # append multiplier x = s.to("cart").reshape((3, 3)) for i, j in ((0, 1), (0, 2)): assert np.isclose( diff --git a/tests/test_opt/test_prfo.py b/tests/test_opt/test_prfo.py index d48815e37..09cbc2fbc 100644 --- a/tests/test_opt/test_prfo.py +++ b/tests/test_opt/test_prfo.py @@ -3,6 +3,7 @@ from autode.atoms import Atom from autode.methods import XTB from autode.opt.optimisers import PRFOptimiser +from autode.config import Config from autode.utils import work_in_tmp_dir from ..testutils import requires_working_xtb_install @@ -67,6 +68,42 @@ def test_diels_alder_ts_opt(): print(xyz_file_string, file=file) mol = Molecule("init.xyz") - PRFOptimiser.optimise(mol, method=xtb, maxiter=50, init_alpha=0.05) + PRFOptimiser.optimise(mol, method=xtb, maxiter=25, init_alpha=0.05) assert has_single_imag_freq_at_xtb_level(mol) - # print(mol.imaginary_frequencies) # should be ~600 cm-1 + freq = mol.imaginary_frequencies[0] + assert np.isclose(freq, -600, atol=30) # should be ~600 cm-1 + + +@requires_working_xtb_install +@work_in_tmp_dir() +def test_mode_following(): + mol = Molecule( + name="sn2_ts", + charge=-1, + solvent_name="water", + atoms=[ + Atom("F", -4.17085, 3.55524, 1.59944), + Atom("Cl", -0.75962, 3.53830, -0.72354), + Atom("C", -2.51988, 3.54681, 0.47836), + Atom("H", -3.15836, 3.99230, -0.27495), + Atom("H", -2.54985, 2.47411, 0.62732), + Atom("H", -2.10961, 4.17548, 1.25945), + ], + ) + opt = PRFOptimiser(maxiter=10, etol=1e-4, gtol=1e-3, imag_mode_idx=0) + opt._species = mol + opt._method = xtb + opt._n_cores = Config.n_cores + opt._initialise_run() + # take a step + opt._step() + opt._update_gradient_and_energy() + opt._update_hessian() + # shift the Hessian modes by exchanging eigenvalues of first two modes + b, u = np.linalg.eigh(opt._coords.h) + b[0], b[1] = b[1], b[0] + new_h = np.linalg.multi_dot((u, np.diag(b), u.T)).real + b, u = np.linalg.eigh(new_h) + new_idx = opt._get_imag_mode_idx(u) + # the chosen index should be 1, based on overlap + assert new_idx == 1 From 76398fcb5150624264306a3ca287911bd9f4a3a0 Mon Sep 17 00:00:00 2001 From: Tom Young <39765193+t-young31@users.noreply.github.com> Date: Wed, 17 Jul 2024 21:35:27 +0100 Subject: [PATCH 3/6] fix compatibility with numpy v2.0 (#348) * fix compat with numpy v2.0 * allclose small a/rtol --- autode/atoms.py | 2 +- autode/hessians.py | 2 +- autode/values.py | 5 +++-- doc/changelog.rst | 1 + tests/test_atoms.py | 6 ++++-- tests/test_bracket/test_dhs.py | 4 +++- tests/test_values.py | 6 ++---- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/autode/atoms.py b/autode/atoms.py index 6e88d8f9f..675f7a957 100644 --- a/autode/atoms.py +++ b/autode/atoms.py @@ -804,7 +804,7 @@ def vector(self, i: int, j: int) -> np.ndarray: Raises: (IndexError): If i or j are not present """ - return self[j].coord - self[i].coord + return np.asarray(self[j].coord - self[i].coord) def nvector(self, i: int, j: int) -> np.ndarray: """ diff --git a/autode/hessians.py b/autode/hessians.py index bbe00fb3e..c8ef05be6 100644 --- a/autode/hessians.py +++ b/autode/hessians.py @@ -353,7 +353,7 @@ def _eigenvalues_to_freqs(self, lambdas) -> List[Frequency]: (list(autode.values.Frequency)): """ - nus = np.sqrt(np.complex_(lambdas)) / ( + nus = np.sqrt(np.complex128(lambdas)) / ( 2.0 * np.pi * Constants.ang_to_m * Constants.c_in_cm ) nus *= self._freq_scale_factor diff --git a/autode/values.py b/autode/values.py index ea771c631..81d2cde02 100644 --- a/autode/values.py +++ b/autode/values.py @@ -619,9 +619,10 @@ def __eq__(self, other): other is not None and hasattr(other, "shape") and other.shape == self.shape - and np.allclose(self, other) + and np.allclose( + np.asarray(self), np.asarray(other), atol=1e-64, rtol=1e-64 + ) ) - return eq def __ne__(self, other): diff --git a/doc/changelog.rst b/doc/changelog.rst index fe23c709b..438d9fa7b 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -8,6 +8,7 @@ Changelog Functionality improvements ************************** - Improved constrained optimisation (:code:`CRFOptimiser`) and handling of multiple constraints +- Adds compatability with numpy v2.0 Bug Fixes ********* diff --git a/tests/test_atoms.py b/tests/test_atoms.py index 4c115c004..083265653 100644 --- a/tests/test_atoms.py +++ b/tests/test_atoms.py @@ -41,10 +41,12 @@ def test_atoms(): h_atoms = Atoms([Atom("H"), Atom("H", x=1.0)]) assert isinstance(h_atoms.com, Coordinate) - assert np.allclose(h_atoms.com, np.array([0.5, 0.0, 0.0])) + assert np.allclose(np.asarray(h_atoms.com), np.array([0.5, 0.0, 0.0])) assert not h_atoms.contain_metals - assert h_atoms.vector(0, 1) == np.array([1.0, 0.0, 0.0]) + v = h_atoms.vector(0, 1) + assert isinstance(v, np.ndarray) + assert np.allclose(v, np.array([1.0, 0.0, 0.0])) # Moment of inertia assert np.sum(np.diag(h_atoms.moi)) > 0.0 diff --git a/tests/test_bracket/test_dhs.py b/tests/test_bracket/test_dhs.py index e7e39b4d0..1c2394049 100644 --- a/tests/test_bracket/test_dhs.py +++ b/tests/test_bracket/test_dhs.py @@ -157,7 +157,9 @@ def test_dhs_image_pair_ts_guess(caplog): assert np.allclose(peak.coordinates.flatten(), imgpair.left_coords) assert np.isclose(peak.energy, -0.144) - assert np.allclose(peak.gradient.flatten(), imgpair.left_coords.g) + assert np.allclose( + np.asarray(peak.gradient.flatten()), np.asarray(imgpair.left_coords.g) + ) @requires_working_xtb_install diff --git a/tests/test_values.py b/tests/test_values.py index 3955c0134..e2c48e4ea 100644 --- a/tests/test_values.py +++ b/tests/test_values.py @@ -49,8 +49,7 @@ def test_coordinate(): assert "coord" in repr(coord).lower() assert coord is not None - # Equality defaults to np.allclose - assert coord == np.zeros(3) + assert np.allclose(coord, np.zeros(3)) def test_coordinates(): @@ -114,8 +113,7 @@ def test_inplace_modification(): def test_copy_conversion(): x = Gradient([[1.0, 1.0, 1.0]], units="Ha / Å") y = x.to("eV / Å") - - assert not np.allclose(x, y) + assert not np.allclose(np.asarray(x), np.asarray(y)) assert np.allclose(x, np.ones(shape=(1, 3))) From eb3d47535142c639571e29998963ca55c5656e32 Mon Sep 17 00:00:00 2001 From: Shoubhik Maiti <17470159+shoubhikraj@users.noreply.github.com> Date: Sat, 20 Jul 2024 12:41:52 +0100 Subject: [PATCH 4/6] Add combination of bonds primitive and trust radius optimiser (#345) * initial commit * initial commit * constrained bond * allow extra primitives in optimiser * active subspace * fix bug * trm * trm update * trm update * trm update * trust radius update * trust radius update * small update * rfo update * refactor to maxmove * refactor qa * small update * remove redundant imports * add test for QA, DIC bugfix * add test for trust radius update * test bugfix * more bugfixes * minor bugfix * bug fix * add extra test * fix test bug * add tests * bug fixes * test fix and add test * remove extra code * pr suggestion 1 * pr suggestion 2 * pr suggestion 2 * pr suggestion 3 * bug fix * save one DIC backtransform * unfinished update * unfinished update 2 * refactor code * update changelog --- autode/opt/coordinates/base.py | 84 ++++++++-- autode/opt/coordinates/cartesian.py | 8 + autode/opt/coordinates/dic.py | 4 +- autode/opt/coordinates/primitives.py | 115 ++++++++++++-- autode/opt/optimisers/crfo.py | 223 ++++++++++++++++++++++----- autode/opt/optimisers/qa.py | 122 +++++++++++++++ autode/opt/optimisers/rfo.py | 2 +- doc/changelog.rst | 1 + tests/test_opt/test_coordiantes.py | 30 +++- tests/test_opt/test_crfo.py | 63 +++++++- tests/test_opt/test_opt.py | 33 ++++ tests/test_opt/test_qa.py | 100 ++++++++++++ 12 files changed, 714 insertions(+), 71 deletions(-) create mode 100644 autode/opt/optimisers/qa.py create mode 100644 tests/test_opt/test_qa.py diff --git a/autode/opt/coordinates/base.py b/autode/opt/coordinates/base.py index 6772b6819..d6cb73ea6 100644 --- a/autode/opt/coordinates/base.py +++ b/autode/opt/coordinates/base.py @@ -228,13 +228,14 @@ def update_h_from_old_h( assert isinstance(old_coords, OptCoordinates), "Wrong type!" assert old_coords._h is not None assert old_coords._g is not None + idxs = self.active_mol_indexes for update_type in hessian_update_types: updater = update_type( h=old_coords._h, s=np.array(self) - np.array(old_coords), y=self._g - old_coords._g, - subspace_idxs=old_coords.indexes, + subspace_idxs=idxs, ) if not updater.conditions_met: @@ -251,21 +252,29 @@ def update_h_from_old_h( ) @property - def rfo_shift(self): + def rfo_shift(self) -> float: """ - Get the RFO diagonal shift factor λ that can be applied to the - Hessian (H - λI) to obtain the RFO step + Get the RFO diagonal shift factor λ for the molecular Hessian that + can be applied (H - λI) to obtain the RFO downhill step. The shift + is only calculated in active subspace Returns: (float): The shift parameter """ - h_n, _ = self._h.shape - # form the augmented Hessian + assert self._h is not None + # ignore constraint modes + n, _ = self._h.shape + idxs = self.active_mol_indexes + hess = self._h[:, idxs][idxs, :] + grad = self._g[idxs] + + h_n, _ = hess.shape + # form the augmented Hessian in active subspace aug_h = np.zeros(shape=(h_n + 1, h_n + 1)) - aug_h[:h_n, :h_n] = self._h - aug_h[-1, :h_n] = self._g - aug_h[:h_n, -1] = self._g + aug_h[:h_n, :h_n] = hess + aug_h[-1, :h_n] = grad + aug_h[:h_n, -1] = grad # first non-zero eigenvalue aug_h_lmda = np.linalg.eigvalsh(aug_h) @@ -273,6 +282,48 @@ def rfo_shift(self): assert abs(rfo_lmda) > 1.0e-10 return rfo_lmda + @property + def min_eigval(self) -> float: + """ + Obtain the minimum eigenvalue of the molecular Hessian in + the active space + + Returns: + (float): The minimum eigenvalue + """ + assert self._h is not None + n, _ = self._h.shape + idxs = self.active_mol_indexes + hess = self._h[:, idxs][idxs, :] + + eigvals = np.linalg.eigvalsh(hess) + assert abs(eigvals[0]) > 1.0e-10 + return eigvals[0] + + def pred_quad_delta_e(self, new_coords: np.ndarray) -> float: + """ + Calculate the estimated change in energy at the new coordinates + based on the quadratic model (i.e. second order Taylor expansion) + + Args: + new_coords(np.ndarray): The new coordinates + + Returns: + (float): The predicted change in energy + """ + assert self._g is not None and self._h is not None + + step = np.array(new_coords) - np.array(self) + + idxs = self.active_mol_indexes + step = step[idxs] + grad = self._g[idxs] + hess = self._h[:, idxs][idxs, :] + + pred_delta = np.dot(grad, step) + pred_delta += 0.5 * np.linalg.multi_dot((step, hess, step)) + return pred_delta + def make_hessian_positive_definite(self) -> None: """ Make the Hessian matrix positive definite by shifting eigenvalues @@ -292,6 +343,21 @@ def to(self, *args, **kwargs) -> "OptCoordinates": def iadd(self, value: np.ndarray) -> "OptCoordinates": """Inplace addition of some coordinates""" + @property + @abstractmethod + def active_indexes(self) -> List[int]: + """A list of indexes which are active in this coordinate set""" + + @property + def active_mol_indexes(self) -> List[int]: + """Active indexes that are actually atomic coordinates in the molecule""" + return [i for i in self.active_indexes if i < len(self)] + + @property + @abstractmethod + def inactive_indexes(self) -> List[int]: + """A list of indexes which are non-active in this coordinate set""" + def __eq__(self, other): """Coordinates can never be identical...""" return False diff --git a/autode/opt/coordinates/cartesian.py b/autode/opt/coordinates/cartesian.py index 876dd95d1..08cc19297 100644 --- a/autode/opt/coordinates/cartesian.py +++ b/autode/opt/coordinates/cartesian.py @@ -61,6 +61,14 @@ def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: assert self.h_or_h_inv_has_correct_shape(arr) self._h = None if arr is None else np.array(arr) + @property + def active_indexes(self) -> List[int]: + return list(range(len(self))) + + @property + def inactive_indexes(self) -> List[int]: + return [] + def iadd(self, value: np.ndarray) -> OptCoordinates: return np.ndarray.__iadd__(self, value) diff --git a/autode/opt/coordinates/dic.py b/autode/opt/coordinates/dic.py index 54ec4015b..7cf3abd7b 100644 --- a/autode/opt/coordinates/dic.py +++ b/autode/opt/coordinates/dic.py @@ -34,7 +34,7 @@ from autode.hessians import Hessian -_max_back_transform_iterations = 20 +MAX_BACK_TRANSFORM_ITERS = 20 class DIC(InternalCoordinates): # lgtm [py/missing-equals] @@ -220,7 +220,7 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": success = False rms_s = np.inf - for i in range(1, _max_back_transform_iterations + 1): + for i in range(1, MAX_BACK_TRANSFORM_ITERS + 1): try: x_k = x_k + np.matmul(self.B_T_inv, (s_new - s_k)) diff --git a/autode/opt/coordinates/primitives.py b/autode/opt/coordinates/primitives.py index 6a74b86ae..530e3e7ee 100644 --- a/autode/opt/coordinates/primitives.py +++ b/autode/opt/coordinates/primitives.py @@ -1,5 +1,5 @@ import numpy as np - +import itertools from abc import ABC, abstractmethod from enum import Enum from typing import Tuple, TYPE_CHECKING, List, Optional @@ -31,7 +31,7 @@ def _get_3d_vecs_from_atom_idxs( deriv_order: Order of derivatives for initialising variables Returns: - (list[VectorHyperDual]): A list of differentiable variables + (list[DifferentiableVector3D]): A list of differentiable variables """ assert all(isinstance(idx, int) and idx >= 0 for idx in args) # get positions in the flat Cartesian array @@ -65,7 +65,7 @@ def __init__(self, *atom_indexes: int): @abstractmethod def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ): + ) -> VectorHyperDual: """ The function that performs the main evaluation of the PIC, and optionally returns derivative or second derivatives. @@ -234,7 +234,7 @@ class PrimitiveInverseDistance(_DistanceFunction): def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ) -> "VectorHyperDual": + ) -> VectorHyperDual: """1 / |x_i - x_j|""" vec_i, vec_j = _get_3d_vecs_from_atom_idxs( self.i, self.j, x=x, deriv_order=deriv_order @@ -256,7 +256,7 @@ class PrimitiveDistance(_DistanceFunction): def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ) -> "VectorHyperDual": + ) -> VectorHyperDual: """|x_i - x_j|""" vec_i, vec_j = _get_3d_vecs_from_atom_idxs( self.i, self.j, x=x, deriv_order=deriv_order @@ -318,14 +318,16 @@ def __eq__(self, other) -> bool: def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ): + ) -> VectorHyperDual: """m - o - n angle""" vec_m, vec_o, vec_n = _get_3d_vecs_from_atom_idxs( self.m, self.o, self.n, x=x, deriv_order=deriv_order ) u = vec_m - vec_o v = vec_n - vec_o - return DifferentiableMath.acos(u.dot(v) / (u.norm() * v.norm())) + res = DifferentiableMath.acos(u.dot(v) / (u.norm() * v.norm())) + assert isinstance(res, VectorHyperDual) + return res def __repr__(self): return f"Angle({self.m}-{self.o}-{self.n})" @@ -385,7 +387,7 @@ def __eq__(self, other) -> bool: def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ) -> "VectorHyperDual": + ) -> VectorHyperDual: """Dihedral m-o-p-n""" # https://en.wikipedia.org/wiki/Dihedral_angle#In_polymer_physics _x = x.ravel() @@ -447,7 +449,7 @@ def _calc_linear_bend( o_vec: DifferentiableVector3D, n_vec: DifferentiableVector3D, r_vec: DifferentiableVector3D, - ): + ) -> VectorHyperDual: """ Evaluate the linear bend from the vector positions of the atoms involved in the angle m, o, n, and the reference @@ -473,11 +475,13 @@ def _calc_linear_bend( # eq. (46) and (47) p 1074 if self.axis == LinearBendType.BEND: - return u.dot(o_n) / o_n.norm() + res = u.dot(o_n) / o_n.norm() elif self.axis == LinearBendType.COMPLEMENT: - return u.dot(o_n.cross(o_m)) / (o_n.norm() * o_m.norm()) + res = u.dot(o_n.cross(o_m)) / (o_n.norm() * o_m.norm()) else: raise ValueError("Unknown axis for linear bend") + assert isinstance(res, VectorHyperDual) + return res class PrimitiveLinearAngle(LinearAngleBase): @@ -485,7 +489,7 @@ class PrimitiveLinearAngle(LinearAngleBase): def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder - ): + ) -> VectorHyperDual: """Linear Bend angle m-o-n against reference atom r""" _x = x.ravel() @@ -536,6 +540,7 @@ def _get_dummy_atom( def _evaluate( self, x: "CartesianCoordinates", deriv_order: DerivativeOrder ): + """Linear bend m-o-n against a dummy atom""" if self._vec_r is None: self._vec_r = self._get_dummy_atom(x) @@ -549,3 +554,89 @@ def _evaluate( def __repr__(self): axis_str = "B" if self.axis == LinearBendType.BEND else "C" return f"LinearBend{axis_str}({self.m}-{self.o}-{self.n}, D)" + + +class CompositeBonds(Primitive): + """Linear Combination of several bond distances""" + + def __init__(self, bonds: List[Tuple[int, int]], coeffs: List[float]): + """ + Linear combination of a list of bonds and the corresponding + coefficients given as a list of real numbers + + Args: + bonds: A list of tuples (i, j) representing bonds + coeffs: A list of floating point coefficients in order + """ + super().__init__() + assert len(bonds) == len(coeffs), "Number of bonds != coefficients" + assert all(isinstance(bond, tuple) for bond in bonds) + assert all(len(bond) == 2 for bond in bonds) + assert all( + isinstance(bond[0], int) and isinstance(bond[1], int) + for bond in bonds + ) + assert len(set(bonds)) == len(bonds) + + self._bonds = list(bonds) + self._coeffs = [float(c) for c in coeffs] + + def _evaluate( + self, x: "CartesianCoordinates", deriv_order: DerivativeOrder + ) -> VectorHyperDual: + """Linear combination of bonds""" + all_idxs = list(itertools.chain(*self._bonds)) + unique_idxs = list(set(all_idxs)) + _x = x.ravel() + atom_vecs = _get_3d_vecs_from_atom_idxs( + *unique_idxs, x=_x, deriv_order=deriv_order + ) + + bonds_combined = None + for idx, (i, j) in enumerate(self._bonds): + atom_i = atom_vecs[unique_idxs.index(i)] + atom_j = atom_vecs[unique_idxs.index(j)] + if bonds_combined is None: + bonds_combined = self._coeffs[0] * (atom_i - atom_j).norm() + else: + bonds_combined += self._coeffs[idx] * (atom_i - atom_j).norm() + + assert isinstance(bonds_combined, VectorHyperDual) + return bonds_combined + + def __eq__(self, other): + """Equality of two linear combination of bonds""" + return ( + isinstance(other, self.__class__) + and set(zip(self._bonds)) == set(zip(other._bonds)) + and np.allclose(self._coeffs, other._coeffs) + ) # fmt: skip + + def __repr__(self): + return f"CombinationOfBonds(n={len(self._bonds)})" + + +class ConstrainedCompositeBonds(ConstrainedPrimitive, CompositeBonds): + """Constrained linear combindation of bonds""" + + def __init__( + self, bonds: List[Tuple[int, int]], coeffs: List[float], value: float + ): + """ + Linear combination of a list of bonds and the corresponding + coefficients given as a list of real numbers + + Args: + bonds: A list of tuples (i, j) representing bonds + coeffs: A list of floating point coefficients in order + value: The target value for this coordinate + """ + CompositeBonds.__init__(self, bonds=bonds, coeffs=coeffs) + self._r0 = value + + @property + def _value(self) -> float: + return self._r0 + + def __repr__(self): + return f"ConstrainedCombinationOfBonds(n={len(self._bonds)})" diff --git a/autode/opt/optimisers/crfo.py b/autode/opt/optimisers/crfo.py index 202a255c2..de9df679d 100644 --- a/autode/opt/optimisers/crfo.py +++ b/autode/opt/optimisers/crfo.py @@ -6,44 +6,91 @@ [2] J. Baker, J. Comput. Chem., 13, 240 Ž1992 """ import numpy as np -from typing import Union +from typing import Union, Optional, List, TYPE_CHECKING from autode.log import logger from autode.values import GradientRMS, Distance from autode.opt.coordinates import CartesianCoordinates, DICWithConstraints from autode.opt.coordinates.internals import AnyPIC from autode.opt.optimisers.rfo import RFOptimiser +from autode.exceptions import OptimiserStepError from autode.opt.optimisers.hessian_update import ( BFGSDampedUpdate, BFGSSR1Update, ) +if TYPE_CHECKING: + from autode.opt.coordinates.primitives import Primitive + +# max and min bounds for the trust radius +MAX_TRUST = 0.2 +MIN_TRUST = 0.01 + class CRFOptimiser(RFOptimiser): + """Constrained optimisation in delocalised internal coordinates""" + def __init__( - self, init_alpha: Union[Distance, float] = 0.05, *args, **kwargs + self, + init_trust: float = 0.1, + *args, + extra_prims: Optional[List["Primitive"]] = None, + trust_update: bool = True, + max_move: Union[Distance, float] = Distance(0.12, "ang"), + **kwargs, ): """ Constrained rational function optimisation ----------------------------------------------------------------------- Arguments: - init_alpha: Maximum step size, assumed Angstrom if units - not given + init_alpha: Initial value of the trust radius + + Keyword Args: + extra_prims: A list of aditional coordinates (or constraints) to + add to the DIC optimisation space (optional) + max_move: The maximum distance an atom can move in Cartesian + coordinates in a step (assumed units of Å if not given) + trust_update: Whether to update the trust radius See Also: - :py:meth:`RFOOptimiser ` + :py:meth:`RFOptimiser ` """ super().__init__(*args, **kwargs) - self.alpha = Distance(init_alpha, units="ang") - assert self.alpha > 0 + if not (MIN_TRUST < init_trust < MAX_TRUST): + init_trust = min(max(init_trust, MIN_TRUST), MAX_TRUST) + logger.warning(f"Setting trust radius to {init_trust:.3f}") + + self.alpha = float(init_trust) + self._trust_update = bool(trust_update) + self._maxmove = Distance(max_move, units="ang") + assert self._maxmove > 0 + self._extra_prims = [] if extra_prims is None else list(extra_prims) + self._hessian_update_types = [BFGSDampedUpdate, BFGSSR1Update] + def _log_constrained_opt_progress(self): + """Log information about the constraints""" + n, m = len(self._coords), self._coords.n_constraints + s = self._coords.n_satisfied_constraints + logger.info(f"Optimising {n} coordinates and {m} lagrange multipliers") + + idxs = self._coords.active_indexes + logger.info( + f"Satisfied {s} constraints. Active space" + f" is {len(idxs)} dimensional" + ) + d2l_ev = np.linalg.eigvalsh(self._coords.h[:, idxs][idxs, :]) + logger.info( + f"Hessian in active space has {sum(k < 0 for k in d2l_ev)} " + f"negative eigenvalue(s). Should have {m-s}" + ) + return None + def _step(self) -> None: """Partitioned rational function step""" assert self._coords is not None, "Must have coords to take a step" - assert self._coords.g is not None, "Must have a gradient" if self.iteration != 0: self._coords.update_h_from_old_h( @@ -51,53 +98,143 @@ def _step(self) -> None: ) assert self._coords.h is not None - n, m = len(self._coords), self._coords.n_constraints - logger.info(f"Optimising {n} coordinates and {m} lagrange multipliers") + self._update_trust_radius() + self._log_constrained_opt_progress() + # get RFO step + delta_s = self._get_rfo_step() + + # scale back to trust radius only on non-constraint modes + n = len(self._coords) + delta_s_q = delta_s[:n] + if np.linalg.norm(delta_s_q) > self.alpha: + logger.info("Scaling RFO step to trust radius") + delta_s = delta_s * self.alpha / np.linalg.norm(delta_s_q) + + logger.info("Taking an RFO step") + self._take_step_within_max_move(delta_s) + return None + + def _get_rfo_step(self): + """ + Calculate the unscaled RFO step, for the correct set of + coordinates + + Returns: + (np.ndarray): The RFO step + """ + n, m = len(self._coords), self._coords.n_constraints idxs = self._coords.active_indexes - n_satisfied_constraints = (n + m - len(idxs)) // 2 - logger.info( - f"Satisfied {n_satisfied_constraints} constraints. " - f"Active space is {len(idxs)} dimensional" - ) - d2L_eigvals = np.linalg.eigvalsh(self._coords.h) - logger.info( - f"∇^2L has {sum(lmda < 0 for lmda in d2L_eigvals)} negative " - f"eigenvalue(s). Should have {m}" - ) + # only molec. Hessian should be +ve definite + lmda = self._coords.rfo_shift + hess = self._coords.h - lmda * np.eye(n + m) + # no shift on constraints + for i in range(m): + hess[-m + i, -m + i] = 0.0 - # force molecular Hessian block to be positive definite - hessian = self._coords.h.copy() - shift = self._coords.rfo_shift - hessian -= shift * np.eye(n + m) - for i in range(m): # no shift on constraints - hessian[-m + i, -m + i] = 0.0 + logger.info(f"Calculated RFO λ = {lmda:.4f}") + # RFO step in active space + hess = hess[:, idxs][idxs, :] + grad = self._coords.g[idxs] + self._check_shifted_hessian_has_correct_struct(hess) + full_step = np.zeros(shape=(n + m)) + rfo_step = -np.matmul(np.linalg.inv(hess), grad) + full_step[idxs] = rfo_step - logger.info(f"Calculated RFO λ = {shift:.4f}") + return full_step - d2L_eigvals = np.linalg.eigvalsh(hessian) - n_negative = sum(lmda < 0 for lmda in d2L_eigvals) - if not n_negative == m: - raise RuntimeError( - f"Constrained optimisation failed, ∇^2L has {n_negative} " - f" negative eigenvalues after RFO diagonal shift - " - f"should have {m}" + def _check_shifted_hessian_has_correct_struct(self, arr) -> None: + """ + Check that the shifted Hessian from RFO or QA has correct + eigenvalue structure + + Args: + arr (np.ndarray): Shifted hessian to check + + Raises: + (OptimiserStepError): if Hessian does not have correct structure + """ + assert self._coords is not None + m = self._coords.n_constraints + o = m - self._coords.n_satisfied_constraints + ev = np.linalg.eigvalsh(arr) + n_negative = sum(k < 0 for k in ev) + if not o == n_negative: + raise OptimiserStepError( + f"Failed to obtain step, shifted Hessian should have {o}" + f" negative eigenvalue(s), but has {n_negative}" ) + return None + + def _take_step_within_max_move(self, delta_s: np.ndarray): + """ + Take the step by converting internal coordinates to Cartesian + coordinates, and scaling back if the maximum movement of an + atom exceeds max_move + + Arguments: + delta_s (np.ndarray): The step in internal coordinates + """ + assert self._coords is not None - # Set all non-active components of gradient to zero - gradient = self._coords.g.copy() - gradient[self._coords.inactive_indexes] = 0.0 + self._coords.allow_unconverged_back_transform = True + new_coords = self._coords + delta_s + cart_delta = new_coords.to("cart") - self._coords.to("cart") + cart_displ = np.linalg.norm(cart_delta.reshape((-1, 3)), axis=1) + max_displ = np.abs(cart_displ).max() - # take a quasi-Newton step - delta_s = -np.matmul(np.linalg.inv(hessian), gradient) + self._coords.allow_unconverged_back_transform = False + if max_displ > self._maxmove: + logger.info( + f"Calculated step too large: max. displacement = " + f"{max_displ:.3f} Å, scaling down" + ) + # Note because the transformation is not linear this will not + # generate a step exactly max(∆x) ≡ α, but is empirically close + factor = self._maxmove / max_displ + self._coords = self._coords + (factor * delta_s) - # Set all the non-active components of the step to zero - delta_s[self._coords.inactive_indexes] = 0.0 + else: + self._coords = new_coords - self._take_step_within_trust_radius(delta_s) return None + def _update_trust_radius(self): + """Updates the trust radius before a geometry step""" + assert self._coords is not None, "Must have coordinates!" + + if self.iteration == 0: + return None + + if self._trust_update is False: + return None + + coords_l = self._history.penultimate + pred_delta_e = coords_l.pred_quad_delta_e(self._coords) + trust_ratio = self.last_energy_change / float(pred_delta_e) + last_step_size = np.linalg.norm( + np.array(coords_l) - np.array(self._coords) + ) + + if trust_ratio < 0.25: + self.alpha = max(0.7 * self.alpha, MIN_TRUST) + elif 0.25 < trust_ratio < 0.75: + pass + elif 0.75 < trust_ratio < 1.25: + # increase if step was actually near trust radius + if abs(last_step_size - self.alpha) / self.alpha < 0.05: + self.alpha = min(1.3 * self.alpha, MAX_TRUST) + elif 1.25 < trust_ratio < 1.75: + pass + elif trust_ratio > 1.75: + self.alpha = max(0.7 * self.alpha, MIN_TRUST) + + logger.info( + f"Ratio of actual/predicted dE = {trust_ratio:.3f}," + f" Current trust radius = {self.alpha:.3f}" + ) + @property def _g_norm(self) -> GradientRMS: """Calculate the norm of the gradient in the active subspace""" @@ -130,6 +267,8 @@ def _build_internal_coordinates(self): cartesian_coords = CartesianCoordinates(self._species.coordinates) primitives = AnyPIC.from_species(self._species) + for ic in self._extra_prims: + primitives.add(ic) self._coords = DICWithConstraints.from_cartesian( x=cartesian_coords, primitives=primitives diff --git a/autode/opt/optimisers/qa.py b/autode/opt/optimisers/qa.py new file mode 100644 index 000000000..c1994b922 --- /dev/null +++ b/autode/opt/optimisers/qa.py @@ -0,0 +1,122 @@ +""" +Constrained optimisation with quadratic trust radius model + +Also known as Quadratic Approximation (QA) or Trust-Radius Model (TRM) + +References: +[1] P. Culot et al. Theor. Chim. Acta, 82, 1992, 189-205 +[2] T. Helgaker, Chem. Phys. Lett., 182(5), 1991, 503-510 +[3] J. T. Golab et al. Chem. Phys., 78, 1983, 175-199 +[4] R. Fletcher, Practical Methods of Optimization, Wiley, Chichester, 1981 +""" +import numpy as np +from scipy.optimize import root_scalar + +from autode.log import logger +from autode.opt.optimisers.crfo import CRFOptimiser +from autode.exceptions import OptimiserStepError + + +class QAOptimiser(CRFOptimiser): + """Quadratic trust-radius optimiser in delocalised internal coordinates""" + + def _step(self) -> None: + """Trust radius step""" + assert self._coords is not None, "Must have coords to take a step" + + if self.iteration != 0: + self._coords.update_h_from_old_h( + self._history.penultimate, self._hessian_update_types + ) + assert self._coords.h is not None + + self._update_trust_radius() + self._log_constrained_opt_progress() + + n = len(self._coords) + + # Take RFO step if within trust radius + delta_s_rfo = self._get_rfo_step() + if np.linalg.norm(delta_s_rfo[:n]) <= self.alpha: + logger.info("Taking an RFO step") + self._take_step_within_max_move(delta_s_rfo) + return None + + # otherwise use QA step within trust + try: + delta_s_qa = self._get_qa_step() + logger.info("Taking a QA step within trust radius") + self._take_step_within_max_move(delta_s_qa) + return None + + # if QA fails, used scaled RFO step + except OptimiserStepError as exc: + logger.info(f"QA step failed: {str(exc)}, using scaled RFO step") + factor = self.alpha / np.linalg.norm(delta_s_rfo[:n]) + self._take_step_within_max_move(delta_s_rfo * factor) + return None + + def _get_qa_step(self): + """ + Calculate the QA step within trust radius for the current + set of coordinates + + Returns: + (np.ndarray): The trust radius step + """ + n, m = len(self._coords), self._coords.n_constraints + idxs = self._coords.active_indexes + + def shifted_newton_step(hess, grad, lmda, check=False): + """ + Level-shifted Newton step (H-λI)^-1 . g + optional check of Hessian eigenvalue structure + """ + hess = hess - lmda * np.eye(hess.shape[0]) + # no shift on constraints + for i in range(m): + hess[-m + i, -m + i] = 0.0 + full_step = np.zeros_like(grad) + hess = hess[:, idxs][idxs, :] + grad = grad[idxs] + if check: + self._check_shifted_hessian_has_correct_struct(hess) + qa_step = -np.matmul(np.linalg.inv(hess), grad) + full_step[idxs] = qa_step + return full_step + + def qa_step_error(lmda): + """Error in step size""" + ds = shifted_newton_step(self._coords.h, self._coords.g, lmda) + ds_atoms = ds[:n] + return np.linalg.norm(ds_atoms) - self.alpha + + # if molar Hessian +ve definite & step within trust use simple qN + min_b = self._coords.min_eigval + if min_b > 0 and qa_step_error(0.0) <= 0.0: + return shifted_newton_step( + self._coords.h, self._coords.g, 0.0, True + ) + + # Find λ in range (-inf, b) + for k in range(500): + right_bound = min_b - 0.5**k + if qa_step_error(right_bound) > 0: + break + assert qa_step_error(right_bound) > 0 + + for k in range(-6, 10): + left_bound = right_bound - 2**k + if qa_step_error(left_bound) < 0: + break + if not qa_step_error(left_bound) < 0: + raise OptimiserStepError("Unable to find bounds for root search") + + res = root_scalar(f=qa_step_error, bracket=[left_bound, right_bound]) + if (not res.converged) or (res.root >= min_b): + raise OptimiserStepError("QA root search failed") + + logger.info(f"Calculated QA λ = {res.root:.4f}") + return shifted_newton_step( + self._coords.h, self._coords.g, res.root, True + ) diff --git a/autode/opt/optimisers/rfo.py b/autode/opt/optimisers/rfo.py index dbb053309..25bae009b 100644 --- a/autode/opt/optimisers/rfo.py +++ b/autode/opt/optimisers/rfo.py @@ -35,7 +35,7 @@ def __init__( """ super().__init__(*args, **kwargs) - self.alpha = Distance(init_alpha, units="ang") + self.alpha = float(Distance(init_alpha, units="ang")) assert self.alpha > 0 self._hessian_update_types = [BFGSPDUpdate, NullUpdate] diff --git a/doc/changelog.rst b/doc/changelog.rst index 438d9fa7b..e91f244b7 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -9,6 +9,7 @@ Functionality improvements ************************** - Improved constrained optimisation (:code:`CRFOptimiser`) and handling of multiple constraints - Adds compatability with numpy v2.0 +- Improved implementation of the RFO-TRM (:code:`QAOptimiser`) optimiser that can handle constraints Bug Fixes ********* diff --git a/tests/test_opt/test_coordiantes.py b/tests/test_opt/test_coordiantes.py index 8e3a5559c..f9b71aba1 100644 --- a/tests/test_opt/test_coordiantes.py +++ b/tests/test_opt/test_coordiantes.py @@ -34,6 +34,8 @@ PrimitiveLinearAngle, PrimitiveDummyLinearAngle, LinearBendType, + CompositeBonds, + ConstrainedCompositeBonds, ) @@ -260,6 +262,13 @@ def test_cart_to_dic(): x -= 0.1 +def test_cartesian_all_indexes_active(): + arr = np.arange(6) + x = CartesianCoordinates(arr) + assert x.active_indexes == list(range(6)) + assert x.inactive_indexes == list() + + def test_simple_dic_to_cart(): arr = np.array([[0.0, 0.0, 0.0], [2.0, 0.0, 0.0]]) @@ -662,6 +671,16 @@ def test_dihedral_equality(): ) +def test_composite_bonds_equality(): + a = CompositeBonds(bonds=[(1, 2), (2, 3)], coeffs=[0.5, 1.2]) + b = CompositeBonds(bonds=[(1, 2), (2, 3)], coeffs=[0.5, 1.2]) + c = CompositeBonds(bonds=[(0, 5), (2, 4)], coeffs=[0.5, 1.2]) + d = CompositeBonds(bonds=[(1, 2), (2, 3)], coeffs=[0.1, 1.2]) + assert a == b + assert a != c # different bonds + assert a != d # different coefficient + + def test_linear_angle(): acetylene = Molecule( atoms=[ @@ -678,8 +697,8 @@ def test_linear_angle(): assert angle._vec_r is not None old_r_vec = angle._vec_r # the dummy atom should not change after the first call - _ = angle(x) - _ = angle(x) + _ = angle(x + 0.05) + _ = angle(x - 0.07) assert angle._vec_r is old_r_vec axis_vec = np.array(np.array(angle._vec_r._data) - x.reshape(-1, 3)[1]) @@ -708,6 +727,9 @@ def test_primitives_consistent_with_mol_values(): assert np.isclose(ang(coords), h2o2.angle(0, 2, 1), rtol=1e-8) dihedral = PrimitiveDihedralAngle(2, 0, 1, 3) assert np.isclose(dihedral(coords), h2o2.dihedral(2, 0, 1, 3), rtol=1e-8) + ic = CompositeBonds([(0, 1), (0, 2)], [0.3, 0.7]) + mol_val = 0.3 * h2o2.distance(0, 1) + 0.7 * h2o2.distance(0, 2) + assert np.isclose(mol_val, ic(coords)) # fmt: off @@ -737,6 +759,7 @@ def test_primitives_consistent_with_mol_values(): ] ), feco5_mol(), # for testing linear angles + h2o2_mol(), ] test_mols = [ @@ -750,6 +773,7 @@ def test_primitives_consistent_with_mol_values(): PrimitiveDihedralAngle(2, 0, 1, 3), PrimitiveDummyLinearAngle(0, 1, 3, LinearBendType.BEND), PrimitiveLinearAngle(2, 3, 4, 8, LinearBendType.BEND), + CompositeBonds([(0, 1), (0, 2)], [1, 1]), ] # fmt: on @@ -808,6 +832,8 @@ def test_repr(): PrimitiveLinearAngle(0, 1, 2, 3, LinearBendType.COMPLEMENT), PrimitiveDummyLinearAngle(0, 1, 2, LinearBendType.BEND), PrimitiveImproperDihedral(0, 1, 2, 3), + CompositeBonds(bonds=[(1, 2), (2, 3)], coeffs=[1, 1]), + ConstrainedCompositeBonds([(1, 2), (2, 3)], [1, 1], 0.2), ] for p in prims: diff --git a/tests/test_opt/test_crfo.py b/tests/test_opt/test_crfo.py index 9cb066d20..a544a6025 100644 --- a/tests/test_opt/test_crfo.py +++ b/tests/test_opt/test_crfo.py @@ -9,7 +9,10 @@ from autode.opt.coordinates.internals import PIC from autode.opt.optimisers.crfo import CRFOptimiser from autode.opt.coordinates import CartesianCoordinates, DICWithConstraints -from autode.opt.coordinates.primitives import PrimitiveDihedralAngle +from autode.opt.coordinates.primitives import ( + PrimitiveDihedralAngle, + ConstrainedCompositeBonds, +) from autode.utils import work_in_tmp_dir from .molecules import h2o2_mol, acetylene_mol, feco5_mol, cumulene_mol from ..testutils import requires_working_xtb_install @@ -232,7 +235,7 @@ def test_crfo_with_dihedral(): constrained_distance = mol.distance(0, 1) + 0.1 mol.constraints.distance = {(0, 1): constrained_distance} - CRFOptimiser.optimise(species=mol, method=XTB(), maxiter=10) + CRFOptimiser.optimise(species=mol, method=XTB(), maxiter=15) assert np.isclose(mol.distance(0, 1), constrained_distance, atol=1e-4) @@ -372,8 +375,62 @@ def test_optimise_linear_bend_with_ref(): def test_optimise_chain_dihedrals(): mol = cumulene_mol() assert abs(mol.dihedral(6, 3, 4, 8)) < val.Angle(40, "deg") - opt = CRFOptimiser(maxiter=15, gtol=1e-4, etol=1e-4) + opt = CRFOptimiser(maxiter=20, gtol=1e-4, etol=1e-4) opt.run(mol, XTB()) # 5-C chain, should be close to 90 degrees assert abs(mol.dihedral(6, 3, 4, 8)) > val.Angle(85, "deg") assert abs(mol.dihedral(6, 3, 4, 8)) < val.Angle(95, "deg") + + +@requires_working_xtb_install +@work_in_tmp_dir() +def test_composite_bond_constraint(): + atoms = [ + Atom("C", -2.6862, 1.0780, -0.1640), + Atom("C", -2.1836, -0.0798, -0.5820), + Atom("C", -0.5315, 2.2123, -0.0294), + Atom("H", -1.1416, -0.3055, -0.5232), + Atom("C", -1.8773, 2.2239, 0.0534), + Atom("H", 0.0331, 1.3028, -0.0181), + Atom("H", -0.4693, 2.6248, -1.9811), + Atom("C", -0.2061, 1.6165, -2.2424), + Atom("H", -2.8152, -0.9212, -0.7994), + Atom("H", -2.3965, 3.1639, 0.1692), + Atom("H", 0.8400, 1.4387, -2.4301), + Atom("C", -1.1022, 0.6635, -2.5738), + Atom("H", -3.7553, 1.2122, -0.0856), + Atom("H", 0.0433, 3.1121, 0.1002), + Atom("H", -2.1548, 0.8243, -2.5510), + Atom("C", -0.6762, -0.6020, -3.1972), + Atom("O", 0.4285, -0.9110, -3.5228), + Atom("H", -1.5372, -1.3068, -3.3795), + ] + # asymmetric Diels-Alder (butadiene + acrolein) + mol = Molecule(atoms=atoms) + constr = ConstrainedCompositeBonds( + bonds=[(1, 11), (2, 7)], coeffs=[1, 1], value=4.6 + ) + # current sum of distances ~ 4.7 A, difference ~ 0.07 + assert np.isclose(mol.distance(1, 11), 2.385, rtol=1e-4) + assert np.isclose(mol.distance(2, 7), 2.315, rtol=1e-4) + opt = CRFOptimiser(maxiter=10, gtol=1e-3, etol=1e-4, extra_prims=[constr]) + opt.run(mol, method=XTB()) + # sum of distances should be ~4.6 A + assert np.isclose(mol.distance(1, 11) + mol.distance(2, 7), 4.6, rtol=1e-4) + # difference should be much higher, as TS is asymmetric + assert mol.distance(1, 11) - mol.distance(2, 7) > 0.1 + + +def test_trust_radius_limits(): + import autode.opt.optimisers.crfo + + max_lim = autode.opt.optimisers.crfo.MAX_TRUST + opt = CRFOptimiser( + maxiter=10, gtol=1e-3, etol=1e-4, init_trust=max_lim + 0.1 + ) + assert np.isclose(opt.alpha, max_lim) + min_lim = autode.opt.optimisers.crfo.MIN_TRUST + opt = CRFOptimiser( + maxiter=10, gtol=1e-3, etol=1e-4, init_trust=min_lim - 0.001 + ) + assert np.isclose(opt.alpha, min_lim) diff --git a/tests/test_opt/test_opt.py b/tests/test_opt/test_opt.py index af216defd..5f53833b6 100644 --- a/tests/test_opt/test_opt.py +++ b/tests/test_opt/test_opt.py @@ -341,6 +341,39 @@ def test_multiple_optimiser_saves_overrides_not_append(): assert old_n_coords == n_coords +@work_in_tmp_dir() +def test_optimiser_plotting_sanity_checks(caplog): + mol = Molecule(smiles="N#N") + opt = CartesianSDOptimiser(maxiter=10, gtol=1e-3, etol=1e-3) + coords1 = CartesianCoordinates(mol.coordinates) + coords1.e = PotentialEnergy(0.1, "Ha") + coords1.update_g_from_cart_g( + np.array([0.01, 0.02, 0.05, 0.06, 0.03, 0.07]) + ) + opt._coords = coords1 + opt._species = mol + assert opt.iteration == 0 + assert not opt.converged + # plotting does not work if less than 2 points + with caplog.at_level("WARNING"): + opt.plot_optimisation(filename="test-plot.pdf") + assert not os.path.isfile("test-plot.pdf") + assert "Less than 2 points, cannot draw optimisation" in caplog.text + + opt._coords = coords1.copy() + opt._coords.e = PotentialEnergy(0.0, "Ha") + assert not opt.converged + # either rms_g or energy plot has to be requested + with caplog.at_level("ERROR"): + opt.plot_optimisation("test-plot.pdf", False, False) + assert not os.path.isfile("test-plot.pdf") + assert "Must plot either energies or RMS gradients" in caplog.text + with caplog.at_level("WARNING"): + opt.plot_optimisation("test-plot.pdf", plot_energy=True) + assert os.path.isfile("test-plot.pdf") + assert "Optimisation is not converged, drawing a plot" in caplog.text + + @work_in_tmp_dir() def test_optimiser_print_geometries(caplog): mol = Molecule(smiles="C=C", name="mymolecule") diff --git a/tests/test_opt/test_qa.py b/tests/test_opt/test_qa.py new file mode 100644 index 000000000..3831b8bb5 --- /dev/null +++ b/tests/test_opt/test_qa.py @@ -0,0 +1,100 @@ +import os +import numpy as np +import pytest +from autode import Molecule, Atom, Config +from autode.methods import XTB +from autode.opt.optimisers.qa import QAOptimiser +from autode.opt.coordinates import DICWithConstraints +from autode.utils import work_in_tmp_dir +from ..testutils import work_in_zipped_dir, requires_working_xtb_install + + +here = os.path.dirname(os.path.abspath(__file__)) +datazip = os.path.join(here, "data", "opt.zip") + + +@work_in_zipped_dir(datazip) +def test_trm_step(): + mol = Molecule("opt-test.xyz") + opt = QAOptimiser(maxiter=10, gtol=0.001, etol=0.001, init_trust=0.1) + opt._species = mol + opt._build_internal_coordinates() + assert isinstance(opt._coords, DICWithConstraints) + + grad = np.loadtxt("opt-test_grad.txt") + hess = np.loadtxt("opt-test_hess.txt") + opt._coords.update_g_from_cart_g(grad) + opt._coords.update_h_from_cart_h(hess) + + opt._step() + step = np.array(opt._history.final) - np.array(opt._history.penultimate) + step_size = np.linalg.norm(step) + # TODO: fix the DIC transform bug + # assert np.isclose(step_size, 0.1) + + +@work_in_tmp_dir() +@requires_working_xtb_install +def test_trust_update(): + init_trust = 0.05 + water_atoms = [ + Atom("O", -0.0011, 0.3631, -0.0000), + Atom("H", -0.8250, -0.1819, -0.0000), + Atom("H", 0.8261, -0.1812, 0.0000), + ] + water = Molecule(atoms=water_atoms) + opt = QAOptimiser(maxiter=10, gtol=1e-3, etol=1e-4, init_trust=init_trust) + + opt._species = water.copy() + opt._method = XTB() + opt._n_cores = Config.n_cores + opt._initialise_run() + # store last grad + last_g = opt._coords.g.copy() + last_h = opt._coords.h.copy() + + opt._step() + opt._update_gradient_and_energy() + last_step = np.array(opt._coords) - np.array(opt._history[-2]) + pred_delta_e = float(np.dot(last_g, last_step)) + pred_delta_e += 0.5 * np.linalg.multi_dot((last_step, last_h, last_step)) + # pred_dE should be around -0.002544605 Ha (depends on xTB version) + + def simulate_energy_change_ratio_update_trust(ratio): + opt.alpha = init_trust + opt._history.final.e = ( + opt._history.penultimate.e + ratio * pred_delta_e + ) + opt._update_trust_radius() + + # should not update if trust update turned off + opt._trust_update = False + simulate_energy_change_ratio_update_trust(0.2) + assert np.isclose(opt.alpha, init_trust) + + opt._trust_update = True + simulate_energy_change_ratio_update_trust(0.2) + assert np.isclose(opt.alpha, 0.7 * init_trust) + + simulate_energy_change_ratio_update_trust(0.5) + assert np.isclose(opt.alpha, init_trust) + + simulate_energy_change_ratio_update_trust(1.0) + assert (np.linalg.norm(last_step) - init_trust) / init_trust < 0.05 + assert np.isclose(opt.alpha, 1.3 * init_trust) + + simulate_energy_change_ratio_update_trust(1.3) + assert np.isclose(opt.alpha, init_trust) + + simulate_energy_change_ratio_update_trust(1.8) + assert np.isclose(opt.alpha, 0.7 * init_trust) + + +@work_in_tmp_dir() +@requires_working_xtb_install +def test_molecular_opt_qa(): + mol = Molecule(smiles="CCO") + constr_distance = mol.distance(1, 3) + 0.1 + mol.constraints.distance = {(1, 3): constr_distance} + QAOptimiser.optimise(mol, method=XTB(), maxiter=10) + assert np.isclose(mol.distance(1, 3), constr_distance, 1e-6) From 8be1e8a66b106dc30f8fb31703da473e81c7c952 Mon Sep 17 00:00:00 2001 From: Shoubhik Maiti <17470159+shoubhikraj@users.noreply.github.com> Date: Sat, 20 Jul 2024 19:38:06 +0100 Subject: [PATCH 5/6] Improve DIC to Cartesian transformation (#349) * use close_to for IBT * hybrid SIBT IBT algorithm * remove unnecessary B matrix calculation * refactor G matrix * update tests * revert AnyPIC extend override and test fix * pr suggestions --- autode/opt/coordinates/dic.py | 50 ++++++++++++++++++++++------- autode/opt/coordinates/internals.py | 33 ++++--------------- doc/changelog.rst | 3 +- tests/test_opt/test_coordiantes.py | 20 ++++++------ tests/test_opt/test_crfo.py | 2 +- tests/test_opt/test_qa.py | 3 +- 6 files changed, 59 insertions(+), 52 deletions(-) diff --git a/autode/opt/coordinates/dic.py b/autode/opt/coordinates/dic.py index 7cf3abd7b..44d441829 100644 --- a/autode/opt/coordinates/dic.py +++ b/autode/opt/coordinates/dic.py @@ -34,7 +34,7 @@ from autode.hessians import Hessian -MAX_BACK_TRANSFORM_ITERS = 20 +MAX_BACK_TRANSFORM_ITERS = 50 class DIC(InternalCoordinates): # lgtm [py/missing-equals] @@ -70,8 +70,10 @@ def _calc_U(primitives: PIC, x: "CartesianCoordinates") -> np.ndarray: Returns: (np.ndarray): U """ - - lambd, u = np.linalg.eigh(primitives.G) + # calculate spectroscopic G matrix + B = primitives.get_B(x) + G = np.dot(B, B.T) + lambd, u = np.linalg.eigh(G) # Form a transform matrix from the primitive internals by removing the # redundant subspace comprised of small eigenvalues. This forms a set @@ -124,8 +126,9 @@ def from_cartesian( dic.U = U # Transform matrix primitives -> non-redundant - dic.B = np.matmul(U.T, primitives.B) + dic.B = np.matmul(U.T, primitives.get_B(x)) dic.B_T_inv = np.linalg.pinv(dic.B) + dic._q = q.copy() dic._x = x.copy() dic.primitives = primitives @@ -215,23 +218,46 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": # Initialise s_k, x_k = np.array(self, copy=True), self.to("cartesian").copy() - q_init = self.primitives(x_k) + q_init = self._q x_1 = self.to("cartesian") + np.matmul(self.B_T_inv, value) success = False rms_s = np.inf + # NOTE: J. Comput. Chem., 2013, 34, 1842 suggests if step size + # is larger than 0.5 bohr (= 0.2 Å), internal step can be halved + # for easier convergence (i.e. damp = 1/2) + if np.linalg.norm(value) > 0.2: + damp = 0.5 + else: + damp = 1.0 + + # hybrid SIBT/IBT algorithm for i in range(1, MAX_BACK_TRANSFORM_ITERS + 1): try: - x_k = x_k + np.matmul(self.B_T_inv, (s_new - s_k)) + x_k = x_k + np.matmul(self.B_T_inv, damp * (s_new - s_k)) - # Rebuild the primitives & DIC from the back-transformed Cartesians + # Rebuild the DIC from back-transformed Cartesians q_k = self.primitives.close_to(x_k, q_init) s_k = np.matmul(self.U.T, q_k) - self.B = np.matmul(self.U.T, self.primitives.B) - self.B_T_inv = np.linalg.pinv(self.B) + # Rebuild the B matrix every 10 steps + if i % 10 == 0: + self.B = np.matmul(self.U.T, self.primitives.get_B(x_k)) + self.B_T_inv = np.linalg.pinv(self.B) + + rms_s_old = rms_s rms_s = np.sqrt(np.mean(np.square(s_k - s_new))) + # almost converged, turn off damping + if rms_s < 1e-6: + damp = 1.0 + # RMS going down, reduce damping + elif rms_s < rms_s_old and i > 1: + damp = min(1.2 * damp, 1.0) + # RMS going up, increase damping + elif rms_s > rms_s_old: + damp = max(0.7 * damp, 0.1) + # for ill-conditioned primitives, there might be math error except ArithmeticError: break @@ -256,11 +282,13 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": "DIC->Cart iterative back-transform did not converge" ) - s_k = np.matmul(self.U.T, self.primitives(x_k)) - self.B = np.matmul(self.U.T, self.primitives.B) + q_k = self.primitives.close_to(x_k, q_init) + s_k = np.matmul(self.U.T, q_k) + self.B = np.matmul(self.U.T, self.primitives.get_B(x_k)) self.B_T_inv = np.linalg.pinv(self.B) self[:] = s_k + self._q = q_k self._x = x_k return self diff --git a/autode/opt/coordinates/internals.py b/autode/opt/coordinates/internals.py index 421ddf7fb..d4b608bff 100644 --- a/autode/opt/coordinates/internals.py +++ b/autode/opt/coordinates/internals.py @@ -48,9 +48,10 @@ def __new__(cls, input_array) -> "InternalCoordinates": arr = super().__new__(cls, input_array, units="Å") arr._x = None + arr._q = None arr.primitives = None - for attr in ("_x", "primitives"): + for attr in ("_x", "primitives", "_q"): setattr(arr, attr, getattr(input_array, attr, None)) return arr @@ -59,7 +60,7 @@ def __array_finalize__(self, obj: "OptCoordinates") -> None: """See https://numpy.org/doc/stable/user/basics.subclassing.html""" OptCoordinates.__array_finalize__(self, obj) - for attr in ("_x", "primitives"): + for attr in ("_x", "primitives", "_q"): setattr(self, attr, getattr(obj, attr, None)) return @@ -91,8 +92,6 @@ def __init__(self, *args: Any): """ super().__init__(args) - self._B: Optional[np.ndarray] = None - if not self._are_all_primitive_coordinates(args): raise ValueError( "Cannot construct primitive internal coordinates " @@ -107,28 +106,11 @@ def add(self, item: Primitive) -> None: super().append(item) def append(self, item: Primitive) -> None: - """Append an item to this set of primitives""" + """Appending directly is not allowed, use add() instead""" raise NotImplementedError( "Please use PIC.add() to add new primitives to the set" ) - @property - def B(self) -> np.ndarray: - """Wilson B matrix""" - - if self._B is None: - raise AttributeError( - f"{self} had no B matrix. Please calculate " - f"the value of the primitives to determine B" - ) - - return self._B - - @property - def G(self) -> np.ndarray: - """Spectroscopic G matrix as the symmetrised Wilson B matrix""" - return np.dot(self.B, self.B.T) - @classmethod def from_cartesian( cls, @@ -146,7 +128,6 @@ def __call__(self, x: np.ndarray) -> np.ndarray: """Populate Primitive-s used in the construction of set""" q = self._calc_q(x) - self._calc_B(x) return q @@ -160,7 +141,6 @@ def close_to(self, x: np.ndarray, other: np.ndarray) -> np.ndarray: assert len(self) == len(other) and isinstance(other, np.ndarray) q = self._calc_q(x) - self._calc_B(x) for i, primitive in enumerate(self): if isinstance(primitive, PrimitiveDihedralAngle): @@ -194,7 +174,7 @@ def _calc_q(self, x: np.ndarray) -> np.ndarray: def _populate_all(self, x: np.ndarray) -> None: """Populate primitives from an array of cartesian coordinates""" - def _calc_B(self, x: np.ndarray) -> None: + def get_B(self, x: np.ndarray) -> np.ndarray: """Calculate the Wilson B matrix""" if len(self) == 0: @@ -210,8 +190,7 @@ def _calc_B(self, x: np.ndarray) -> None: for i, primitive in enumerate(self): B[i] = primitive.derivative(x=cart_coords) - self._B = B - return None + return B @staticmethod def _are_all_primitive_coordinates(args: tuple) -> bool: diff --git a/doc/changelog.rst b/doc/changelog.rst index e91f244b7..b66d774e0 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -10,10 +10,11 @@ Functionality improvements - Improved constrained optimisation (:code:`CRFOptimiser`) and handling of multiple constraints - Adds compatability with numpy v2.0 - Improved implementation of the RFO-TRM (:code:`QAOptimiser`) optimiser that can handle constraints +- Added static internal back-transform and damping for faster and easier DIC to Cartesian coordinate transformation Bug Fixes ********* -- ... +- DIC to Cartesian transform will now always use :code:`PIC.close_to()` to ensure steps along dihedral have the smallest change, even after back-transform is complete 1.4.3 diff --git a/tests/test_opt/test_coordiantes.py b/tests/test_opt/test_coordiantes.py index f9b71aba1..a761ea9ae 100644 --- a/tests/test_opt/test_coordiantes.py +++ b/tests/test_opt/test_coordiantes.py @@ -898,8 +898,8 @@ def test_pic_generation_linear_angle_ref(): assert PrimitiveImproperDihedral(3, 5, 2, 1) in pic assert sum(isinstance(ic, PrimitiveDihedralAngle) for ic in pic) == 1 # check degrees of freedom = 3N - 6 - _ = pic(m.coordinates.flatten()) - assert np.linalg.matrix_rank(pic.B) == 3 * m.n_atoms - 6 + x = m.coordinates.flatten() + assert np.linalg.matrix_rank(pic.get_B(x)) == 3 * m.n_atoms - 6 def test_pic_generation_linear_angle_dummy(): @@ -915,8 +915,8 @@ def test_pic_generation_linear_angle_dummy(): assert any(isinstance(ic, PrimitiveDummyLinearAngle) for ic in pic) # degrees of freedom = 3N - 5 for linear molecules - _ = pic(mol.coordinates.flatten()) - assert np.linalg.matrix_rank(pic.B) == 3 * mol.n_atoms - 5 + x = mol.coordinates.flatten() + assert np.linalg.matrix_rank(pic.get_B(x)) == 3 * mol.n_atoms - 5 @work_in_tmp_dir() @@ -958,8 +958,8 @@ def test_pic_generation_disjoint_graph(): assert PrimitiveDistance(2, 3) not in pic assert PrimitiveBondAngle(1, 2, 3) not in pic # check degrees of freedom = 3N - 6 - _ = pic(mol.coordinates.flatten()) - assert np.linalg.matrix_rank(pic.B) == 3 * mol.n_atoms - 6 + x = mol.coordinates.flatten() + assert np.linalg.matrix_rank(pic.get_B(x)) == 3 * mol.n_atoms - 6 # if the bond between 2, 3 is made into a constraint, it will generate angles mol.constraints.distance = {(2, 3): mol.distance(2, 3)} @@ -979,8 +979,8 @@ def test_pic_generation_chain_dihedrals(): assert PrimitiveDihedralAngle(7, 4, 3, 6) in pic # check that the 3N-6 degrees of freedom are maintained - _ = pic(cumulene.coordinates.flatten()) - assert np.linalg.matrix_rank(pic.B) == 3 * cumulene.n_atoms - 6 + x = cumulene.coordinates.flatten() + assert np.linalg.matrix_rank(pic.get_B(x)) == 3 * cumulene.n_atoms - 6 def test_pic_generation_square_planar(): @@ -998,5 +998,5 @@ def test_pic_generation_square_planar(): # for sq planar, out-of-plane dihedrals are needed to have # all degrees of freedom pic = AnyPIC.from_species(ptcl4) - _ = pic(ptcl4.coordinates.flatten()) - assert np.linalg.matrix_rank(pic.B) == 3 * ptcl4.n_atoms - 6 + x = ptcl4.coordinates.flatten() + assert np.linalg.matrix_rank(pic.get_B(x)) == 3 * ptcl4.n_atoms - 6 diff --git a/tests/test_opt/test_crfo.py b/tests/test_opt/test_crfo.py index a544a6025..2d32f7f39 100644 --- a/tests/test_opt/test_crfo.py +++ b/tests/test_opt/test_crfo.py @@ -235,7 +235,7 @@ def test_crfo_with_dihedral(): constrained_distance = mol.distance(0, 1) + 0.1 mol.constraints.distance = {(0, 1): constrained_distance} - CRFOptimiser.optimise(species=mol, method=XTB(), maxiter=15) + CRFOptimiser.optimise(species=mol, method=XTB(), maxiter=10) assert np.isclose(mol.distance(0, 1), constrained_distance, atol=1e-4) diff --git a/tests/test_opt/test_qa.py b/tests/test_opt/test_qa.py index 3831b8bb5..2afe12ebe 100644 --- a/tests/test_opt/test_qa.py +++ b/tests/test_opt/test_qa.py @@ -29,8 +29,7 @@ def test_trm_step(): opt._step() step = np.array(opt._history.final) - np.array(opt._history.penultimate) step_size = np.linalg.norm(step) - # TODO: fix the DIC transform bug - # assert np.isclose(step_size, 0.1) + assert np.isclose(step_size, 0.1) @work_in_tmp_dir() From d4ba0a4077ae6121f863f9a80ce8d1d154c66bfa Mon Sep 17 00:00:00 2001 From: Shoubhik Maiti <17470159+shoubhikraj@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:47:04 +0100 Subject: [PATCH 6/6] More comprehensive optimiser convergence checks (#351) * optimiser criteria * minor edits * simplify convergence criteria * unfinished update * convergence criteria set * minor update * unfinished update * new update * unfinished updates * replace tol in DHS * improve sign usage * unfinished bugfix * refactor class * update dhs class * minor update * fix some tests * minor update * minor update * allow None values in convergence criteria * refactor convergence params * fix some tests * update some tests * fixed crfo tests * fixed prfo tests * more test fixes * black fix * fix nwchem issues * fix xtb issues * updated parameters * add tests, remove redundant code * fix bug * bug fix 2 * pr suggestion 1 * pr suggestion 2 * pr suggestion 3 * pr suggestion 3 * pr suggestion 4 * update changelog --- autode/bracket/dhs.py | 45 ++- autode/calculations/executors.py | 8 +- autode/opt/coordinates/base.py | 17 + autode/opt/coordinates/cartesian.py | 13 +- autode/opt/coordinates/dic.py | 18 + autode/opt/optimisers/__init__.py | 5 +- autode/opt/optimisers/base.py | 446 +++++++++++++++------- autode/opt/optimisers/crfo.py | 10 - autode/opt/optimisers/prfo.py | 1 + autode/opt/optimisers/steepest_descent.py | 4 +- doc/changelog.rst | 3 + tests/test_bracket/test_dhs.py | 32 +- tests/test_opt/test_coordiantes.py | 19 + tests/test_opt/test_crfo.py | 33 +- tests/test_opt/test_opt.py | 183 +++++---- tests/test_opt/test_prfo.py | 2 +- tests/test_opt/test_qa.py | 4 +- tests/test_opt/test_rfo.py | 6 +- tests/test_wrappers/data/nwchem.zip | Bin 246481 -> 217249 bytes 19 files changed, 531 insertions(+), 318 deletions(-) diff --git a/autode/bracket/dhs.py b/autode/bracket/dhs.py index 0a9c39b5e..bb3df016e 100644 --- a/autode/bracket/dhs.py +++ b/autode/bracket/dhs.py @@ -15,13 +15,14 @@ from autode.opt.optimisers.utils import TruncatedTaylor from autode.opt.optimisers.hessian_update import BFGSSR1Update from autode.bracket.base import BaseBracketMethod -from autode.opt.optimisers import RFOptimiser +from autode.opt.optimisers import RFOptimiser, ConvergenceParams from autode.exceptions import OptimiserStepError from autode.log import logger if TYPE_CHECKING: from autode.species.species import Species from autode.wrappers.methods import Method + from autode.opt.optimisers.base import ConvergenceTolStr class DistanceConstrainedOptimiser(RFOptimiser): @@ -60,10 +61,10 @@ def __init__( pivot_point: Coordinates of the pivot point line_search: Whether to use linear search angle_thresh: An angle threshold above which linear search - will be rejected (in Degrees) + will be rejected (in Degrees) old_coords_read_hess: Old coordinate with hessian which will - be used to obtain initial hessian by - a Hessian update scheme + be used to obtain the initial hessian by a + Hessian update scheme """ kwargs.pop("init_alpha", None) super().__init__(*args, init_alpha=init_trust, **kwargs) @@ -103,15 +104,22 @@ def _initialise_run(self) -> None: @property def converged(self) -> bool: """Has the optimisation converged""" - # The tangential gradient should be close to zero - return ( - self.rms_tangent_grad < self.gtol and self._abs_delta_e < self.etol - ) + assert self._coords is not None + + # Check only the tangential component of gradient + g_tau = self.tangent_grad + rms_g_tau = np.sqrt(np.mean(np.square(g_tau))) + max_g_tau = np.max(np.abs(g_tau)) + + curr_params = self._history.conv_params() + curr_params.rms_g = GradientRMS(rms_g_tau, "Ha/ang") + curr_params.max_g = GradientRMS(max_g_tau, "Ha/ang") + return self.conv_tol.meets_criteria(curr_params) @property - def rms_tangent_grad(self) -> GradientRMS: + def tangent_grad(self) -> np.ndarray: """ - Obtain the RMS of the gradient tangent to the distance + Obtain the component of atomic gradients tangent to the distance vector between current coords and pivot point """ assert self._coords is not None and self._coords.g is not None @@ -120,8 +128,7 @@ def rms_tangent_grad(self) -> GradientRMS: # unit vector in the direction of distance vector d_hat = self.dist_vec / np.linalg.norm(self.dist_vec) tangent_grad = grad - (grad.dot(d_hat)) * d_hat - rms_grad = np.sqrt(np.mean(np.square(tangent_grad))) - return GradientRMS(rms_grad) + return tangent_grad @property def dist_vec(self) -> np.ndarray: @@ -491,6 +498,7 @@ def __init__( large_step: Union[Distance, float] = Distance(0.2, "ang"), small_step: Union[Distance, float] = Distance(0.05, "ang"), switch_thresh: Union[Distance, float] = Distance(1.5, "ang"), + conv_tol: Union["ConvergenceParams", "ConvergenceTolStr"] = "loose", **kwargs, ): """ @@ -513,6 +521,9 @@ def __init__( switch_thresh: When distance between the two images is less than this cutoff, smaller DHS extrapolation steps are taken + conv_tol: Convergence tolerance for the distance-constrained + optimiser + Keyword Args: maxiter: Maximum number of en/grad evaluations @@ -521,9 +532,6 @@ def __init__( stop, values less than 0.5 Angstrom are not recommended. - gtol: Gradient tolerance for the optimiser micro-iterations - in DHS (Hartree/angstrom) - cineb_at_conv: Whether to run CI-NEB calculation from the end points after the DHS is converged """ @@ -542,6 +550,7 @@ def __init__( self._small_step = Distance(abs(small_step), "ang") self._sw_thresh = Distance(abs(switch_thresh), "ang") assert self._small_step < self._large_step + self._conv_tol = conv_tol self._step_size: Optional[Distance] = None if self._large_step > self.imgpair.dist: @@ -597,8 +606,7 @@ def _step(self) -> None: opt = DistanceConstrainedOptimiser( maxiter=curr_maxiter, - gtol=self._gtol, - etol=1.0e-3, # seems like a reasonable etol + conv_tol=self._conv_tol, init_trust=opt_trust, pivot_point=pivot, old_coords_read_hess=old_coords, @@ -612,9 +620,10 @@ def _step(self) -> None: if not opt.converged: return None + rms_g_tau = np.sqrt(np.mean(np.square(opt.tangent_grad))) logger.info( "Successful optimization after DHS step, final RMS of " - f"tangential gradient = {opt.rms_tangent_grad:.6f} " + f"tangential gradient = {rms_g_tau:.6f} " f"Ha/angstrom" ) diff --git a/autode/calculations/executors.py b/autode/calculations/executors.py index 2e7ebe95e..68ac1b328 100644 --- a/autode/calculations/executors.py +++ b/autode/calculations/executors.py @@ -346,10 +346,7 @@ class CalculationExecutorO(_IndirectCalculationExecutor): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.etol = PotentialEnergy(3e-5, units="Ha") - self.gtol = GradientRMS( - 1e-3, units="Ha Å^-1" - ) # TODO: A better number here + self.conv_tol = "normal" self._fix_unique() def run(self) -> None: @@ -367,8 +364,7 @@ def run(self) -> None: self.optimiser: "NDOptimiser" = type_( init_alpha=self._step_size, maxiter=self._max_opt_cycles, - etol=self.etol, - gtol=self.gtol, + conv_tol=self.conv_tol, ) method = self.method.copy() method.keywords.grad = kws.GradientKeywords(self.input.keywords) diff --git a/autode/opt/coordinates/base.py b/autode/opt/coordinates/base.py index d6cb73ea6..8b2608652 100644 --- a/autode/opt/coordinates/base.py +++ b/autode/opt/coordinates/base.py @@ -343,6 +343,16 @@ def to(self, *args, **kwargs) -> "OptCoordinates": def iadd(self, value: np.ndarray) -> "OptCoordinates": """Inplace addition of some coordinates""" + @property + @abstractmethod + def n_constraints(self) -> int: + """Number of constraints in these coordinates""" + + @property + @abstractmethod + def n_satisfied_constraints(self) -> int: + """Number of constraints that are satisfied in these coordinates""" + @property @abstractmethod def active_indexes(self) -> List[int]: @@ -358,6 +368,13 @@ def active_mol_indexes(self) -> List[int]: def inactive_indexes(self) -> List[int]: """A list of indexes which are non-active in this coordinate set""" + @property + @abstractmethod + def cart_proj_g(self) -> Optional[np.ndarray]: + """ + The Cartesian gradient with any constraints projected out + """ + def __eq__(self, other): """Coordinates can never be identical...""" return False diff --git a/autode/opt/coordinates/cartesian.py b/autode/opt/coordinates/cartesian.py index 08cc19297..7b9c00f7b 100644 --- a/autode/opt/coordinates/cartesian.py +++ b/autode/opt/coordinates/cartesian.py @@ -9,7 +9,6 @@ if TYPE_CHECKING: from autode.values import Gradient from autode.hessians import Hessian - from autode.opt.coordinates.primitives import ConstrainedPrimitive class CartesianCoordinates(OptCoordinates): @@ -61,6 +60,14 @@ def _update_h_from_cart_h(self, arr: Optional["Hessian"]) -> None: assert self.h_or_h_inv_has_correct_shape(arr) self._h = None if arr is None else np.array(arr) + @property + def n_constraints(self) -> int: + return 0 + + @property + def n_satisfied_constraints(self) -> int: + return 0 + @property def active_indexes(self) -> List[int]: return list(range(len(self))) @@ -106,6 +113,10 @@ def to(self, value: str) -> OptCoordinates: f"Cannot convert Cartesian coordinates to {value}" ) + @property + def cart_proj_g(self) -> Optional[np.ndarray]: + return self.g + @property def expected_number_of_dof(self) -> int: """Expected number of degrees of freedom for the system""" diff --git a/autode/opt/coordinates/dic.py b/autode/opt/coordinates/dic.py index 44d441829..e0a39d9db 100644 --- a/autode/opt/coordinates/dic.py +++ b/autode/opt/coordinates/dic.py @@ -139,6 +139,10 @@ def from_cartesian( logger.info(f"Transformed in ...{time() - start_time:.4f} s") return dic + @property + def cart_proj_g(self) -> Optional[np.ndarray]: + return self.to("cart").g + def _update_g_from_cart_g(self, arr: Optional["Gradient"]) -> None: """ Updates the gradient from a calculated Cartesian gradient @@ -422,6 +426,20 @@ def iadd(self, value: np.ndarray) -> "OptCoordinates": return super().iadd(delta_s) + @property + def cart_proj_g(self) -> Optional[np.ndarray]: + """Obtain Cartesian gradient with constraints projected out""" + if self.g is None: + return None + # constrained gradient with inactive terms set to zero + g_s = self.g + g_s[self.inactive_indexes] = 0.0 + g_s = g_s[: len(self)] + # back to Cartesian + g_x = np.matmul(self.B.T, g_s) + assert len(g_x) == len(self.to("cart")) + return g_x + @property def g(self): """ diff --git a/autode/opt/optimisers/__init__.py b/autode/opt/optimisers/__init__.py index 3b355dc79..23d5f2569 100644 --- a/autode/opt/optimisers/__init__.py +++ b/autode/opt/optimisers/__init__.py @@ -1,7 +1,8 @@ -from autode.opt.optimisers.base import NDOptimiser +from autode.opt.optimisers.base import NDOptimiser, ConvergenceParams from autode.opt.optimisers.rfo import RFOptimiser from autode.opt.optimisers.prfo import PRFOptimiser from autode.opt.optimisers.crfo import CRFOptimiser +from autode.opt.optimisers.qa import QAOptimiser from autode.opt.optimisers.steepest_descent import ( CartesianSDOptimiser, DIC_SD_Optimiser, @@ -9,9 +10,11 @@ __all__ = [ "NDOptimiser", + "ConvergenceParams", "RFOptimiser", "PRFOptimiser", "CRFOptimiser", + "QAOptimiser", "CartesianSDOptimiser", "DIC_SD_Optimiser", ] diff --git a/autode/opt/optimisers/base.py b/autode/opt/optimisers/base.py index 0e3468c64..d01a306e4 100644 --- a/autode/opt/optimisers/base.py +++ b/autode/opt/optimisers/base.py @@ -1,25 +1,17 @@ import os import pickle - +from dataclasses import dataclass, fields import numpy as np from abc import ABC, abstractmethod from zipfile import ZipFile, is_zipfile from collections import deque -from typing import ( - Type, - List, - Union, - Optional, - Callable, - Any, - TYPE_CHECKING, - Iterator, -) +from typing import Type, List, Union, Optional, Callable, Any +from typing import TYPE_CHECKING, Iterator, Literal from autode.log import logger from autode.config import Config -from autode.values import GradientRMS, PotentialEnergy, method_string +from autode.values import GradientRMS, PotentialEnergy, method_string, Distance from autode.opt.coordinates.base import OptCoordinates from autode.opt.optimisers.hessian_update import NullUpdate from autode.exceptions import CalculationException @@ -170,7 +162,6 @@ def run( f"with {self._n_cores} cores using {self._maxiter} max " f"iterations" ) - logger.info("Iteration\t|∆E| / \\kcal mol-1 \t||∇E|| / Ha Å-1") while not self.converged: self._callback(self._coords) @@ -466,14 +457,220 @@ def final_coordinates(self): raise RuntimeError("A NullOptimiser has no coordinates") +ConvergenceTolStr = Literal["loose", "normal", "tight", "verytight"] + + +@dataclass +class ConvergenceParams: + """ + Various convergence parameters for optimisers and some common + preset convergence tolerances + + Args: + abs_d_e: Absolute change in energy, |E_i - E_i-1| + rms_g: RMS of the gradient, RMS(∇E) + max_g: Maximum component of gradient, max(∇E) + rms_s: RMS of the last step, RMS(x_i - x_i-1) + max_s: Maximum component of last step, max(x_i - x_i-1) + strict: Whether all criteria must be converged strictly. + If False, convergence is signalled when some criteria + are overachieved and others are close to convergence + + """ + + abs_d_e: Optional[PotentialEnergy] = None + rms_g: Optional[GradientRMS] = None + max_g: Optional[GradientRMS] = None + rms_s: Optional[Distance] = None + max_s: Optional[Distance] = None + strict: bool = False + + @property + def _num_attrs(self) -> List[str]: + """Numerical attributes of this dataclass, in order""" + return ["abs_d_e", "rms_g", "max_g", "rms_s", "max_s"] + + def __post_init__(self): + """Type checking and sanity checks on parameters""" + + # convert units for easier comparison + self._to_base_units() + self.strict = bool(self.strict) + # RMS(g) is the most basic criteria that is always needed + if self.rms_g is None: + raise ValueError( + "At least the RMS gradient criteria has to be defined!" + ) + + for attr in self._num_attrs: + if getattr(self, attr) is None: + continue + if not getattr(self, attr) > 0: + raise ValueError( + f"Value of {attr} should be positive" + f" but set to {getattr(self, attr)}!" + ) + + def _to_base_units(self) -> None: + """ + Convert all set criteria to the default units in terms of + Hartree and Angstrom, and also ensure everything has units + """ + if self.abs_d_e is not None: + self.abs_d_e = PotentialEnergy(self.abs_d_e).to("Ha") + if self.rms_g is not None: + self.rms_g = GradientRMS(self.rms_g).to("Ha/ang") + if self.max_g is not None: + self.max_g = GradientRMS(self.max_g).to("Ha/ang") + if self.rms_s is not None: + self.rms_s = Distance(self.rms_s).to("ang") + if self.max_s is not None: + self.max_s = Distance(self.max_s).to("ang") + return None + + @classmethod + def from_preset(cls, preset_name: str) -> "ConvergenceParams": + """ + Obtains preset values of convergence criteria - given as + "loose", "normal", "tight" and "verytight". + + Args: + preset_name: Must be one of the strings "loose", "normal" + "tight" or "verytight" + + Returns: + (ConvergenceCriteria): Optimiser convergence criteria, with + preset values + """ + # NOTE: Taken from ORCA + preset_dicts = { + "loose": { + "abs_d_e": PotentialEnergy(3e-5, "Ha"), + "rms_g": GradientRMS(5e-4, "Ha/bohr").to("Ha/ang"), + "max_g": GradientRMS(2e-3, "Ha/bohr").to("Ha/ang"), + "rms_s": Distance(7e-3, "bohr").to("ang"), + "max_s": Distance(1e-2, "bohr").to("ang"), + }, + "normal": { + "abs_d_e": PotentialEnergy(5e-6, "Ha"), + "rms_g": GradientRMS(1e-4, "Ha/bohr").to("Ha/ang"), + "max_g": GradientRMS(3e-4, "Ha/bohr").to("Ha/ang"), + "rms_s": Distance(2e-3, "bohr").to("ang"), + "max_s": Distance(4e-3, "bohr").to("ang"), + }, + "tight": { + "abs_d_e": PotentialEnergy(1e-6, "Ha"), + "rms_g": GradientRMS(3e-5, "Ha/bohr").to("Ha/ang"), + "max_g": GradientRMS(1e-4, "Ha/bohr").to("Ha/ang"), + "rms_s": Distance(6e-4, "bohr").to("ang"), + "max_s": Distance(1e-3, "bohr").to("ang"), + }, + "verytight": { + "abs_d_e": PotentialEnergy(2e-7, "Ha"), + "rms_g": GradientRMS(8e-6, "Ha/bohr").to("Ha/ang"), + "max_g": GradientRMS(3e-5, "Ha/bohr").to("Ha/ang"), + "rms_s": Distance(1e-4, "bohr").to("ang"), + "max_s": Distance(2e-4, "bohr").to("ang"), + }, + } + + allowed_strs = list(preset_dicts.keys()) + preset_name = preset_name.strip().lower() + if preset_name not in allowed_strs: + raise ValueError( + f"Unknown preset convergence: {preset_name}, please select" + f" from {allowed_strs}" + ) + + return cls(**preset_dicts[preset_name]) + + def __mul__(self, factors: List[float]): + """Multiply a set of criteria with ordered list of numerical factors""" + assert len(factors) == len(self._num_attrs) + kwargs = {} + for idx, attr in enumerate(self._num_attrs): + c = getattr(self, attr) + if c is not None: + kwargs[attr] = getattr(self, attr) * factors[idx] + else: + kwargs[attr] = None + return ConvergenceParams(**kwargs, strict=self.strict) + + def are_satisfied(self, other: "ConvergenceParams") -> List[bool]: + """ + Return an elementwise comparison between the current criteria + and another set of parameters (comparing only numerical attributes) + + Args: + other: Another set of parameters + + Returns: + (list[bool]): List containing True or False + """ + are_satisfied = [] + + # unset criteria are always satisfied + for attr in self._num_attrs: + c = getattr(self, attr) + v = getattr(other, attr) + if c is None: + are_satisfied.append(True) + else: + are_satisfied.append(float(v) <= float(c)) + return are_satisfied + + def meets_criteria(self, other: "ConvergenceParams") -> bool: + """ + Does a set of parameters satisfy the current convergence criteria? + Will signal convergence if gradient or energy change are overachieved + or all other criteria except energy is satisfied + + Args: + other (ConvergenceParams): Another set of parameters to be + checked against the current set + + Returns: + (bool): + """ + # everything satisfied - simplest case + if all(self.are_satisfied(other)): + return True + + # strict = everything must be converged + elif self.strict: + return False + + if all((self * [0.5, 0.5, 0.8, 3, 3]).are_satisfied(other)): + logger.warning( + "Overachieved gradient and energy convergence, reasonable " + "convergence on step size." + ) + return True + + if all((self * [1.5, 0.1, 0.2, 2, 2]).are_satisfied(other)): + logger.warning( + "Gradient is one order of magnitude below convergence, " + "other parameter(s) are almost converged." + ) + return True + + if all((self * [3, 0.7, 0.7, 1, 1]).are_satisfied(other)): + logger.warning( + "Everything except energy has been converged. Reasonable" + " convergence on energy" + ) + return True + + return False + + class NDOptimiser(Optimiser, ABC): """Abstract base class for an optimiser in N-dimensions""" def __init__( self, maxiter: int, - gtol: GradientRMS, - etol: PotentialEnergy, + conv_tol: Union[ConvergenceParams, ConvergenceTolStr], coords: Optional[OptCoordinates] = None, **kwargs, ): @@ -486,70 +683,56 @@ def __init__( Arguments: maxiter (int): Maximum number of iterations to perform - gtol (autode.values.GradientRMS): Tolerance on RMS(|∇E|) - - etol (autode.values.PotentialEnergy): Tolerance on |E_i+1 - E_i| + conv_tol (ConvergenceParams|ConvergenceTolStr): Convergence tolerances, + indicating thresholds for absolute energy change (|E_i+1 - E_i|), + RMS and max. gradients (∇E) and RMS and max. step size (Δx) + Either supplied as a dictionary or a ConvergenceParams object See Also: :py:meth:`Optimiser ` + :py:meth:`ConvergenceParams ` """ super().__init__(maxiter=maxiter, coords=coords, **kwargs) - self.etol = etol - self.gtol = gtol - + if isinstance(conv_tol, str): + conv_tol = ConvergenceParams.from_preset(conv_tol) + self.conv_tol = conv_tol self._hessian_update_types: List[Type[HessianUpdater]] = [NullUpdate] @property - def gtol(self) -> GradientRMS: + def conv_tol(self) -> "ConvergenceParams": """ - Gradient tolerance on |∇E| i.e. the root mean square of each component + All convergence parameters for this optimiser. If numerical + values are unset, they appear as infinity. - ----------------------------------------------------------------------- Returns: - (autode.values.GradientRMS): + (ConvergenceParams): """ - return self._gtol + return self._conv_tol - @gtol.setter - def gtol(self, value: Union[int, float, GradientRMS]): - """Set the gradient tolerance""" - - if float(value) <= 0: - raise ValueError( - "Tolerance on the gradient (||∇E||) must be " - f"positive. Had: gtol={value}" - ) - - self._gtol = GradientRMS(value) - - @property - def etol(self) -> PotentialEnergy: + @conv_tol.setter + def conv_tol(self, value: Union["ConvergenceParams", ConvergenceTolStr]): """ - Energy tolerance between two consecutive steps of the optimisation + Set the convergence parameters for this optimiser. - ----------------------------------------------------------------------- - Returns: - (autode.values.PotentialEnergy): Energy tolerance + Args: + value (ConvergenceParams|str): """ - return self._etol - - @etol.setter - def etol(self, value: Union[int, float, PotentialEnergy]): - """Set the energy tolerance""" - if float(value) <= 0: + if isinstance(value, str): + self._conv_tol = ConvergenceParams.from_preset(value) + elif isinstance(value, ConvergenceParams): + self._conv_tol = value + else: raise ValueError( - "Tolerance on the energy change is absolute so " - f"must be positive. Had etol = {value}" + "Convergence tolerance should be of type ConvergenceParams" + f" or a preset string, but assigned {type(value)}" ) - self._etol = PotentialEnergy(value) - @property def optimiser_params(self): """Optimiser params to save""" - return {"maxiter": self._maxiter, "gtol": self.gtol, "etol": self.etol} + return {"maxiter": self._maxiter, "conv_tol": self.conv_tol} @classmethod def optimise( @@ -559,8 +742,7 @@ def optimise( n_cores: Optional[int] = None, coords: Optional[OptCoordinates] = None, maxiter: int = 100, - gtol: Any = GradientRMS(1e-3, units="Ha Å-1"), - etol: Any = PotentialEnergy(1e-4, units="Ha"), + conv_tol: Union[ConvergenceParams, ConvergenceTolStr] = "normal", **kwargs, ) -> None: """ @@ -574,12 +756,9 @@ def optimise( maxiter (int): Maximum number of iteration to perform - gtol (float | autode.values.GradientNorm): Tolerance on RMS(|∇E|) - i.e. the root mean square of the gradient components. If - a float then assume units of Ha Å^-1 - - etol (float | autode.values.PotentialEnergy): Tolerance on |∆E| - between two consecutive iterations of the optimiser + conv_tol (ConvergenceParams|ConvergenceTolStr): Convergence parameters + for the absolute energy change, RMS and max gradient, + and RMS and max step sizes. coords (OptCoordinates | None): Coordinates to optimise in @@ -594,7 +773,7 @@ def optimise( """ optimiser = cls( - maxiter=maxiter, gtol=gtol, etol=etol, coords=coords, **kwargs + maxiter=maxiter, conv_tol=conv_tol, coords=coords, **kwargs ) optimiser.run(species, method, n_cores=n_cores) @@ -607,8 +786,8 @@ def _space_has_degrees_of_freedom(self) -> bool: @property def converged(self) -> bool: """ - Is this optimisation converged? Must be converged based on both energy - and gradient tolerance. + Is this optimisation converged? Must be converged based on energy, gradient + and step size criteria. ----------------------------------------------------------------------- Returns: @@ -617,15 +796,13 @@ def converged(self) -> bool: if self._species is not None and self._species.n_atoms == 1: return True # Optimisation 0 DOF is always converged - if self._abs_delta_e < self.etol / 10: - logger.warning( - f"Energy change is overachieved. " - f'{self.etol.to("kcal") / 10:.3E} kcal mol-1. ' - f"Signaling convergence" - ) - return True + assert self._coords is not None, "Must have coordinates!" + curr_params = self._history.conv_params() - return self._abs_delta_e < self.etol and self._g_norm < self.gtol + constrs_met = ( + self._coords.n_constraints == self._coords.n_satisfied_constraints + ) + return constrs_met and self.conv_tol.meets_criteria(curr_params) def clean_up(self) -> None: """ @@ -643,69 +820,29 @@ def from_file(cls, filename: str) -> "NDOptimiser": optimiser._history = hist return optimiser - @property - def _abs_delta_e(self) -> PotentialEnergy: - """ - Calculate the absolute energy difference - - .. math:: - |∆E| = |E_i - E_{i-1}| for a step i - - ----------------------------------------------------------------------- - Returns: - (autode.values.PotentialEnergy): Energy difference. Infinity if - an energy difference cannot be calculated - """ - assert ( - self._coords is not None - ), "Must have coordinates to calculate ∆E" - - if len(self._history) < 2: - logger.info("First iteration - returning |∆E| = ∞") - return PotentialEnergy(np.inf) - - e1, e2 = self._coords.e, self._history.penultimate.e - - if e1 is None or e2 is None: - logger.error( - "Cannot determine absolute energy difference. Using |∆E| = ∞" - ) - return PotentialEnergy(np.inf) - - return PotentialEnergy(abs(e1 - e2)) # type: ignore - - @property - def _g_norm(self) -> GradientRMS: - """ - Calculate RMS(∇E) based on the current Cartesian gradient. - - ----------------------------------------------------------------------- - Returns: - (autode.values.GradientRMS): Gradient norm. Infinity if the - gradient is not defined - """ - if self._coords is None: - logger.warning("Had no coordinates - cannot determine ||∇E||") - return GradientRMS(np.inf) - - if self._coords.g is None: - return GradientRMS(np.inf) - - return GradientRMS(np.sqrt(np.mean(np.square(self._coords.g)))) - def _log_convergence(self) -> None: - """Log the convergence of the energy""" - assert ( - self._coords is not None - ), "Must have coordinates to log convergence" - log_string = f"{self.iteration}\t" - - if len(self._history) > 1: - assert self._coords.e and self._history.penultimate.e, "Need ∆E" - de: PotentialEnergy = self._coords.e - self._history.penultimate.e - log_string += f'{de.to("kcal mol-1"):.3f}\t{self._g_norm:.5f}' - - logger.info(log_string) + """Log the convergence of the all convergence parameters""" + assert self._coords is not None, "Must have coordinates!" + + curr_params = self._history.conv_params() + assert curr_params.abs_d_e is not None + + conv_msgs = [ + "(YES)" if param_converged else "(NO)" + for param_converged in self.conv_tol.are_satisfied(curr_params) + ] + log_string1 = ( + f"iter# {self.iteration} |dE|=" + f"{curr_params.abs_d_e.to('kcalmol'):.5f} kcal/mol {conv_msgs[0]}" + f" RMS(g)={curr_params.rms_g:.5f} Ha/Å {conv_msgs[1]} " + ) + log_string2 = ( + f"max(g)={curr_params.max_g:.5f} Ha/Å {conv_msgs[2]} " + f"RMS(dx)={curr_params.rms_s:.5f} Å {conv_msgs[3]} " + f"max(dx)={curr_params.max_s:.5f} Å {conv_msgs[4]}" + ) + logger.info(log_string1) + logger.info(log_string2) return None def plot_optimisation( @@ -1070,6 +1207,43 @@ def __reversed__(self): for i in reversed(range(len(self))): yield self[i] + def conv_params(self, idx: int = -1) -> ConvergenceParams: + """ + Calculate the convergence parameters for the coordinates at + specified index (default -1 i.e. the last set of coordinates) + + Args: + idx (int): Index of the set of coordinates for which to + calculate the parameter + + Returns: + (ConvergenceParams): + """ + # NOTE: Internal coordinates have inconsistent units, so we + # calculate step sizes and gradients in Cartesian coordinates + coords_l = self[idx] + assert coords_l is not None + g_x = coords_l.cart_proj_g + if g_x is not None: + rms_g = np.sqrt(np.mean(np.square(g_x))) + max_g = np.max(np.abs(g_x)) + else: + rms_g = max_g = np.inf + + if len(self) > 1: + coords_k = self[idx - 1] + assert coords_k is not None + assert coords_l.e is not None and coords_k.e is not None + abs_d_e = PotentialEnergy(abs(coords_l.e - coords_k.e)) + delta_x = coords_l.to("cart") - coords_k.to("cart") + rms_s = np.sqrt(np.mean(np.square(delta_x))) + max_s = np.max(np.abs(delta_x)) + else: + abs_d_e = rms_s = max_s = np.inf + return ConvergenceParams( + abs_d_e=abs_d_e, rms_g=rms_g, max_g=max_g, rms_s=rms_s, max_s=max_s + ) + class ExternalOptimiser(BaseOptimiser, ABC): @property diff --git a/autode/opt/optimisers/crfo.py b/autode/opt/optimisers/crfo.py index de9df679d..0d30a7685 100644 --- a/autode/opt/optimisers/crfo.py +++ b/autode/opt/optimisers/crfo.py @@ -235,16 +235,6 @@ def _update_trust_radius(self): f" Current trust radius = {self.alpha:.3f}" ) - @property - def _g_norm(self) -> GradientRMS: - """Calculate the norm of the gradient in the active subspace""" - - if self._coords is None or self._coords.g is None: - return super()._g_norm - - gradient = self._coords.g[self._coords.active_indexes] - return GradientRMS(np.sqrt(np.mean(np.square(gradient)))) - def _initialise_run(self) -> None: """Initialise the optimisation""" logger.info("Initialising optimisation") diff --git a/autode/opt/optimisers/prfo.py b/autode/opt/optimisers/prfo.py index 3fb78a886..6a5a74194 100644 --- a/autode/opt/optimisers/prfo.py +++ b/autode/opt/optimisers/prfo.py @@ -24,6 +24,7 @@ def __init__( all others to locate a transition state (TS) ----------------------------------------------------------------------- + Arguments: init_alpha: Maximum step size (default Å if unit not given) diff --git a/autode/opt/optimisers/steepest_descent.py b/autode/opt/optimisers/steepest_descent.py index 8edd3c651..e67980ec6 100644 --- a/autode/opt/optimisers/steepest_descent.py +++ b/autode/opt/optimisers/steepest_descent.py @@ -4,7 +4,7 @@ class SteepestDescent(NDOptimiser, ABC): - def __init__(self, maxiter, gtol, etol, step_size=0.2, **kwargs): + def __init__(self, maxiter, conv_tol, step_size=0.2, **kwargs): """ Steepest decent optimiser @@ -16,7 +16,7 @@ def __init__(self, maxiter, gtol, etol, step_size=0.2, **kwargs): :py:meth:`NDOptimiser ` """ - super().__init__(maxiter=maxiter, gtol=gtol, etol=etol, **kwargs) + super().__init__(maxiter=maxiter, conv_tol=conv_tol, **kwargs) self.alpha = step_size diff --git a/doc/changelog.rst b/doc/changelog.rst index b66d774e0..fffecaf7b 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -16,6 +16,9 @@ Bug Fixes ********* - DIC to Cartesian transform will now always use :code:`PIC.close_to()` to ensure steps along dihedral have the smallest change, even after back-transform is complete +Usability improvements/Changes +****************************** +- Optimiser convergence criteria have been improved to consider energy change, RMS and max. gradient and step sizes. 1.4.3 ------ diff --git a/tests/test_bracket/test_dhs.py b/tests/test_bracket/test_dhs.py index 1c2394049..21091e8a5 100644 --- a/tests/test_bracket/test_dhs.py +++ b/tests/test_bracket/test_dhs.py @@ -41,8 +41,7 @@ def test_distance_constrained_optimiser(): pivot_point=rct_coords, maxiter=1, # just one step init_trust=0.2, - gtol=1e-3, - etol=1e-4, + conv_tol="loose", ) opt.run(product, method=XTB()) assert not opt.converged @@ -58,10 +57,7 @@ def test_distance_constrained_optimiser(): assert step_size <= 0.2 + fp_err * 0.2 # for floating point error opt = DistanceConstrainedOptimiser( - pivot_point=rct_coords, - maxiter=50, - gtol=1e-3, - etol=1e-4, + pivot_point=rct_coords, maxiter=50, conv_tol="loose" ) opt.run(product, method=XTB()) assert opt.converged @@ -77,13 +73,9 @@ def test_dist_constr_optimiser_sd_fallback(): coords1.update_h_from_cart_h(np.loadtxt("conopt_last_h.txt")) pivot = CartesianCoordinates(np.loadtxt("conopt_pivot.txt")) - # lagrangian step may fail at certain point + # lagrangian step may fail at certain points opt = DistanceConstrainedOptimiser( - pivot_point=pivot, - maxiter=2, - init_trust=0.2, - gtol=1e-3, - etol=1e-4, + pivot_point=pivot, maxiter=2, init_trust=0.2, conv_tol="loose" ) opt._target_dist = 2.6869833732268 opt._history.open("test_trj") @@ -105,10 +97,7 @@ def test_dist_constr_optimiser_energy_rising(): coords2.e = PotentialEnergy(0.02, "Ha") assert (coords2.e - coords1.e) > PotentialEnergy(5, "kcalmol") opt = DistanceConstrainedOptimiser( - pivot_point=coords1, - maxiter=2, - gtol=1e-3, - etol=1e-4, + pivot_point=coords1, maxiter=2, conv_tol="loose" ) opt._history.open("test_trj") opt._history.add(coords1) @@ -257,9 +246,8 @@ def test_dhs_diels_alder(): initial_species=reactant, final_species=product, small_step=0.2, - maxiter=200, + maxiter=100, dist_tol=set_dist_tol, - gtol=1.0e-3, ) dhs.calculate(method=XTB(), n_cores=Config.n_cores) @@ -318,11 +306,11 @@ def test_dhs_jumping_over_barrier(caplog): dhs = DHS( initial_species=reactant, final_species=product, - maxiter=200, + maxiter=50, large_step=0.5, small_step=0.5, dist_tol=0.3, # smaller dist_tol also to make one side jump - gtol=5.0e-4, + conv_tol="loose", barrier_check=True, cineb_at_conv=True, ) @@ -346,11 +334,11 @@ def test_dhs_stops_if_microiter_exceeded(caplog): dhs = DHS( initial_species=reactant, final_species=product, - maxiter=10, + maxiter=5, large_step=0.2, small_step=0.1, dist_tol=1.0, - gtol=5.0e-4, + conv_tol="loose", barrier_check=True, ) with caplog.at_level("WARNING"): diff --git a/tests/test_opt/test_coordiantes.py b/tests/test_opt/test_coordiantes.py index a761ea9ae..9e4ee3ae9 100644 --- a/tests/test_opt/test_coordiantes.py +++ b/tests/test_opt/test_coordiantes.py @@ -168,6 +168,25 @@ def test_hessian_inv(): assert np.allclose(coords.h_inv, expected_h_inv, atol=1e-10) +def test_h_update(): + coords1 = CartesianCoordinates(np.array([1.0, 2.0])) + coords1.g = np.array([0.1, 0.2]) + coords1.h = 2.0 * np.eye(2) + + coords2 = CartesianCoordinates(np.array([1.1, 2.1])) + coords2.g = np.array([0.01, 0.02]) + assert coords2.h is None + + # must define a valid update type + with pytest.raises(RuntimeError): + coords2.update_h_from_old_h(coords1, hessian_update_types=[]) + + from autode.opt.optimisers.hessian_update import BFGSSR1Update + + coords2.update_h_from_old_h(coords1, hessian_update_types=[BFGSSR1Update]) + assert coords2.h is not None + + def test_cartesian_update_clear(): arr = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0]]) diff --git a/tests/test_opt/test_crfo.py b/tests/test_opt/test_crfo.py index 2d32f7f39..d7a26eec6 100644 --- a/tests/test_opt/test_crfo.py +++ b/tests/test_opt/test_crfo.py @@ -19,7 +19,7 @@ def crfo_coords(molecule): - optimiser = CRFOptimiser(maxiter=1, gtol=1e-5, etol=1e-5) + optimiser = CRFOptimiser(maxiter=1, conv_tol="normal") optimiser._species = molecule optimiser._build_internal_coordinates() @@ -49,7 +49,7 @@ def test_coordinate_setup(): dist_consts = mol.constraints.distance assert (0, 1) in dist_consts and (1, 0) in dist_consts - opt = CRFOptimiser(maxiter=1, gtol=1e-5, etol=1e-5) + opt = CRFOptimiser(maxiter=1, conv_tol="normal") with pytest.raises(RuntimeError): # Cannot set coordinates without a species @@ -111,7 +111,7 @@ def test_simple_hessian_update(): def test_primitive_projection_discard(): - optimiser = CRFOptimiser(etol=1, gtol=1, maxiter=1) + optimiser = CRFOptimiser(maxiter=1, conv_tol="loose") optimiser._species = water_molecule() # Current distance that will be constrained @@ -132,15 +132,10 @@ def r(_x): assert np.isclose(r(s.to("cartesian")), r_initial, atol=1e-10) -def test_init_g_norm_is_none(): - optimiser = CRFOptimiser(etol=1, gtol=1, maxiter=1) - assert optimiser._g_norm > 0 - - def test_sanitised_zero_length_step(): """Should be able to update with a null step""" - optimiser = CRFOptimiser(etol=1, gtol=1, maxiter=1) + optimiser = CRFOptimiser(conv_tol="loose", maxiter=1) optimiser._coords = CartesianCoordinates(np.array([])) optimiser._take_step_within_trust_radius(np.array([])) @@ -163,7 +158,7 @@ def test_xtb_opt_with_distance_constraint(): assert np.isclose(water.distance(0, 1), 0.99, atol=0.01) - CRFOptimiser.optimise(species=water, method=XTB(), etol=1e-6) + CRFOptimiser.optimise(species=water, method=XTB(), conv_tol="loose") # Optimisation should generate an O-H distance *very* close to 1.1 Å assert np.isclose(water.distance(0, 1).to("Å"), 1.1, atol=1e-4) @@ -259,7 +254,7 @@ def test_xtb_opt_with_two_distance_constraint(): (0, 2): val.Distance(1.0, units="Å"), } - opt = CRFOptimiser(maxiter=1, gtol=1e-5, etol=1e-5, init_alpha=0.1) + opt = CRFOptimiser(maxiter=1, conv_tol="loose", init_alpha=0.1) opt._species = water opt._method = XTB() opt._initialise_run() @@ -279,7 +274,7 @@ def test_xtb_opt_with_two_distance_constraint(): water.distance(i, j) - 1.0 ) - opt = CRFOptimiser(maxiter=10, gtol=1e-5, etol=1e-5, init_alpha=0.1) + opt = CRFOptimiser(maxiter=10, conv_tol="loose", init_alpha=0.1) opt.run(species=water, method=XTB()) assert opt.converged @@ -351,7 +346,7 @@ def test_optimise_linear_molecule(): # the two H-C-C angles are almost linear assert val.Angle(170, "deg") < mol.angle(0, 1, 3) < val.Angle(176, "deg") assert val.Angle(170, "deg") < mol.angle(2, 0, 1) < val.Angle(176, "deg") - opt = CRFOptimiser(maxiter=10, gtol=1e-4, etol=1e-5) + opt = CRFOptimiser(maxiter=10, conv_tol="loose") opt.run(mol, XTB()) assert opt.converged assert mol.angle(0, 1, 3) > val.Angle(179, "deg") @@ -365,7 +360,7 @@ def test_optimise_linear_bend_with_ref(): # the Fe-C-O angle are manually deviated assert val.Angle(170, "deg") < mol.angle(2, 3, 4) < val.Angle(176, "deg") # large molecule so allow few iters, no need to converge fully - opt = CRFOptimiser(maxiter=15, gtol=1e-5, etol=1e-6) + opt = CRFOptimiser(maxiter=10, conv_tol="loose") opt.run(mol, XTB()) assert mol.angle(2, 3, 4) > val.Angle(178, "deg") @@ -375,7 +370,7 @@ def test_optimise_linear_bend_with_ref(): def test_optimise_chain_dihedrals(): mol = cumulene_mol() assert abs(mol.dihedral(6, 3, 4, 8)) < val.Angle(40, "deg") - opt = CRFOptimiser(maxiter=20, gtol=1e-4, etol=1e-4) + opt = CRFOptimiser(maxiter=20, conv_tol="loose") opt.run(mol, XTB()) # 5-C chain, should be close to 90 degrees assert abs(mol.dihedral(6, 3, 4, 8)) > val.Angle(85, "deg") @@ -413,7 +408,7 @@ def test_composite_bond_constraint(): # current sum of distances ~ 4.7 A, difference ~ 0.07 assert np.isclose(mol.distance(1, 11), 2.385, rtol=1e-4) assert np.isclose(mol.distance(2, 7), 2.315, rtol=1e-4) - opt = CRFOptimiser(maxiter=10, gtol=1e-3, etol=1e-4, extra_prims=[constr]) + opt = CRFOptimiser(maxiter=10, conv_tol="loose", extra_prims=[constr]) opt.run(mol, method=XTB()) # sum of distances should be ~4.6 A assert np.isclose(mol.distance(1, 11) + mol.distance(2, 7), 4.6, rtol=1e-4) @@ -425,12 +420,10 @@ def test_trust_radius_limits(): import autode.opt.optimisers.crfo max_lim = autode.opt.optimisers.crfo.MAX_TRUST - opt = CRFOptimiser( - maxiter=10, gtol=1e-3, etol=1e-4, init_trust=max_lim + 0.1 - ) + opt = CRFOptimiser(maxiter=10, conv_tol="loose", init_trust=max_lim + 0.1) assert np.isclose(opt.alpha, max_lim) min_lim = autode.opt.optimisers.crfo.MIN_TRUST opt = CRFOptimiser( - maxiter=10, gtol=1e-3, etol=1e-4, init_trust=min_lim - 0.001 + maxiter=10, conv_tol="loose", init_trust=min_lim - 0.001 ) assert np.isclose(opt.alpha, min_lim) diff --git a/tests/test_opt/test_opt.py b/tests/test_opt/test_opt.py index 5f53833b6..3cbea6da7 100644 --- a/tests/test_opt/test_opt.py +++ b/tests/test_opt/test_opt.py @@ -16,7 +16,11 @@ from .setup import Method from autode.utils import NumericStringDict from autode.opt.coordinates import CartesianCoordinates -from autode.opt.optimisers.base import OptimiserHistory, NullOptimiser +from autode.opt.optimisers.base import ( + OptimiserHistory, + NullOptimiser, + ConvergenceParams, +) from autode.opt.optimisers.steepest_descent import ( CartesianSDOptimiser, DIC_SD_Optimiser, @@ -25,7 +29,7 @@ def sample_cartesian_optimiser(): return CartesianSDOptimiser( - maxiter=1, gtol=GradientRMS(0.1), etol=PotentialEnergy(0.1) + maxiter=1, conv_tol=ConvergenceParams(abs_d_e=0.1, rms_g=0.1) ) @@ -39,27 +43,85 @@ def test_optimiser_construct(): sample_cartesian_optimiser().run(species=methane_mol(), method=None) # Optimiser needs valid arguments - with pytest.raises(ValueError): + with pytest.raises( + ValueError, match="must be able to run at least one step" + ): + _ = CartesianSDOptimiser(maxiter=0, conv_tol="normal") + + with pytest.raises( + ValueError, match="Value of abs_d_e should be positive" + ): _ = CartesianSDOptimiser( - maxiter=0, gtol=GradientRMS(0.1), etol=PotentialEnergy(0.1) + maxiter=1, conv_tol=ConvergenceParams(abs_d_e=-0.1, rms_g=0.1) ) - with pytest.raises(ValueError): + with pytest.raises(ValueError, match="Value of rms_g should be positive"): _ = CartesianSDOptimiser( - maxiter=1, gtol=GradientRMS(-0.1), etol=PotentialEnergy(0.1) + maxiter=1, conv_tol=ConvergenceParams(abs_d_e=0.1, rms_g=-0.1) ) - with pytest.raises(ValueError): - _ = CartesianSDOptimiser( - maxiter=1, gtol=GradientRMS(-0.1), etol=PotentialEnergy(0.1) - ) + with pytest.raises(ValueError, match="Unknown preset convergence"): + _ = CartesianSDOptimiser(maxiter=1, conv_tol="unknown") - with pytest.raises(ValueError): + # should be able to set convergence through setter + opt = CartesianSDOptimiser(maxiter=1, conv_tol="loose") + opt.conv_tol = "normal" + with pytest.raises(ValueError, match="Unknown preset convergence"): + opt.conv_tol = "unknown" + + # at least RMS g convergence criteria has to be defined + with pytest.raises( + ValueError, match="RMS gradient criteria has to be defined" + ): _ = CartesianSDOptimiser( - maxiter=1, gtol=GradientRMS(0.1), etol=PotentialEnergy(-0.1) + maxiter=1, conv_tol=ConvergenceParams(abs_d_e=0.1) ) +def test_optimiser_convergence(caplog): + opt = CartesianSDOptimiser( + maxiter=10, + conv_tol=ConvergenceParams( + abs_d_e=0.01, rms_g=0.01, max_g=0.01, rms_s=0.01, max_s=0.01 + ), + ) + coords1 = CartesianCoordinates(np.arange(6, dtype=float)) + opt._species = Molecule(smiles="N#N") + opt._coords = coords1 + opt._coords.g = np.random.random(6) + opt._coords.e = PotentialEnergy(0.1, "Ha") + + # grad + energy < 1/2 + step is < * 3 + coords2 = coords1 + 0.02 + coords2.g = np.array([0.004] * 6) + coords2.e = PotentialEnergy(0.1 - 0.004, "Ha") + opt._coords = coords2 + with caplog.at_level("WARNING"): + assert opt.converged + assert "Overachieved gradient and energy" in caplog.text + assert "reasonable convergence on step size" in caplog.text + caplog.clear() + # grad ~ 1/10, dE < *1.5, step < * 2 + coords2 = coords1 + 0.014 + coords2.g = np.array([0.0009] * 6) + coords2.e = PotentialEnergy(0.1 - 0.015) + opt._history._memory[-1] = coords2 + with caplog.at_level("WARNING"): + assert opt.converged + assert "Gradient is one order of magnitude below" in caplog.text + assert "other parameter(s) are almost converged" + caplog.clear() + # step achieved, grad ~ 0.7, dE < * 3 + coords2 = coords1 + 0.009 + coords2.g = np.array([0.006] * 6) + coords2.e = PotentialEnergy(0.1 - 0.025) + opt._history._memory[-1] = coords2 + with caplog.at_level("WARNING"): + assert opt.converged + assert "Everything except energy has been converged" in caplog.text + assert "Reasonable convergence on energy" in caplog.text + + def test_initialise_species_and_method(): optimiser = sample_cartesian_optimiser() @@ -79,63 +141,6 @@ def test_coords_set(): optimiser._coords = "a" -def test_abs_diff_e(): - # Define a intermediate optimiser state with two sets of coordinates - optimiser = sample_cartesian_optimiser() - optimiser._history.add(CartesianCoordinates([0.0, 1.0])) - optimiser._history.add(CartesianCoordinates([0.0, 1.1])) - - # 2nd iteration for a history of two, indexed from 0 - assert optimiser.iteration == 1 - - # without defined energies |E_0 - E_1| cannot be calculated - assert optimiser._abs_delta_e - - # but can be if both structures have a potential energy - optimiser._history.final.e = PotentialEnergy(-1.0) - optimiser._history.penultimate.e = PotentialEnergy(-1.1) - - diff_e = optimiser._abs_delta_e - assert isinstance(diff_e, PotentialEnergy) - - assert np.isclose(diff_e, 0.1, atol=1e-6) - - -def test_g_norm(): - optimiser = sample_cartesian_optimiser() - - # With no coordinates the norm of the gradient is infinity - assert optimiser._coords is None - assert not np.isfinite(optimiser._g_norm) - - # Likewise if the gradient is unset - optimiser._coords = CartesianCoordinates([1.0, 0.0, 0.0]) - assert optimiser._coords.g is None - assert not np.isfinite(optimiser._g_norm) - - -def test_optimiser_h_update(): - optimiser = sample_cartesian_optimiser() - - # Remove any possible updater type - optimiser._hessian_update_types = [] - - c1 = CartesianCoordinates([1.0, 0.0, 0.0]) - c1.h = np.eye(3) - - optimiser._history.add(c1) - - c2 = CartesianCoordinates([1.1, 0.0, 0.0]) - c2.h = np.eye(3) - - optimiser._history.add(c2) - - # and try and update the (inverse) hessian, which is impossible without - # an updater - with pytest.raises(Exception): - _ = optimiser._updated_h_inv() - - def test_history(): optimiser = sample_cartesian_optimiser() assert optimiser.iteration < 1 @@ -162,14 +167,14 @@ def test_xtb_h2_cart_opt(): @work_in_tmp_dir() @requires_working_xtb_install -def test_xtb_h2_cart_opt(): +def test_xtb_h2_cart_opt_2(): optimiser = CartesianSDOptimiser( - maxiter=2, - gtol=GradientRMS(0.01), - etol=PotentialEnergy(1e-3), + maxiter=2, conv_tol=ConvergenceParams(abs_d_e=1e-3, rms_g=0.01) ) optimiser._species = h2() optimiser._coords = CartesianCoordinates(optimiser._species.coordinates) + optimiser._species.single_point(XTB()) + optimiser._coords.e = optimiser._species.energy assert not optimiser.converged @@ -190,8 +195,7 @@ def test_xtb_h2_dic_opt(): optimiser = DIC_SD_Optimiser( step_size=2.5, maxiter=10, - gtol=GradientRMS(0.01), - etol=PotentialEnergy(0.0001), + conv_tol=ConvergenceParams(abs_d_e=1e-4, rms_g=0.01), ) mol = h2() @@ -223,8 +227,7 @@ def func(coords, m=None): maxiter=1, callback=func, callback_kwargs={"m": mol}, - gtol=GradientRMS(0.1), - etol=PotentialEnergy(0.1), + conv_tol=ConvergenceParams(rms_g=0.1, abs_d_e=0.1), ) optimiser.run(species=mol, method=Method()) @@ -234,7 +237,7 @@ def func(coords, m=None): def test_last_energy_change_with_no_steps(): mol = h2() optimiser = HarmonicPotentialOptimiser( - maxiter=2, gtol=GradientRMS(999), etol=PotentialEnergy(999) + maxiter=2, conv_tol=ConvergenceParams(abs_d_e=999, rms_g=999) ) optimiser.run(mol, method=Method()) @@ -270,7 +273,7 @@ def converged(self) -> bool: def test_last_energy_change_less_than_two_steps(): optimiser = ConvergedHarmonicPotentialOptimiser( - maxiter=2, gtol=GradientRMS(999), etol=PotentialEnergy(999) + maxiter=2, conv_tol=ConvergenceParams(abs_d_e=999, rms_g=999) ) coords = CartesianCoordinates(np.zeros(1)) @@ -296,11 +299,7 @@ def test_hessian_is_not_recalculated_if_present(): mol = h2() xtb = XTB() - optimiser = CartesianSDOptimiser( - maxiter=1, - gtol=GradientRMS(0.01), - etol=PotentialEnergy(1e-3), - ) + optimiser = CartesianSDOptimiser(maxiter=1, conv_tol="loose") optimiser.run(species=mol, method=xtb, n_cores=1) mol.calc_hessian(method=xtb) @@ -314,11 +313,7 @@ def test_hessian_is_not_recalculated_if_present(): @work_in_tmp_dir() @requires_working_xtb_install def test_multiple_optimiser_saves_overrides_not_append(): - optimiser = CartesianSDOptimiser( - maxiter=2, - gtol=GradientRMS(0.01), - etol=PotentialEnergy(1e-3), - ) + optimiser = CartesianSDOptimiser(maxiter=2, conv_tol="loose") optimiser.run(method=XTB(), species=h2(), name="tmp.zip") assert os.path.isfile("tmp.zip") @@ -327,11 +322,7 @@ def test_multiple_optimiser_saves_overrides_not_append(): old_n_coords = sum([1 for name in names if name.startswith("coords_")]) - optimiser = CartesianSDOptimiser( - maxiter=2, - gtol=GradientRMS(0.01), - etol=PotentialEnergy(1e-3), - ) + optimiser = CartesianSDOptimiser(maxiter=2, conv_tol="loose") optimiser.run(method=XTB(), species=h2(), name="tmp.zip") # the file "tmp.zip" should be overwritten by new optimiser with zipfile.ZipFile("tmp.zip") as file: @@ -344,7 +335,7 @@ def test_multiple_optimiser_saves_overrides_not_append(): @work_in_tmp_dir() def test_optimiser_plotting_sanity_checks(caplog): mol = Molecule(smiles="N#N") - opt = CartesianSDOptimiser(maxiter=10, gtol=1e-3, etol=1e-3) + opt = CartesianSDOptimiser(maxiter=10, conv_tol="loose") coords1 = CartesianCoordinates(mol.coordinates) coords1.e = PotentialEnergy(0.1, "Ha") coords1.update_g_from_cart_g( @@ -378,7 +369,7 @@ def test_optimiser_plotting_sanity_checks(caplog): def test_optimiser_print_geometries(caplog): mol = Molecule(smiles="C=C", name="mymolecule") coords1 = CartesianCoordinates(mol.coordinates) - opt = CartesianSDOptimiser(maxiter=20, gtol=1e-3, etol=1e-4) + opt = CartesianSDOptimiser(maxiter=20, conv_tol="loose") opt._coords = coords1 # cannot print geom without species with pytest.raises(AssertionError): diff --git a/tests/test_opt/test_prfo.py b/tests/test_opt/test_prfo.py index 09cbc2fbc..7a915a454 100644 --- a/tests/test_opt/test_prfo.py +++ b/tests/test_opt/test_prfo.py @@ -90,7 +90,7 @@ def test_mode_following(): Atom("H", -2.10961, 4.17548, 1.25945), ], ) - opt = PRFOptimiser(maxiter=10, etol=1e-4, gtol=1e-3, imag_mode_idx=0) + opt = PRFOptimiser(maxiter=10, conv_tol="normal", imag_mode_idx=0) opt._species = mol opt._method = xtb opt._n_cores = Config.n_cores diff --git a/tests/test_opt/test_qa.py b/tests/test_opt/test_qa.py index 2afe12ebe..fa6770f2c 100644 --- a/tests/test_opt/test_qa.py +++ b/tests/test_opt/test_qa.py @@ -16,7 +16,7 @@ @work_in_zipped_dir(datazip) def test_trm_step(): mol = Molecule("opt-test.xyz") - opt = QAOptimiser(maxiter=10, gtol=0.001, etol=0.001, init_trust=0.1) + opt = QAOptimiser(maxiter=10, conv_tol="loose", init_trust=0.1) opt._species = mol opt._build_internal_coordinates() assert isinstance(opt._coords, DICWithConstraints) @@ -42,7 +42,7 @@ def test_trust_update(): Atom("H", 0.8261, -0.1812, 0.0000), ] water = Molecule(atoms=water_atoms) - opt = QAOptimiser(maxiter=10, gtol=1e-3, etol=1e-4, init_trust=init_trust) + opt = QAOptimiser(maxiter=10, conv_tol="loose", init_trust=init_trust) opt._species = water.copy() opt._method = XTB() diff --git a/tests/test_opt/test_rfo.py b/tests/test_opt/test_rfo.py index d7907a305..ced3d1300 100644 --- a/tests/test_opt/test_rfo.py +++ b/tests/test_opt/test_rfo.py @@ -2,6 +2,7 @@ from autode.species.molecule import Molecule from autode.wrappers.XTB import XTB from autode.utils import work_in_tmp_dir +from autode.opt.optimisers import ConvergenceParams from autode.opt.optimisers.rfo import RFOptimiser from autode.opt.coordinates import CartesianCoordinates from ..testutils import requires_working_xtb_install @@ -20,11 +21,10 @@ def __init__( init_x, init_y, maxiter=30, - etol=1e-4, - gtol=1e-3, + conv_tol=ConvergenceParams(abs_d_e=1e-4, rms_g=1e-3), **kwargs, ): - super().__init__(maxiter=maxiter, etol=etol, gtol=gtol, **kwargs) + super().__init__(maxiter=maxiter, conv_tol=conv_tol, **kwargs) init_arr = np.array([init_x, init_y]) self._coords = CartesianCoordinates(init_arr) diff --git a/tests/test_wrappers/data/nwchem.zip b/tests/test_wrappers/data/nwchem.zip index a10a54a11886c687971f0a1dd6af0d8763305291..bcf0041607bdcc72a3896cd7dabbe5bb1be45a8d 100644 GIT binary patch literal 217249 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

N$ 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®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℘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�WfX*InnwJHuwQNX(tt`116v!|6y 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 B0)YSk

cmaF>ltL^Mf<3jxjzR*%i!3+9pS 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 IIRN1Q04#UzdjJ3c literal 246481 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