This module contains functions and classes related to local transition state searches.
Most of these algorithms will not need to be directly called by the user. However
it is important to know how these work because they form some of the core routines of
*landscape exploration*.

FindTransitionState(coords, pot[, tol, ...]) |
This class implements the hybrid eigenvector following routine for finding the nearest transition state |

findTransitionState(*args, **kwargs) |
simply a wrapper for initializing and running FindTransitionState |

findLowestEigenVector(coords, pot[, ...]) |
Compute the lowest eigenvector of the Hessian using Rayleigh-Ritz minimization |

The following functions implement the Nudged Elastic Band and Doubly-Nudged Elastic Band method. The user should interact via the driver class:

NEBDriver(potential, coords1, coords2[, k, ...]) |
driver class for NEB |

In the backend, the work is done by the following functions.

NEB(path, potential[, distance, k, ...]) |
Doubly nudged elastic band implementation |

InterpolatedPath(initial, final, nimages[, ...]) |
Wraps interpolation that it can be accessed like a list / array without storing the nodes |

InterpolatedPathDensity(initial, final, distance) |
Return a InterpolatedPath object with the appropriate |

These functions make a vector orthogonal to known zero eigenvectors (eigenvectors with a zero eigenvalue). Typically these correspond to known symmetries of the system like translational invariance, rotational invariance. Frozen degrees of freedom also contribute zero eigenvecotrs

orthogopt(v, coords[, norm, translation_only]) |
make a vector orthogonal to eigenvectors of the Hessian corresponding to overall |

orthogopt_translation_only(v, coords[, ...]) |
a convience wrapper for orthogopt with the translation_only flag set to True |

zeroEV_translation(coords) |
return the set of zero eigenvalue vectors corresponding to uniform translation |

zeroEV_rotation(coords) |
return the set of zero eigenvalue vectors corresponding to global rotation |

zeroEV_cluster(coords) |
return the set of zero eigenvalue vectors corresponding to uniform translation and rotation |

gramm_schmidt(v) |
make a set of vectors orthogonal to each other. |

When a transition state is found we step off either side of the transition state to find the minima which the transition state connects. This routine controls that process

minima_from_ts(pot, xt[, n, quench]) |
step off either side of a transition state and quench to find the minima |